Skip to main content
Manage email preferences is the hosted page that every {{unsubscribe_link}} in a campaign opens. Recipients see their current status, choose which topics they want, pause marketing email for a while, or leave entirely. The page is built in, so there is nothing to host or design yourself.
The page applies to marketing campaigns only. Transactional emails sent through the API or SMTP are not affected by anything a recipient does here. See Complaints & Unsubscribes for how unsubscribes work on the transactional side.

What Recipients See

The page is addressed to one contact and opens from the signed link in the email they received. The page renders in the contact’s communication language, so a Czech recipient of a Czech-language team sees it in Czech.

How Choices Are Applied

Ticking and unticking topics changes only topic subscriptions. A recipient who unticks “Product updates” but leaves “Newsletter” ticked stays subscribed and keeps receiving the newsletter. Topic opt-outs genuinely suppress sends: consent is re-checked when the campaign’s recipients are resolved and again for every batch. Unticking every box unsubscribes the contact from all marketing email. Committing an empty selection opens a short dialog asking for an optional reason before it goes through. The contact’s status becomes unsubscribed, every topic is detached (private topics included), any active pause is cleared, and the unsubscribe.link_unsubscribe webhook event fires. Coming back uses the same button. An unsubscribed recipient ticks the topics they want and presses Update preferences, and their status returns to subscribed with exactly those topics. This is the only action on the page that resubscribes a contact; a pause never does. Pausing keeps the contact subscribed but sets a paused_until date. Campaigns skip the contact until that date passes, after which sends resume on their own. Expiry is checked at send time, with no scheduled job that could fail. Pausing is only available to subscribed contacts.

What You See on Your Side

Paused contacts are visible everywhere you look at your audience:
  • Audiences shows a violet Paused badge with “until date” on each paused contact, and a Paused filter whose count matches the badges.
  • CSV exports carry a paused_until column alongside status.
  • The API returns a nullable paused_until field on contacts. Nothing you already parse changes; contacts that are not paused return null.
A pause is owned by the recipient. Contacts cannot be created or edited into a paused state from the app or the API. To stop mail to a contact from your side, change their status. Unsubscribe reasons land in the contact’s activity log together with the status change. The redirect form of the merge tag still works. After the recipient unsubscribes from all email, Lettr sends them to your URL:
Topic toggles and pauses do not redirect, since the recipient is expected to stay on the page. The one-click unsubscribe used by mail clients through the List-Unsubscribe header bypasses the page entirely and unsubscribes immediately, as the RFC requires. See List-Unsubscribe.

Reliability Notes

  • The page never fails closed. A malformed or missing optional parameter is dropped and the page renders anyway, because refusing to show an unsubscribe page is worse than ignoring a bad query string.
  • Rate limits are per contact, not per IP. Corporate security gateways that prefetch every link in an email cannot exhaust a shared limit and lock a real recipient out of unsubscribing.
  • Test emails open a preview. Links in test sends open the same page in preview mode with a banner explaining that nothing will be recorded.

Next Steps

Topics

Decide which topics are public and appear on the page

The Unsubscribe Link

Add the merge tag to your campaign footer

Contact Status

How statuses and pauses decide who receives a campaign

Unsubscribe Best Practices

Keep opt-outs easy and compliant