Webhooks push email events to your server the moment they happen, so you don't have to poll.

Add a webhook

Under Webhooks, add your HTTPS endpoint and choose the events you want: delivered, bounced, open, click.

Payload

{
  "event_type": "delivered",
  "email_id": "…",
  "timestamp": "2026-07-31T08:15:00Z",
  "data": { "recipient": "user@example.com" }
}

Headers include X-ESMS-Signature (HMAC-SHA256 of the body with your webhook secret), X-ESMS-Event, and X-ESMS-Delivery-ID.

Verify the signature

Compute sha256=HMAC(secret, raw_body) and compare to X-ESMS-Signature before trusting a payload. Reject anything that doesn't match.

Retries

Non-2xx responses are retried with backoff (1m, 5m, 30m, 2h, 8h). Respond 200 quickly and process asynchronously. Endpoints resolving to private/internal addresses are blocked for safety.