Webhooks

email.bounced

The message bounced. Hard bounces suppress the address automatically.

Signed with Standard Webhooks. At-least-once and unordered. Payloads are at most 64 KB. Answer any 2xx within 10 seconds; anything else is retried on the published curve.

Header Parameters

webhook-id*string

The delivery id. Identical across retries — dedupe on it.

webhook-timestamp*string

Unix seconds. Reject anything more than 5 minutes from now (replay protection).

webhook-signature*string

Space-separated v1,<base64 HMAC-SHA256> signatures of {webhook-id}.{webhook-timestamp}.{raw body}, keyed with the base64 part of your whsec_ secret. Two appear during a secret rotation's grace window; accept either. Verify against the RAW body, before parsing.

Request Body

application/json
  1. body

The message bounced. Hard bounces suppress the address automatically.

id*string

The delivery id — also sent as webhook-id. Dedupe on it.

type*"email.bounced"
Value in"email.bounced"
version*"1"
Value in"1"
created_at*string

When we queued it.

Formatdate-time
occurred_at*string

When it happened. Order on this, never on arrival.

Formatdate-time
data*

Response Body

Accepted. Any 2xx stops retries.

Example Requests
POST/email.bounced

The message bounced. Hard bounces suppress the address automatically.

Request Body
application/json
{  "id": "string",  "type": "email.bounced",  "version": "1",  "created_at": "2019-08-24T14:15:22Z",  "occurred_at": "2019-08-24T14:15:22Z",  "data": {    "event_id": "string",    "message": {      "id": "string",      "to": "string",      "from": "string",      "status": "string",      "source": "string",      "created_at": "2019-08-24T14:15:22Z"    },    "detail": {}  }}
Header Parameters
{  "webhook-id": "string",  "webhook-timestamp": "string",  "webhook-signature": "string"}