Produk

Webhook bertanda tangan

Peristiwa pengiriman bertanda tangan 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)

Event

Langgankan setiap endpoint ke 1–20 jenis event berikut:

  • 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

Persyaratan penerima

  • Hitung tanda tangan dari isi permintaan mentah (raw) yang persis.
  • Bandingkan tanda tangan dalam waktu konstan (constant time).
  • Tolak timestamp di luar jendela waktu yang diizinkan.
  • Simpan event_id dan proses setiap event satu kali.
  • Jangan berasumsi event tiba dalam urutan siklus hidupnya.

Kontrol keluar (outbound)

Pembuatan endpoint memerlukan HTTPS. Target privat, loopback, link-local, metadata, yang membawa kredensial, dan internal diblokir dan di-resolve ulang saat waktu koneksi. Redirect tidak diikuti. Pengiriman menggunakan timeout dan jumlah percobaan ulang yang dibatasi.

Batas waktu dan percobaan ulang

Respons 2xx apa pun mengonfirmasi event. Batas waktu (15 dtk), galat jaringan, atau status lain dihitung gagal. Postline mencoba hingga 6 kali: percobaan pertama lalu setelah 1 mnt, 5 mnt, 30 mnt, 2 jam, dan 8 jam. Setiap percobaan dicatat di log pengiriman dan pengiriman apa pun dapat diulang manual lewat API atau dasbor.