# email.delivered — Webhooks — PostFrame — EternalEngine

Fired when the recipient's mail server accepts your email. This confirms successful handoff from the sending provider to the destination server.

[Back to Webhooks](https://eternalengineos.io/features/postframe/webhooks/)

Webhook Event

# email.delivered

Fires when the recipient's mail server accepts your email. PostFrame stamps the delivered time, stores the SMTP response, and sends the event to your endpoint with a signature you can verify.

[Start free](https://app.eternalengineos.io/signup?plan=free&interval=annual)[All webhook events](https://eternalengineos.io/features/postframe/webhooks/)

## Delivery Confirmation Event

Instant notification

Webhook fires within seconds of the receiving server accepting the message

Provider metadata

Includes which provider delivered the message and the SMTP response code

Status update first

The email moves to delivered and delivered_at is stamped before the webhook is queued

Timestamp

The event carries a unix timestamp; the email record keeps its created, sent and delivered times

Payload Fields

message_id

The provider's message identifier

to

The recipient list of the email

provider

ses, postmark, mailgun and so on

smtp_response

The receiving server's acceptance response. Every event also carries data.email_id, message_id, from, to, subject, status, tags and created_at

## Keep exploring PostFrame

[### Delivery confirmation Status timeline and the live delivery log. Open Delivery confirmation →](https://eternalengineos.io/features/postframe/tracking/delivery-confirmation/)[### email.opened Fires on the first pixel load. Open email.opened →](https://eternalengineos.io/features/postframe/webhooks/email-opened/)[### email.bounced Fires when the receiving server refuses the message. Open email.bounced →](https://eternalengineos.io/features/postframe/webhooks/email-bounced/)

Questions

## Common questions, straight answers.

What is in the email.delivered payload?

The common fields — email_id, message_id, from, to, subject, status, tags, created_at — plus smtp_response from the receiving server and the provider name.

How do I verify the webhook came from PostFrame?

Every delivery carries an X-PostFrame-Signature header of the form v1=. It is an HMAC-SHA256 of "." using the endpoint's signing secret, which you can rotate from the dashboard at any time.

What happens if my endpoint is down?

PostFrame retries five times with exponential backoff — 10, 20, 40, 80 and 160 seconds — and records every attempt, with the HTTP status and timing, in the endpoint's delivery log.

Can I try the endpoint before real traffic arrives?

Yes. Each webhook endpoint has a Test action that sends a sample event to your URL. Emails sent in test mode never dispatch webhooks, so your integration tests do not fire production hooks.

## Run your business from one place.

Five plans, seventeen launch apps, one dashboard. Set up in under 5 minutes — change tiers any time.

[Start free$0 forever &bull; No card &bull; Upgrade any time](https://app.eternalengineos.io/signup?plan=free&interval=annual)[Talk to Sales](https://eternalengineos.io/contact/)

From $0 · Basic $9.95/mo · Save 20% on annual billing · Upgrade or downgrade any time
