Cómo detectar que tu ingesta de datos se cayó antes de que te lo digan
La falla que no produce ningún error: la fila llega fresca y la columna viene vacía. Por qué la distorsión siempre mejora tus métricas, un caso medido esta semana y los tres chequeos que sí lo agarran.
Una integración que se rompe con un error es un buen día. Alguien ve el error, alguien lo arregla, y la peor consecuencia es un rato sin datos.
El problema es la otra forma de romperse: la que no produce ningún error. El proceso corre, la fila se escribe, el job termina en verde, y un campo de adentro viene vacío. Durante días, el tablero muestra números que ya no son ciertos y nadie tiene motivos para dudar de ellos.
La falla que no produce nada
El monitoreo habitual pregunta ¿hubo un error?. Esa pregunta es necesaria y no alcanza, porque el modo de falla más caro contesta que no.
La pregunta que falta es otra: ¿cuándo fue la última vez que este dato llegó? Son preguntas distintas y necesitan mecanismos distintos. La primera se contesta mirando logs; la segunda sólo se contesta mirando el dato mismo.
Una fila fresca con una columna vieja
Acá está el detalle técnico que decide si tu monitoreo sirve o no. Si el chequeo pregunta «¿llegó la fila de hoy?», la respuesta puede ser sí mientras media tabla está vacía por dentro.
Es lo que pasa cuando un proceso consolida varias fuentes en un único registro diario. Si una de esas fuentes deja de responder, el proceso no se cae: escribe la fila con lo que consiguió y deja el resto en blanco. La fila es de hoy. La columna es de hace dos semanas.
La consecuencia práctica: la frescura se mide por columna, no por fila. Y para eso hace falta distinguir dos cosas que muchos sistemas guardan igual:
- Cero es «medimos y no hubo nada». Es un dato.
- Sin dato es «no medimos». Es la ausencia de un dato.
Si los dos terminan como 0 en la misma columna, ya perdiste la información que necesitabas para detectar el problema.
La distorsion va para el lado que gusta
Esto es lo que convierte el asunto en algo más que una molestia técnica. Cuando desaparece una fuente de costo, las métricas de eficiencia no empeoran: mejoran.
- El gasto total queda subdeclarado.
- El MER, que divide ingresos por gasto, sube.
- El CAC y el costo por lead, que dividen gasto por resultados, bajan.
O sea que el sistema te muestra un mes espectacular justo cuando dejó de ver una parte de lo que gastaste. Nadie cuestiona un buen número, y por eso este error sobrevive más tiempo que cualquier otro. Sobre qué significa cada una de esas métricas escribimos aparte en CAC, CPA, ROAS y MER.
Un caso que medimos esta semana
Lo que sigue sale de consultar nuestro propio sistema el 13 de septiembre de 2026. No decimos de qué cliente ni de qué plataforma se trata —esas cuentas son de cada cliente— pero las cifras son reales y se midieron ese día.
- Una fuente de inversión publicitaria trajo su último dato el 5 de septiembre.
- Las filas diarias siguieron escribiéndose sin interrupción hasta el 12 de septiembre. Siete días de filas perfectamente frescas con esa columna vacía.
- Cortó el mismo día en las dos cuentas que usan esa fuente. Dos cuentas independientes que paran juntas no es una decisión comercial: es una ingesta rota.
- El objeto de estado que escribe la propia ingesta no tiene una clave para esa fuente. Reportaba
oken todo lo que sí conocía. Un monitor no puede avisar de lo que no está en su lista. - Esa fuente representaba el 27,8% de la inversión publicitaria en los 31 días previos al corte.
Traducido a las métricas, calculado y no estimado:
- Gasto subdeclarado en un 27,8%.
- MER inflado un 38,5%.
- CAC y costo por lead 27,8% más baratos de lo real.
Un tablero mostrando una eficiencia 38% mejor que la verdadera, durante una semana, sin un solo error en ningún log.
Los tres chequeos que si lo agarran
| Chequeo | Que pregunta | Que falla agarra |
|---|---|---|
| Frescura por columna | Cuando fue la ultima vez que ESTE campo trajo valor | La fuente que murio mientras el resto sigue vivo |
| Volumen contra su historia | Hoy llego mas o menos de lo habitual | La ingesta que trae la mitad, que es peor que ninguna |
| Coherencia entre campos | Hay gasto sin impresiones, ventas sin leads | El dato que llego pero llego mal |
El primero es el que salva. Por cada campo que alimenta una métrica, guardar la última fecha en que trajo valor y compararla contra la cadencia esperada de esa fuente. Nuestro umbral para fuentes diarias son tres días; para una fuente semanal ese mismo umbral sería puro ruido. Un solo número global para todo produce o ruido o ceguera.
El segundo agarra lo que el primero deja pasar: la ingesta que no murió pero trae la mitad. Eso es peor que la ausencia total, porque el dato parece correcto. Comparar el volumen de hoy contra la banda habitual de esa fuente lo detecta.
El tercero es el que encuentra lo que llegó mal en vez de no llegar: gasto sin impresiones, ventas sin leads, un total que no suma sus partes. Son reglas de coherencia entre campos, y se escriben una vez.
Y la parte que teniamos mal
Vale contarlo porque es la lección real del caso. La comprobación de frescura por columna existía y funcionaba: consultada, reporta la fuente como desactualizada desde el primer día pasado el umbral.
El problema es que era un endpoint de consulta. Había que ir a preguntarle. Nada empujaba el hallazgo hacia una persona: ni un correo, ni un mensaje, ni una línea en el resumen semanal. Un chequeo que funciona perfecto y que nadie ejecuta es equivalente a no tenerlo.
Por eso la última pieza no es técnica: quién recibe el aviso y qué hace con él. Es el mismo principio que aplicamos al priorizar cualquier automatización — antes de construir, definir cómo se ve la falla — y acá nos lo habíamos salteado en nuestra propia casa.
Preguntas frecuentes
- Por que no lo agarran las alertas de error? Porque no hubo ningun error. El proceso corrio, la fila se escribio, el job termino en verde. Lo que fallo es que un campo de adentro llego vacio, y un campo vacio es una fila perfectamente valida.
- Un cero es lo mismo que sin dato? Nunca, y tratarlos igual es el origen del problema. Cero significa "medimos y no hubo nada". Sin dato significa "no medimos". Un sistema que guarda los dos como 0 tiro a la basura justo la distincion que mas necesitaba.
- Cual es un umbral razonable? Depende de la cadencia de cada fuente, no de un numero global. Un feed diario ya llega tarde a los dos o tres dias. Un informe semanal no llega tarde hasta bastante despues de una semana. Un solo umbral para todo produce ruido o ceguera.
- Vale la pena construir esto en una operacion chica? El chequeo es barato: la ultima fecha en que cada campo trajo valor. Lo que cuesta es decidir quien lo recibe y actuar. Si nadie va a actuar, no construyas la alerta: construi primero la costumbre de mirar.