Un evento tardío tumba todo el lote: el límite de 7 días de event_time en la API de conversiones
Si un solo evento de la petición tiene un event_time de hace más de 7 días, Meta devuelve error y no procesa ninguno. Por qué pasa y cómo evitarlo.
- El servidor envía a Meta una petición con varios eventos en data, todos recientes.
- En el mismo lote entra una compra cuyo event_time es de hace 8 días.
- Meta acepta event_time de hasta 7 días atrás. Si uno solo es más antiguo, devuelve error y no procesa ninguno.
- La causa: lotes diarios o semanales y reintentos que reenvían eventos atrasados sin mirar su fecha.
- La solución: enviar en tiempo real y filtrar los eventos de más de 7 días antes de cada petición.
- Verifícalo: la API responde sin error y Events Manager muestra los eventos con poco retraso.
La API de conversiones permite enviar varios eventos en una sola petición: hasta 1.000 en el array data. Es cómodo para procesos por lotes, colas de reintentos o integraciones con el CRM. Pero cada evento lleva un event_time, el momento en que ocurrió, y Meta pone un límite a su antigüedad. Basta con que un solo evento lo supere para que se pierda la petición entera.
Qué ocurre cuando un evento supera los 7 días
El servidor envía una petición con cuatro eventos: una compra de hace dos horas, un lead de ayer, un AddToCart de hace tres días y una compra de hace ocho días que había quedado atascada en una cola. Meta responde con un error y no procesa ninguno de los cuatro, tampoco los tres que estaban dentro del plazo.
Si nadie revisa las respuestas de la API, el fallo pasa desapercibido. Lo que se ve después son huecos: días con menos conversiones en Events Manager que pedidos en el backend, normalmente coincidiendo con un reprocesado o con la recuperación tras una caída.
Por qué Meta rechaza toda la petición
La documentación de Meta es explícita: event_time es un timestamp Unix en segundos, en GMT, y puede ser de hasta 7 días antes del envío. Si cualquier event_time de data tiene más de 7 días, Meta devuelve un error para toda la petición y no procesa ningún evento. Las situaciones que lo provocan:
- Lotes poco frecuentes. Un proceso semanal, o uno diario que acumula eventos del fin de semana, acaba mezclando eventos recientes con otros que ya han caducado.
- Colas de reintentos sin fecha límite. Un evento que falló hace días se reintenta una y otra vez junto con los nuevos, y cada vez tumba el lote completo.
- Importaciones desde el CRM o el backend. Pedidos confirmados, devoluciones procesadas o leads cualificados días después del evento original se envían con su fecha real.
event_timetomado del campo equivocado. Por ejemplo, la fecha de alta del cliente o de creación del carrito en lugar del momento de la conversión: el evento parece mucho más antiguo de lo que es.
La misma guía indica que, con otros eventos inválidos, los eventos válidos que llevan event_id sí se guardan. Para el límite de 7 días, en cambio, la regla publicada es que no se procesa ninguno. Los eventos de tienda física (action_source: physical_store) tienen su propia indicación: subirlos dentro de los 62 días siguientes a la conversión.
Cómo encontrar lotes rechazados por event_time
- Revisa los logs de las respuestas de la API: una petición correcta no devuelve error; una rechazada sí, con un mensaje que menciona
event_time. - Para cada envío, calcula la diferencia entre el momento del envío y el
event_timemás antiguo del lote. Cualquier valor por encima de 7 días es un lote perdido. - En Events Manager, compara las conversiones diarias con los pedidos del backend y busca días con huecos, sobre todo tras reprocesados o caídas.
- En los detalles del evento, la pestaña de frescura de eventos (Event Freshness) muestra el retraso medio entre el
event_timey el envío, en una escala de tiempo real a semanal.
Cómo enviar los eventos sin que caduquen
- Envía en tiempo real, o casi. Meta recomienda compartir los eventos cuando ocurren o en lotes cercanos al tiempo real, idealmente dentro de la primera hora.
- Filtra antes de cada petición. Descarta (y registra aparte) cualquier evento con un
event_timede más de 7 días. Deja margen: si el lote tarda en salir, un evento de 6 días y 23 horas puede caducar por el camino. - Pon fecha límite a los reintentos. Un evento que no se ha podido enviar en unos días debe salir de la cola, no seguir arrastrando al resto.
- Comprueba el formato. Segundos, no milisegundos, y en GMT.
Documentación de Meta sobre los parámetros del evento de servidor y el uso de la API de conversiones (en inglés).
Cómo comprobar que ningún lote se pierde
- Las respuestas de la API no devuelven errores de
event_timey el número de eventos recibidos coincide con el enviado. - Ningún lote contiene eventos de más de 7 días: el filtro deja constancia de los que descarta.
- En Events Manager, la frescura de eventos se acerca a tiempo real y las conversiones diarias vuelven a seguir a los pedidos del backend.
Los eventos y las fechas del ejemplo son ilustrativos. El texto del error en la animación es una paráfrasis, no el mensaje literal de Meta.