WEBHOOK

Flujo de eventos en tiempo real.

Hacemos un POST a tu propio endpoint por cada evento de correo. Verificación de firma, reintentos inteligentes, garantía de orden.

Tipos de eventos

  • message.sent Mensaje puesto en cola.
  • message.delivered Mensaje entregado al destinatario.
  • message.opened El destinatario abrió el mensaje.
  • message.clicked El destinatario hizo clic en un enlace del mensaje.
  • message.bounced El mensaje rebotó (rebote duro/blando).
  • message.complained El destinatario presentó una queja de spam.
  • message.unsubscribed El destinatario abandonó la lista.

Ejemplo de payload

{
  "id": "evt_01h5z...",
  "type": "message.delivered",
  "created_at": "2026-05-13T14:30:00Z",
  "data": {
    "message_id": "msg_01h5z...",
    "to": "[email protected]",
    "from": "[email protected]",
    "subject": "Welcome"
  },
  "signature": "v1,abc123..."
}

Verificación de firma

Cada POST lleva una cabecera X-SendNomi-Signature. HMAC-SHA256, firmada con el cuerpo + timestamp. Verifica la firma con una comparación en tiempo constante (crypto.timingSafeEqual).

Estrategia de reintentos

Backoff exponencial hasta recibir un 2xx: 5s → 30s → 5m → 30m → 2h → 6h → 12h (8 intentos en total · 25 horas). Un 4xx se trata como error permanente; sin reintento. Los 5xx y los timeouts sí se reintentan.