Estrutura do corpo (payload)
O corpo da requisição segue sempre esta estrutura padrão, facilitando a tipagem no seu backend:Nos eventos de e-mail, o campo instanceId vem vazio, pois e-mail não usa instâncias (diferente do WhatsApp). O identificador do e-mail e os dados do evento ficam em data (emailId, to, from, status, sent_at, delivered_at, failed_at, error_message, etc.). Os campos de identificação (event, workspace_id, timestamp) são constantes.
Tabela de Eventos (Escopos)
Ao configurar um Webhook no painel, você escolhe quais eventos deseja ouvir. Para e-mail, ative apenas o que for útil para sua aplicação.Eventos de ciclo de vida do e-mail
email.sentE-mail foi aceito e enviado ao provedor.email.deliveredE-mail foi entregue ao destinatário.email.openedDestinatário abriu o e-mail pela primeira vez (open tracking).email.clickedDestinatário clicou em um link do e-mail (click tracking).email.failedE-mail falhou no envio ou bounce.email.complainedReclamação de spam (complaint).email.cancelledE-mail agendado foi cancelado.
Retorno de cada evento (E-mail)
Abaixo, o corpo completo (body) que a Notifique envia no POST para cada evento de e-mail. O campodata é o que varia; o restante da estrutura é sempre o mesmo.
email.sent
data: sentAt.
email.delivered
data: deliveredAt.
email.opened
data: openedAt. Disparado na primeira abertura do e-mail (open tracking do provedor).
email.clicked
data: clickedAt. Disparado quando o destinatário clica em um link rastreado do e-mail (click tracking do provedor).
email.failed
data: failedAt, errorMessage.
email.complained
data são enviados (nenhum opcional).
Em email.complained, é boa prática adicionar o endereço
to a uma lista de supressão e parar de enviar e-mails para esse destinatário, para evitar penalizações do provedor.Segurança e Validação (Headers)
Para garantir que o POST veio da Notifique e não de um terceiro, a Notifique envia headers de assinatura em todas as requisições de webhook.| Header | Descrição |
|---|---|
| X-Notifique-Signature | Hash HMAC-SHA256 do corpo da requisição, assinado com seu Segredo de Webhook. Formato: t=timestamp,v1=hash. |
| X-Notifique-Timestamp | Momento exato (Unix Timestamp em segundos) em que o evento foi gerado. Use para evitar Replay Attacks. |
| X-Workspace-Id | ID do workspace, para facilitar roteamento em sistemas multi-tenant. |
| X-Webhook-Event | Nome do evento (ex.: email.sent, email.delivered, email.opened, email.clicked, email.failed, email.complained, email.cancelled). |
| Content-Type | application/json. |
Dica de segurança: Sempre verifique se o timestamp é recente (ex.: menos de 5 minutos) e recalcule o hash para validar a origem. O cálculo da assinatura é: HMAC-SHA256(secret, timestamp + ”.” + body), onde body é o corpo bruto do POST (string JSON).
Respostas esperadas
O seu servidor deve responder à requisição o mais rápido possível para evitar timeouts.| Status | Significado |
|---|---|
| 2xx | Sucesso. O evento é marcado como entregue e sai da fila da Notifique. |
| 4xx / 5xx / timeout | Falha. A Notifique agenda retentativas automáticas (ex.: 5 min, 30 min, 2 h; até 4 tentativas). |
