Webhooks transacionais
Os webhooks permitem que a aplicação receba notificações em tempo real quando algo acontece a um e-mail transacional após o envio. Em vez de consultar a API para verificar o estado de entrega, o Flexmail envia um pedido HTTP POST para o endpoint no momento em que ocorre um evento.
Isto é particularmente valioso para e-mail transacional: pode agir imediatamente quando um pedido de redefinição de palavra-passe sofre um bounce, quando uma confirmação de encomenda é entregue, ou quando um destinatário marca uma mensagem como spam.
Eventos de webhook
O Flexmail envia uma notificação de webhook para cada um dos seguintes eventos:
- Enviado — a mensagem foi aceite e entregue ao servidor de e-mail recetor.
- Entregue — o servidor de e-mail recetor confirmou a entrega na caixa de entrada do destinatário.
- Bounce — a entrega falhou. Os hard bounces indicam um problema permanente (o endereço não existe); os soft bounces indicam um problema temporário (caixa de entrada cheia, servidor indisponível).
- Aberto — o destinatário abriu a mensagem.
- Clicado — o destinatário clicou numa ligação rastreada na mensagem.
- Queixa — o destinatário marcou a mensagem como spam.
Nota
O rastreamento de aberturas e cliques requer que os píxeis de rastreamento e o envolvimento de ligações estejam ativados. Os eventos de entrega dependem de o servidor de e-mail recetor confirmar a entrega — nem todos os servidores o fazem.
Configurar um endpoint de webhook
O endpoint de webhook é um URL no servidor que aceita pedidos HTTP POST e devolve uma resposta 200 para confirmar a receção.
Requisitos para o endpoint
- Aceita pedidos HTTP POST.
- Está acessível publicamente via HTTPS.
- Devolve um código de estado HTTP 2xx dentro de um tempo limite razoável para confirmar a receção.
- Processa o payload de forma assíncrona se a lógica de tratamento for lenta — responda imediatamente e processe em segundo plano para evitar exceder o tempo limite.
Registar o endpoint no Flexmail
A configuração do endpoint de webhook é feita através da API. O processo de registo completo e as opções disponíveis estão documentados na documentação da API em email-api.flexmail.eu/documentation, na secção Webhooks.
Payload do webhook
Cada notificação de webhook é um pedido HTTP POST com um corpo JSON. O payload contém o tipo de evento, um timestamp, o ID da mensagem e o endereço de e-mail do destinatário. Consoante o evento, são incluídos campos adicionais — por exemplo, um evento de bounce inclui o tipo e a razão do bounce, e um evento de clique inclui o URL que foi clicado.
Um payload típico tem este aspeto:
{ "event": "delivered", "timestamp": "2024-11-15T09:32:00Z", "messageId": "abc123", "recipient": "customer@example.com" }
A especificação completa do payload para cada tipo de evento está na documentação da API.
O que fazer com os eventos de webhook
Bounces
Quando receber um evento de hard bounce, sinalize esse endereço de e-mail no sistema. Pare de enviar para ele e investigue se o endereço foi introduzido corretamente. Continuar a enviar para endereços com hard bounce danifica a reputação do remetente.
Queixas de spam
Quando um destinatário marca um e-mail transacional como spam, suprima esse endereço imediatamente. Mesmo que o e-mail fosse genuinamente transacional (uma confirmação de encomenda, por exemplo), o destinatário sinalizou que não quer receber e-mails. Continuar a enviar é prejudicial para a reputação e pode representar um problema legal.
Confirmações de entrega
Para mensagens urgentes como redefinições de palavra-passe ou códigos de autenticação de dois fatores, pode usar o evento de entrega para confirmar que o e-mail chegou à caixa de entrada. Se não chegar nenhuma confirmação de entrega dentro de um período razoável, pode mostrar uma mensagem na interface sugerindo ao utilizador que verifique a pasta de spam ou tente novamente.
Dica
Confirme os pedidos de webhook imediatamente com uma resposta 200 e processe o payload numa tarefa ou fila em segundo plano. Se o handler demorar demasiado a responder, o Flexmail pode exceder o tempo limite e retentar o pedido, o que pode levar a processamento duplicado.
Tentativas repetidas
Se o endpoint não devolver uma resposta de sucesso, o Flexmail retenta a notificação de webhook. Torne o tratamento de eventos idempotente — processar o mesmo evento duas vezes deve produzir o mesmo resultado que processá-lo uma vez. Use o ID da mensagem e o tipo de evento em conjunto para desduplicar.
Próximos passos
- Consulte "Começar com a API transacional" para a configuração da conta.
- Reveja a secção Webhooks na documentação da API em email-api.flexmail.eu/documentation para a especificação completa do payload e instruções de registo.
- Consulte "Resolução de problemas em e-mail transacional" se os webhooks não estiverem a chegar ou se a entregabilidade estiver abaixo do esperado.