Referencia
Reintentos y fallos
Cómo reintenta Emailit las peticiones de webhook fallidas, cuándo te avisa por email y desactiva un endpoint, y cómo revisar y volver a enviar las peticiones fallidas.
Cuando tu endpoint no acepta una petición de webhook, Emailit conserva los eventos y vuelve a intentarlo según un calendario que dura algo más de tres días. En esta página encontrarás ese calendario, los emails que envía Emailit, cuándo desactiva un endpoint y cómo revisar y volver a enviar las peticiones fallidas.
Qué se considera un fallo
Una petición falla cuando tu endpoint:
- Devuelve cualquier estado fuera del rango
200–299, incluidas las redirecciones (3xx). - No responde en 30 segundos.
- No es accesible: errores de DNS, conexiones rechazadas, errores de TLS o una URL que se resuelve en una dirección IP privada.
Un fallo afecta a todo el lote: todos los eventos de la petición se reintentan juntos.
Calendario de reintentos
Después de cada intento fallido, Emailit espera antes de volver a intentarlo:
| Intento | Espera desde el intento anterior | Tiempo desde el primer intento |
|---|---|---|
| 1 | Se envía a los pocos segundos del evento | 0 |
| 2 | 5 minutos | 5 minutos |
| 3 | 30 minutos | 35 minutos |
| 4 | 2 horas | 2 horas y 35 minutos |
| 5 | 5 horas | 7 horas y 35 minutos |
| 6 | 12 horas | 19 horas y 35 minutos |
| 7 | 12 horas | 1 día y 7 horas |
| 8 | 12 horas | 1 día y 19 horas |
| 9 | 12 horas | 2 días y 7 horas |
| 10 | 12 horas | 2 días y 19 horas |
| 11 | 12 horas | 3 días y 7 horas |
Si el intento 11 falla, la petición se marca como Failed y no se reintenta automáticamente. Aún puedes volver a enviarla durante 7 días.
Cada intento se vuelve a firmar con una marca de tiempo nueva. Los eventos que llegan mientras hay peticiones anteriores a la espera de un reintento se envían en sus propios lotes, así que un evento problemático no bloquea los más recientes.
Emails de notificación
Emailit envía un email al propietario del espacio de trabajo en dos momentos:
| Cuándo | |
|---|---|
| Una petición falla por tercera vez (unos 35 minutos después del primer fallo) | El webhook está fallando. Se envía una vez por incidencia. Solo recibes otro después de una entrega correcta seguida de nuevos fallos, o pasados 4 días. |
| El webhook se desactiva automáticamente | El webhook se ha desactivado, con el último código de estado. |
Desactivación automática
Si un webhook lleva 3 días sin ninguna entrega correcta desde su petición fallida más antigua, Emailit lo desactiva en el siguiente intento fallido. En la práctica, esto ocurre hacia el 11.º intento de la primera petición fallida, o antes si los eventos nuevos siguen fallando.
Mientras un webhook está desactivado:
- No se ponen en cola eventos nuevos para él. Se siguen registrando en el flujo de eventos.
- Las peticiones que esperaban un reintento siguen pendientes y se reanudan cuando lo activas.
- La página del webhook muestra el estado Disabled.
Para volver a activarlo, selecciona Enable webhook en el menú de acciones del webhook o llama a Actualizar un webhook con {"enabled": true}. Retry failed y el reintento de una sola petición también activan el webhook.
La pestaña Requests
Abre un webhook en Email APIWebhooks para ver su pestaña Requests, con las peticiones de la más reciente a la más antigua:
| Columna | Descripción |
|---|---|
| Event type | El evento de la petición. |
| Event ID | El ID evt_, el mismo valor que tu endpoint recibe como event_id. |
| Created | Cuándo se puso en cola la petición. |
| Attempts | Cuántos intentos de entrega han fallado hasta ahora. |
| Status | Pending (aún no se ha intentado), Attempting (ha fallado al menos una vez y se reintentará), Delivered o Failed (se agotaron los reintentos). |
Filtra por Status code, Event o Created. Los eventos de prueba de Send test no aparecen aquí.
En una petición Failed, selecciona View para abrir Failure reason: el código de estado que devolvió tu endpoint (0 si no hubo respuesta HTTP), cuándo se creó la petición y cuándo falló, y los primeros 2000 caracteres del cuerpo de la respuesta.
Volver a enviar las peticiones fallidas
Puedes volver a enviar las peticiones marcadas como Failed cuyo último fallo se produjo en los últimos 7 días. Las peticiones que vuelves a enviar pasan de nuevo a Pending y empiezan un nuevo ciclo de reintentos desde el intento 1. La entrega no es instantánea: la siguiente ronda de entregas las recoge en cuestión de segundos.
Reintentar una petición
En la pestaña Requests, selecciona Retry en una fila fallida. El botón solo aparece en las peticiones fallidas de los últimos 7 días.
El endpoint de la API es Reintentar una petición, POST /v2/webhooks/{id}/requests/{request_id}/retry, que devuelve {"retried": 1, "id": "whr_…"}. Solo acepta peticiones marcadas como Failed y devuelve 400 para las demás. Ningún endpoint público lista los ID de petición (whr_…), así que, para automatizar con la API, usa Retry failed.
Reintentar las peticiones fallidas
Abre el menú de acciones del webhook y selecciona Retry failed. Todas las peticiones que fallaron en los últimos 7 días se vuelven a poner en cola, y el panel muestra «Queued 3 failed request(s) for retry» con el número real, o «No failed requests in the last 7 days».
Con la API, llama a Reintentar las peticiones fallidas:
curl -X POST https://api.emailit.com/v2/webhooks/wh_2xGk8Hd3RvN6qT1mWsB9cL4pZ7e/retry-failed \
-H "Authorization: Bearer $EMAILIT_API_KEY"{ "retried": 42 }Recuperarse de una caída
-
Arregla el endpoint. Usa View en una petición fallida para ver qué devolvió tu endpoint.
-
Confirma que funciona. Usa Send test desde el menú de acciones, o Enviar un evento de prueba con la API, y comprueba que obtienes un
2xx. -
Activa el webhook si Emailit lo desactivó.
-
Vuelve a enviar los fallos. Selecciona Retry failed para poner en cola todas las peticiones que fallaron en los últimos 7 días. Las peticiones que siguen marcadas como Attempting se reintentan según su propio calendario.
-
Recupera lo que falte. Los eventos que ocurrieron mientras el webhook estaba desactivado nunca se pusieron en cola, y los fallos de hace más de 7 días no se pueden volver a enviar. Léelos con la API de eventos para el periodo afectado y procesa los que te falten.
Como los reintentos vuelven a enviar lotes completos, haz que tu controlador sea idempotente: guarda cada event_id y omite los que ya hayas procesado. Consulta Peticiones de webhook.
Retención
Las peticiones de webhook siguen el periodo de retención de Logs, así que las filas más antiguas desaparecen de la pestaña Requests con el tiempo.
| Pay as you go | Pro | Business | Custom | |
|---|---|---|---|---|
| Retención de los registros de peticiones | 7 días | 30 días | 30 días | Flexible |