¿Los ingresos de HubSpot no cuadran con facturación? Haced la auditoría de 30 minutos, encontrad los cinco fallos del modelo de datos y arregladlos en orden.
En resumenCuando los ingresos de HubSpot no cuadran con facturación, el fallo suele estar en el modelo de datos, no en el dashboard. Los ingresos viven en campos de texto, los sistemas cruzan por email en vez de por una jerarquía de identidad escrita, el valor del cliente vive en los deals y no en las empresas, el histórico nunca se congela y nadie es dueño de la definición. Primero las definiciones, los snapshots al final.
Cada trimestre se repite la misma reunión. El VP de Ventas abre HubSpot y lee el closed-won. El CFO abre el sistema de facturación y lee los ingresos cobrados. Los dos números no coinciden, alguien dice «es un tema de timing» y la reunión sigue. Nadie arregla nada, porque todos en la sala han decidido en silencio que la diferencia es normal.
No es normal. Parte de esa diferencia es legítima, y os enseñaré cuál. El resto es un modelo de datos que nunca se diseñó para contener ingresos, y ninguna herramienta de dashboards, capa de BI ni complemento de reporting lo va a reparar. Solo dibujarán el número equivocado de forma más bonita.
Si el reporting de ingresos de vuestro HubSpot está mal, el arreglo no está en la capa de reporting. Está antes, en cómo se guardan, se identifican y se congelan los ingresos. Aquí tenéis la auditoría que hago, los cinco fallos que encuentro casi siempre y el orden en que hay que arreglarlos.
Antes de auditar nada, aceptad que en cualquier negocio de suscripción o de contratos existen tres números distintos, y se supone que no coinciden:
Un contrato anual de $120K es un número en el CRM y doce números en contabilidad, y nadie miente. El primer fallo de la mayoría del reporting de ingresos no es técnico. Es que la empresa nunca dejó por escrito cuál de los tres números muestra cada dashboard, ni quién es su dueño.
Así que regla uno: un dueño por número, y la definición va en la descripción del informe. No en una wiki que nadie abre. En el campo de descripción del propio informe, para que la definición se lea antes que el gráfico. Si vuestro CFO y vuestro VP de Ventas no pueden escribir cada uno una definición de «ingresos» en una frase y que las dos frases coincidan, parad. Todavía no estáis ante un problema de reporting. Estáis ante un problema de vocabulario, y ningún cambio de propiedad lo va a arreglar.
Una vez escritas las definiciones, la diferencia que queda es el bug. Eso es lo que encuentra la auditoría.
La podéis hacer en una llamada de discovery o un viernes por la tarde. Cinco comprobaciones, sin más acceso que admin de HubSpot y lectura en facturación.
Si falláis dos o más, el problema es el modelo de datos. Si falláis las cinco, no estáis reportando ingresos en absoluto. Estáis reportando una colección de notas que casualmente contienen números.
Cada comprobación corresponde a un fallo. Aquí están, en el orden en que los arreglo.
Es el más común y el más vergonzoso, porque el gráfico se sigue pintando.
Si una cifra de ingresos está guardada en una propiedad de texto de una línea, HubSpot os deja construir un informe sobre ella. No os deja sumarla. Os da COUNT, porque el texto no tiene aritmética. El dashboard muestra un gráfico de barras, las barras tienen la forma correcta y los totales no significan nada. Alguien acaba notando que el «valor del pipeline» es igual al número de deals.
O peor, nadie lo nota nunca, porque alguien exportó a una hoja de cálculo e hizo la suma a mano, y ahora el número real de ingresos vive en una hoja de cálculo en un portátil.
Si vuestros ingresos están en una propiedad de texto, no tenéis una métrica de ingresos. Tenéis una nota.
El arreglo, por orden:
Trabajo aburrido. También la hora de más valor de toda la auditoría.
Los ingresos no dejan de sincronizarse porque se rompa la integración. Fallan porque dos sistemas se identifican con dos identidades distintas y nadie dejó por escrito cuál gana.
HubSpot conoce una empresa por dominio y nombre. Stripe conoce un cliente por customer ID y un email de facturación. Vuestra base de datos de producto conoce un tenant por tenant ID y un email de registro. Son tres identidades para un mismo cliente, y el email de registro muy a menudo no es el de facturación. El fundador se da de alta con una dirección personal, finanzas paga desde accounts@ y el CRM ve a dos personas sin relación.
Cuando una sincronización intenta cruzar por email, falla en todos esos casos. O crea una empresa duplicada o, peor, asigna los ingresos al registro equivocado.
El arreglo es una jerarquía de identidad por escrito, la misma disciplina que aplicamos en el CleanOps Protocol para la deduplicación. Para un cliente SaaS quedó así: primero el Stripe Customer ID, luego el Tenant ID, luego el dominio normalizado y luego el nombre de la empresa. El nombre va el último y se marca para revisión humana, nunca se fusiona automáticamente. Gana la primera coincidencia de la jerarquía. Una coincidencia solo por nombre nunca escribe ingresos por sí sola.
Escribid la jerarquía. Ponedla en el mismo sitio que las definiciones de las métricas. Después verificadla con una prueba deliberada: cread un cliente cuya respuesta conozcáis y seguidlo a través de todos los sistemas.
Un deal es un evento. Una empresa es el cliente.
Cuando los ingresos se reflejan en el Deal, cada renovación, upsell y expansión crea o edita un registro distinto, y el valor real del cliente queda repartido entre cinco deals y tres propietarios. Ningún registro puede responder «cuánto vale este cliente», que es justo la pregunta que vuestro equipo de CS, vuestro consejo y vuestro modelo de forecast no paran de hacer.
El arreglo es guardar los ingresos a nivel de cliente en la Company: MRR o ARR actual, ingresos totales hasta la fecha y la fecha de la última actualización de la cifra. Los deals mantienen su propio Amount para el proceso de venta. La Company lleva la verdad del cliente.
Una trampa más que va aquí. En un proyecto reciente, el deal amount estaba mapeado al MRR, así que un contrato anual de unos $18K aparecía en el pipeline como unos $1,500. Es un MRR perfectamente válido metido en un campo sobre el que se calculan las comisiones de los reps y que el informe de pipeline suma. Corrompió el valor del pipeline y el seguimiento de comisiones a la vez. El arreglo fue mapear el deal amount al importe de la próxima factura del sistema de facturación, no al MRR, con un tratamiento explícito para varias suscripciones activas, trials sin próxima factura y monedas distintas del USD. Después, revisar a mano cinco deals anuales para demostrarlo.
La lección es general: el nombre de un campo y el valor mapeado en él son dos afirmaciones distintas, y tenéis que auditar las dos.
HubSpot sobrescribe. Es su trabajo. Cuando un registro cambia, el valor antiguo desaparece, y cada informe que leía ese campo ahora lee el valor nuevo.
Lo que significa que el número del trimestre pasado se mueve cada vez que alguien edita un registro. Un rep corrige una errata en marzo, y la cifra del Q4 que el consejo ya vio ahora es distinta en el dashboard en vivo. Si un rep que edita un campo puede cambiar vuestro número del consejo, no es un número del consejo.
El arreglo son snapshots inmutables:
La prueba de un buen snapshot es simple. Cambiad un registro en julio y luego sacad el número de marzo. Si marzo se ha movido, no tenéis un snapshot, tenéis una vista.
Este está debajo de los otros cuatro, y es la razón por la que vuelven después de arreglarlos.
Marketing cuenta el closed-won. Ventas cuenta la firma. Finanzas cuenta la factura. Customer success cuenta la fecha de go-live. Cada equipo tiene razón según su propia definición, cada informe es coherente por dentro y ninguno cuadra con los demás.
No lo podéis resolver con una propiedad. Lo resolvéis con un dueño. Para cada métrica de ingresos de cada dashboard ejecutivo, dejad por escrito tres cosas: la definición, el sistema de origen y la única persona con nombre y apellidos que responde por ella. Poned esas tres líneas en la descripción del informe.
Así, cuando se discute un número, hay una persona a quien preguntar y una definición que comprobar, en lugar de cuatro equipos defendiendo cada uno su gráfico.
Si los arregláis en el orden equivocado, reconstruiréis dos veces. La secuencia que aguanta:
Después añadid la pieza poco glamurosa que lo mantiene funcionando: una comprobación automática semanal que compara una muestra de ingresos de HubSpot con facturación y marca para revisión manual cualquier variación por encima de vuestro umbral. Marcar, nunca forzar una fusión. Una sobrescritura insegura de una cifra de ingresos es peor que una coincidencia perdida, porque la coincidencia perdida se ve y la sobrescritura es silenciosa.
No me voy a inventar una cifra para vuestra empresa, porque depende del tamaño de vuestros deals y de vuestro volumen. Pero la podéis calcular vosotros mismos en una tarde.
Tomad la variación entre el closed-won de HubSpot y los ingresos facturados de los últimos cuatro trimestres. Multiplicadla por las horas que vuestra gente de finanzas y RevOps dedica cada trimestre a cuadrarla a mano. Sumad el error de forecast que sale de un informe de pipeline que suma el campo equivocado. Sumad las disputas de comisiones. Esa es la factura recurrente que ya estáis pagando por el privilegio de no arreglar el modelo.
Y hay un coste más silencioso. Cuando la dirección no se fía del número de ingresos, deja de usar el CRM para tomar decisiones. Pide hojas de cálculo. Las hojas de cálculo se convierten en el sistema real, y vuestro caro CRM pasa a ser un sitio donde los reps registran actividad. Ese es el punto en que RevOps deja de ser una función y se convierte en un help desk.
Fijaos en que nada de esta auditoría iba de una herramienta. Podríais hacerlo todo en HubSpot con propiedades y workflows nativos, y el stack que lo rodea (Stripe, Clay para traer los datos, una base de datos para los snapshots) es intercambiable. Con la arquitectura correcta, la herramienta es un detalle. Con la arquitectura equivocada, ninguna herramienta lo salva.
Un CRM no puede reportar ingresos que nunca se diseñó para contener. Diseñadlo para contener ingresos, dadle a cada número un dueño, congelad el histórico, y la pregunta del dashboard deja de ser una discusión.
Si habéis hecho las cinco comprobaciones y habéis fallado dos o más, no necesitáis un dashboard mejor. Necesitáis corregir el modelo de datos que hay debajo, en el orden de arriba.
Ese es el trabajo de nuestro módulo de Dashboards and Reporting, que se apoya en el módulo de CRM Foundation and Data Architecture. Empezamos con la auditoría de 30 minutos, os entregamos un plan de arreglos priorizado y anclado en dólares, y después lo construimos. Si preferís ver primero dónde estáis, el GTM Maturity and Revenue Leak Assessment os dirá si el reporting de ingresos es vuestra mayor fuga o solo la que hace más ruido.
Una auditoría de 20 minutos, dos plantillas de trabajo y un capítulo de The Architecture Behind Growth.
También recibirás The RevOps Build, una build práctica por número. Te das de baja en un clic.
La guía va de camino. Si no llega en un par de minutos, mira en la pestaña de promociones.