Produto

Webhooks assinados

Eventos de entrega assinados com HMAC.

HMAC-SHA256
// Headers: Postline-Timestamp, Postline-Event-Id, Postline-Signature
signed   = timestamp + "\0" + event_id + "\0" + raw_body
expected = "v1=" + hex(HMAC-SHA256(webhook_secret, signed))
constant_time_compare(expected, Postline-Signature)

// 2xx acknowledges the event. Otherwise up to 6 attempts:
// now, +1m, +5m, +30m, +2h, +8h (15 s timeout each)

Eventos

Assine cada endpoint em 1 a 20 destes tipos de evento:

  • email.accepted
  • email.queued
  • email.sent
  • email.delivered
  • email.deferred
  • email.bounced
  • email.complained
  • email.opened
  • email.clicked
  • email.received
  • email.suppressed
  • domain.verified
  • domain.failed

Requisitos do receptor

  • Calcule a assinatura a partir do corpo bruto exato da requisição.
  • Compare as assinaturas em tempo constante.
  • Rejeite timestamps fora da sua janela permitida.
  • Armazene o event_id e processe cada evento uma única vez.
  • Não presuma que os eventos chegam na ordem do ciclo de vida.

Controles de saída

A criação de endpoint exige HTTPS. Alvos privados, loopback, link-local, de metadados, com credenciais embutidas e internos são bloqueados e resolvidos novamente no momento da conexão. Redirecionamentos não são seguidos. A entrega usa timeouts e tentativas de retentativa limitados.

Tempo limite e novas tentativas

Qualquer resposta 2xx confirma o evento. Tempo limite (15 s), erro de rede ou outro status contam como falha. O Postline faz até 6 tentativas: a primeira e novas tentativas após 1 min, 5 min, 30 min, 2 h e 8 h. Cada tentativa fica no registro de entregas e qualquer entrega pode ser reenviada manualmente pela API ou pelo painel.