Novo guia: como aquecer um IP dedicado sem prejudicar sua reputação. Ler agora →
MigoSMTP
Referência

Webhooks

Receba eventos assim que acontecem, para que seu sistema saiba sempre o que aconteceu com cada mensagem. Verifique cada requisição pela assinatura.

Como os webhooks funcionam

Cadastre um endpoint HTTPS no painel e escolha os eventos que ele deve receber. Quando algo acontece com uma mensagem, o MigoSMTP envia uma requisição POST com corpo JSON ao seu endpoint.

Tipos de evento

Assine apenas os eventos de que seu sistema precisa. Cada evento traz o ID da mensagem, o destinatário e um timestamp, para você associá-lo à mensagem enviada.

Exemplo de payload

Os payloads são JSON enviados em uma requisição POST. Os valores aqui são apenas exemplos.

{
  "event": "delivered",
  "message_id": "msg_123",
  "recipient": "you@example.com",
  "timestamp": "2026-01-15T10:30:00Z"
}

Verifique a assinatura

Qualquer pessoa que conheça sua URL poderia enviar requisições a ela, então verifique todas. Calcule um HMAC do corpo bruto da requisição com seu segredo de assinatura e compare-o com o valor do cabeçalho de assinatura usando uma comparação em tempo constante. Rejeite as requisições que não coincidirem. O nome do cabeçalho e o algoritmo aparecem no painel junto ao seu segredo de assinatura.

const crypto = require("crypto");
function valid(rawBody, received, secret) {
  const expected = crypto.createHmac("sha256", secret).update(rawBody).digest("hex");
  const a = Buffer.from(expected), b = Buffer.from(received);
  return a.length === b.length && crypto.timingSafeEqual(a, b);
}

Responda rápido

Retorne um status 2xx assim que armazenar o evento e faça o trabalho de fato depois, em uma fila. Um endpoint lento ou com falhas gera novas tentativas e pode atrasar seus outros eventos.

Espere duplicatas e eventos fora de ordem

Entregas com falha são repetidas, então o mesmo evento pode chegar mais de uma vez, e os eventos podem chegar fora de ordem. Use o ID da mensagem e o tipo do evento para tornar seu handler idempotente, e use o timestamp do evento em vez do horário de chegada.

Teste antes de depender dele

Aponte o endpoint para um inspetor de requisições ou um túnel até sua máquina de desenvolvimento, envie uma mensagem de teste e confirme que consegue verificar a assinatura em tráfego real.

EventoSignificado
deliveredO servidor de destino aceitou a mensagem.
bouncedNão foi possível entregar a mensagem. Pare de enviar a este endereço, a menos que tenha sido um problema temporário.
deferredFalha temporária; a entrega será repetida.
openedO destinatário abriu a mensagem. Considere isso um sinal aproximado, pois apps de e-mail podem pré-carregar imagens.
clickedO destinatário clicou em um link rastreado.
complainedO destinatário denunciou a mensagem como spam. Pare de enviar a este endereço.
Esta página foi útil?Falar com o suporte

Comece a enviar em minutos.

Crie uma conta, adicione seu domínio e envie seu primeiro e-mail.