# email.unsubscribed — Webhooks — PostFrame — EternalEngine

Fires when a recipient uses one-click unsubscribe or the unsubscribe link. The address is suppressed for your workspace; the method used is in the payload.

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

Webhook Event

# email.unsubscribed

Fires when a recipient uses the one-click unsubscribe button or the unsubscribe link. The address is suppressed for your workspace and the method that was used is in the payload.

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

## Unsubscribe Processing

One-click detection

RFC 8058 List-Unsubscribe-Post header enables one-click unsubscribe directly from the email client

Link click detection

Traditional unsubscribe link clicks are also captured and processed

Suppression

The address is added to your workspace's suppression list with the reason "unsubscribed" and is skipped on future sends

Signed tokens

Each unsubscribe link carries an HMAC token bound to the email it was sent in, so nobody can unsubscribe someone else

Payload Fields

to

The recipient list of the email

method

list-unsubscribe-post (one-click) or link

source

How the opt-out arrived

timestamp

Unix seconds at the top level of the event. Every event also carries data.email_id, message_id, from, to, subject, status, tags and created_at

## Keep exploring PostFrame

[### Unsubscribe management One-click headers, signed links and groups. Open Unsubscribe management →](https://eternalengineos.io/features/postframe/tracking/unsubscribe-management/)[### email.complained Fires on a spam complaint. Open email.complained →](https://eternalengineos.io/features/postframe/webhooks/email-complained/)[### Separate suppression lists Where the address ends up. Open Separate suppression lists →](https://eternalengineos.io/features/postframe/multi-tenant/separate-suppression-lists/)

Questions

## Common questions, straight answers.

What is in the email.unsubscribed payload?

The common fields — email_id, message_id, from, to, subject, status, tags, created_at — plus method (list-unsubscribe-post or link) and source.

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
