Postmark Delivery webhook payload example

Postmark · event: Delivery (RecordType) · content type: application/json

This is a representative sample — fake IDs, real structure. To see a payload with your data, point the provider at a capture URL (button below).

See it live, not frozen

One click creates a free capture bin with this exact payload already in it — pretty-printed, headers inspectable, replayable to your own endpoint:

Then paste the bin's URL into Postmark's webhook settings to capture a real delivery. No signup.

Headers

content-type: application/json
x-pm-retries-remaining: 6
x-pm-webhook-trace-id: 3f9c2a71-58d4-4b06-9e12-c07a5d81f4b3

Body

{
  "RecordType": "Delivery",
  "MessageStream": "outbound",
  "ServerID": 23,
  "MessageID": "883953f4-6105-42a2-a16a-77a8eac79483",
  "Recipient": "ada@example.com",
  "Tag": "welcome-email",
  "DeliveredAt": "2026-08-30T09:33:54.9070259Z",
  "Details": "250 2.0.0 OK  1788082434 x12-20020a05 - gsmtp",
  "Metadata": {
    "user_id": "usr_84nQz2",
    "flow": "onboarding"
  }
}

Things that bite people

Send it yourself

Reproduce this delivery against any endpoint (your handler, a bin, staging):

$ curl -X POST https://your-endpoint.example/hook \
  -H 'content-type: application/json' \
  -H 'x-pm-retries-remaining: 6' \
  -H 'x-pm-webhook-trace-id: 3f9c2a71-58d4-4b06-9e12-c07a5d81f4b3' \
 -d '{
  "RecordType": "Delivery",
  "MessageStream": "outbound",
  "ServerID": 23,
  "MessageID": "883953f4-6105-42a2-a16a-77a8eac79483",
  "Recipient": "ada@example.com",
  "Tag": "welcome-email",
  "DeliveredAt": "2026-08-30T09:33:54.9070259Z",
  "Details": "250 2.0.0 OK  1788082434 x12-20020a05 - gsmtp",
  "Metadata": {
    "user_id": "usr_84nQz2",
    "flow": "onboarding"
  }
}'

← All payload examples · Signature debugger · Docs