Webhooks assinados
Receba eventos em tempo real no seu servidor, com validação HMAC SHA-256 contra falsificações.
Eventos disponíveis
Receba eventos em tempo real no seu servidor, com validação HMAC SHA-256 contra falsificações.
| Campo | Tipo | Descrição |
|---|---|---|
| email.sent | event | Email aceito pelo MTA e entregue ao provedor de destino. |
| email.delivered | event | Provedor de destino confirmou a entrega na caixa de entrada. |
| email.bounced | event | Bounce permanente destinatário inexistente ou política do provedor. |
| email.complained | event | Destinatário marcou o email como spam. Adicione à supressão automaticamente. |
| email.opened | event | Email aberto pelo destinatário (pixel tracking). |
| email.clicked | event | Link clicado (tracking). |
| email.failed | event | Falha definitiva após retentativas. |
| email.suppressed | event | Email bloqueado pela lista de supressão. |
| email.delivery_delayed | event | Entrega atrasada (greylisting / rate limit do destino). |
1. Cadastre o endpoint
Forneça uma URL HTTPS válida e a lista de eventos que deseja receber. Recomendamos fortemente cadastrar um secret.
2. Valide a assinatura HMAC
Cada requisição chega com o header X-CoffeeMail-Signature contendo HMAC SHA-256 do corpo cru. Use coffeemail.webhooks.verifySignature() no seu handler.
3. Responda em < 5s
Responda 200 OK rápido. Se precisar processar de forma assíncrona, enfileire localmente e retorne 202. Workloads lentos disparam retries exponenciais.
4. Implemente idempotência
Cada payload inclui um event id único. Persista-o no seu banco para descartar duplicatas. Use upsert por id.
5. Teste o endpoint
Use POST /v1/product/webhooks/:id/test para disparar um evento simulado. O endpoint recebe um payload fictício com assinatura válida.