Entregas de Webhook
Cada notificación enviada a un endpoint se registra como una entrega, permitiendo monitoreo y reintento.
Estado de la Entrega
| Estado | Descripción |
|---|---|
pending | Esperando envío |
delivered | Entregado con éxito (HTTP 2xx) |
failed | Fallo en la entrega |
retrying | Esperando nuevo intento |
Campos de la Entrega
| Campo | Descripción |
|---|---|
| Endpoint | Webhook de destino |
| Evento | Evento que generó la entrega |
| Estado HTTP | Código de respuesta del destino |
| Headers de la solicitud | Headers enviados |
| Body de la solicitud | Payload enviado (JSON) |
| Headers de la respuesta | Headers recibidos |
| Body de la respuesta | Cuerpo de la respuesta (máx 2000 caracteres) |
| Error | Mensaje de error (si falló) |
| Intentos | Número de intentos |
| Próximo reintento | Fecha/hora del próximo intento |
| Entregado en | Timestamp de éxito |
Pipeline de Procesamiento
Etapa 1: Creación del Evento
Operación en el recurso (ej: pago creado)
→ Evento creado en la base de datos
→ Job encolado: EVENT_DISPATCH
Etapa 2: Despacho del Evento
Worker procesa EVENT_DISPATCH
→ Busca webhooks activos de la organización
→ Filtra por eventos suscritos
→ Para cada webhook correspondiente:
→ Crea registro de WebhookDelivery
→ Encola job: WEBHOOK_DELIVERY
Etapa 3: Entrega
Worker procesa WEBHOOK_DELIVERY
→ Genera payload + firma
→ POST a URL del webhook (timeout: 30s)
→ Éxito (2xx): marca como delivered, reinicia contador de fallos
→ Fallo: actualiza stats, programa reintento
→ Después de 10 fallos consecutivos: desactiva endpoint
Reintento Automático
- Las entregas fallidas se reintentan automáticamente
- Backoff exponencial (1s, 2s, 4s, 8s...)
- Máximo de intentos configurable por job
Reintento Manual
Las entregas individuales pueden reintentarse manualmente desde el dashboard.
Monitoreo
Para cada organización:
- Total de webhooks activos/inactivos
- Total de entregas
- Entregas con fallo
- Contadores de fallos consecutivos