A recipient replied
Posted to the subscriptions to email.received when a recipient replies on reply.<your domain> — only for a domain where reply receiving is turned on (the domain's screen in the app, one MX record). The whole reply is in the body except attachments, which come as signed download links valid for 7 days. Replies over 150 KB are refused by Amazon and never arrive. Signed and retried like every event. The test event (POST /api/v1/webhooks/{id}/test) can arrive under this type too, with data: { test: true, message } and none of the fields of the real event: check data.test first.
Headers
t=<unix timestamp>,v1=<hex>: v1 is the HMAC-SHA256 of "<t>.<raw body>" keyed with the subscription's secret. Reject a t more than 300 seconds away from your clock.
The same t, in seconds.
The event's id — the same on every attempt and every replay: the deduplication key.
The event's type.
This delivery. A manual replay gets a new one.
The attempt number, starting at 1.
Payload
Example payload
{
"id": "evt_R3pL9yQ2wE5tY8uI",
"type": "email.received",
"created_at": "2026-09-25T15:02:11.520Z",
"data": {
"reply_id": "cmu8r2d5k00031n7nq4w9pxyz",
"email": "claire@example.com",
"from": "claire@example.com",
"from_name": "Claire Martin",
"to": [
"billing+cmu651xf200021n7nm68sikfw@reply.yourdomain.com"
],
"subject": "Re: Your September invoice",
"text": "Hello, can you send it to our accounting team too?\n\nOn 25 Sept 2026, Your company wrote:\n> Please find your invoice attached.",
"received_at": "2026-09-25T15:02:11.482Z",
"headers": {
"message_id": "CAF3k9x@mail.gmail.com",
"in_reply_to": "0102019a7c3e1b2f-3d1e-000000@eu-west-1.amazonses.com",
"references": [
"0102019a7c3e1b2f-3d1e-000000@eu-west-1.amazonses.com"
],
"date": "Thu, 25 Sep 2026 17:02:08 +0200",
"auto_submitted": null
},
"attachments": [
{
"filename": "purchase-order.pdf",
"content_type": "application/pdf",
"size": 48213,
"url": "https://mailcheer.com/api/reponses/pj/Y211OHIy…~kQ3v…",
"url_expires_at": "2026-10-02T15:02:11.520Z"
}
],
"message_id": "cmu651xf200021n7nm68sikfw",
"source": "api",
"tags": {
"customer": "4821"
},
"spam": false,
"automatic": false,
"authentication": {
"spf": "PASS",
"dkim": "PASS",
"dmarc": "PASS"
}
}
}Response
Any 2xx within 15 seconds acknowledges receipt. Anything else — another status, a redirect (not followed), no answer, a network error — is retried: 5 attempts in all, the next ones 30 s, 2 min, 10 min and 1 h after the previous failure.
Changes
Webhooks have no change history: a webhook is keyed by its event name rather than a path and method, so no recorded change can name it.