Unsubscribe and compliance
RFC 8058 one-click List-Unsubscribe, a visible unsubscribe link, a preference center and your postal address in every marketing email, with opt-outs honored at once.
Gmail and Yahoo require bulk senders to offer one-click unsubscribe, and laws such as the US CAN-SPAM Act require a working opt-out and a postal address in every marketing email. Stamp0 builds both into every campaign and sequence email; you cannot turn them off. Transactional email from POST /emails is not marketing email and is not changed.
What every marketing email carries
| Part | What Stamp0 adds |
|---|---|
List-Unsubscribe | <https://api.stamp0.com/u/…>, a signed link unique to the recipient and the send |
List-Unsubscribe-Post | List-Unsubscribe=One-Click (RFC 8058), so mailbox providers can show their own unsubscribe button and unsubscribe with one POST |
List-Id | Names the campaign or sequence, so mail clients can group and filter it |
| Footer | Your physical address, an unsubscribe link and, when the preference center is on, a "manage preferences" link |
The footer goes before </body> of your HTML and at the end of the text part. If your template already links {{ unsubscribe_url }} and shows {{ physical_address }}, Stamp0 leaves your own footer alone.
Physical address
physical_address in PATCH /settings/marketing is required before any campaign or sequence sends: a campaign without it pauses with last_error: "physical_address_missing", and a sequence that sends email cannot be activated. Use a real postal address where you receive mail, such as a street address or a registered PO box. company_name is shown next to it.
Unsubscribe
The unsubscribe link and the List-Unsubscribe header point at the same signed URL:
- One-click. A mailbox provider's unsubscribe button sends
POST /u/…withList-Unsubscribe=One-Click. The contact is unsubscribed at once, with no page and no confirmation. - Link in the footer. Opening it shows a page that says what the link unsubscribes from, with a button. Opening the link alone changes nothing, so mail scanners that prefetch links cannot unsubscribe anyone.
What gets unsubscribed depends on the send: a campaign with a preference_list_id unsubscribes the contact from that list only; any other campaign, and every sequence, unsubscribes the contact from all marketing email of the project. Links never expire. They are signed, so they cannot be guessed or altered.
Opt-outs apply immediately: each recipient is checked again right before their email goes out, including in the middle of a running campaign.
Preference center
Footers link to a hosted preference center (/p/…) where the contact sees every public list with their subscription, can subscribe or unsubscribe per list, or can unsubscribe from everything. Private lists never appear there.
Brand the unsubscribe and preference pages with unsubscribe_page in the marketing settings: logo_url (https), accent_color, heading and message. Set preference_center_enabled: false to drop the preferences link; the unsubscribe link always stays.
Unsubscribes are not suppressions
| Unsubscribe | Suppression | |
|---|---|---|
| Caused by | The contact's choice | A hard bounce or complaint, recorded by SES |
| Scope | One list, or all marketing email of the project | Every email from the AWS account, transactional included |
| Stored | On the contact or the list membership in Stamp0 | Your SES account's suppression list |
Marketing sends skip both. An unsubscribe never adds the address to the SES suppression list, so a contact who opted out of your newsletter still gets password resets and receipts.
Every unsubscribe (one-click, the unsubscribe page or the preference center) sends a contact.unsubscribed webhook with contact_id, email, scope (list or all), list_id, source and source_id (the campaign or sequence). The campaign's unsubscribed stat counts it too.
Consent
Only email people who agreed to hear from you. Stamp0 helps you keep a record:
- Imports require a
consentstatement, stored with the import. - Lists and forms support double opt-in: the contact confirms by email before they are subscribed.
- Each list membership records its
source(API, import, form, preference center, one-click…) and when it was subscribed or unsubscribed.
Stamp0 gives you the tools; you remain responsible for complying with the law that applies to your mail, such as CAN-SPAM, GDPR or CASL.
Forms
Collect newsletter and waitlist signups with a hosted page, an iframe or your own HTML form, with double opt-in, a honeypot and Cloudflare Turnstile.
Resend aliases
How Resend's broadcasts, automations, topics, segments, audiences and contact properties map to Stamp0 campaigns, sequences and lists for the Resend SDKs.