Webhooks firmados
Recibe eventos en tiempo real en tu servidor, con validación HMAC SHA-256 contra falsificaciones.
Eventos disponibles
Recibe eventos en tiempo real en tu servidor, con validación HMAC SHA-256 contra falsificaciones.
| Campo | Tipo | Descripción |
|---|---|---|
| email.sent | event | Email aceptado por el MTA y entregado al proveedor de destino. |
| email.delivered | event | El proveedor de destino confirmó la entrega en la bandeja. |
| email.bounced | event | Rebote permanente destinatario inexistente o política del proveedor. |
| email.complained | event | El destinatario marcó el email como spam. Añade a supresión automáticamente. |
| email.opened | event | Email abierto por el destinatario (pixel tracking). |
| email.clicked | event | Enlace clicado (tracking). |
| email.failed | event | Fallo definitivo tras reintentos. |
| email.suppressed | event | Email bloqueado por la lista de supresión. |
| email.delivery_delayed | event | Entrega retrasada (greylisting / rate limit del destino). |
1. Registra el endpoint
Proporciona una URL HTTPS válida y la lista de eventos que quieres recibir. Recomendamos encarecidamente registrar un secret.
2. Valida la firma HMAC
Cada petición llega con el header X-CoffeeMail-Signature que contiene HMAC SHA-256 del cuerpo crudo. Usa coffeemail.webhooks.verifySignature() en tu handler.
3. Responde en < 5s
Responde 200 OK rápido. Si necesitas procesar de forma asíncrona, encola localmente y devuelve 202. Las cargas lentas disparan reintentos exponenciales.
4. Implementa idempotencia
Cada payload incluye un event id único. Persístelo en tu base para descartar duplicados. Usa upsert por id.
5. Prueba el endpoint
Usa POST /v1/product/webhooks/:id/test para disparar un evento simulado. El endpoint recibe un payload ficticio con firma válida.