Two Systems, Two Jobs
An audience unsubscribe only updates the Lettr contact and is never copied to the suppression list. Nothing registers it with the delivery layer, so the contact status check is the only thing that stops the next campaign email.
Contact Statuses
Every contact in your Audience has exactly one of five statuses:
Campaigns only go to
subscribed contacts who are not paused. Consent is checked again for each batch, not just when the campaign is scheduled, so an opt-out taken halfway through a large send still takes effect. Contacts who fail the re-check are marked skipped for that campaign.
See Contacts for the full status reference.
Pauses
A pause is a time-boxed opt-out for marketing email. On the Manage email preferences page that every campaign unsubscribe link opens, a recipient can pause for 30, 60 or 90 days.- The contact stays
subscribedand gets apaused_untildate. Campaigns skip them until that date passes, then sends resume on their own. - Only
subscribedcontacts can be paused. Pausing never resubscribes anyone. - A full unsubscribe clears any active pause.
- A pause applies to campaigns only. It has no effect on API or SMTP sends.
What Stops Which Email
Which mechanism applies depends on how the email was sent and on theoptions.transactional flag.
Transactional vs Non-Transactional
options.transactional is a boolean on the send endpoint. It defaults to true. Campaigns are always sent as non-transactional.
transactional: trueis for one-to-one, operational email: password resets, receipts, security alerts.transactional: falseis for marketing-shaped email: newsletters, promotions, announcements. Lettr does not addList-Unsubscribeheaders to API sends itself (it does for campaigns), so check a delivered message’s headers and include your own unsubscribe link if you need one. See Sending.
The Comparison
Audience status is never checked on API or SMTP sends. For a newsletter sent through the API, Lettr doesn’t look at whether the address is
unsubscribed in your Audience. Either send it as a campaign, or filter recipients against your own records before calling the API.Where Each Unsubscribe Is Recorded
The
List-Unsubscribe header on a campaign points at a signed Lettr URL for that one contact, so a campaign unsubscribe lands on the contact record in Lettr, not on the suppression list.
Topics Are Narrower Still
A topic opt-out is a third, narrower kind of “no”. A contact who unticks one topic stayssubscribed and still gets campaigns for their other topics. Topics are a Lettr concept, so they only affect campaigns that target a topic. Nothing on the suppression list knows about them.
See Topics for how topic-targeted campaigns work.
Practical Steps
1
Send marketing mail as a campaign
Campaigns are the only send type that checks contact status, pauses and topics for every batch. They also add the unsubscribe link and headers for you.
2
Set transactional to false on marketing API sends
If you must send marketing-style email through the API or SMTP, set
options.transactional to false so SparkPost treats it as non-transactional and unsubscribe entries on the suppression list can apply to it.3
Mirror unsubscribes into your own system
Subscribe to the
unsubscribe.list_unsubscribe, unsubscribe.link_unsubscribe, message.bounce and message.spam_complaint webhooks, and keep your own do-not-email record. See Complaints & Unsubscribes.4
Check a suppressed address with Adamko
There is no Suppressions page. Ask Adamko “is jane@example.com suppressed?” to see the reason and date.
Getting Someone Back
The way back depends on which system stopped them.- Unsubscribed in your Audience: the recipient can resubscribe from the preferences page, or you can change the status yourself once you have their fresh consent. If you use double opt-in, ask them to confirm again.
- Paused: nothing to do. Sends resume when
paused_untilpasses, or the recipient can resume from the preferences page. - On the suppression list: you cannot remove it yourself. Email support@lettr.com with the address and what has changed. Requests are reviewed case by case and aren’t guaranteed, and a removal after a spam complaint is unlikely. Details are in Understanding Suppression Lists.
Quick Diagnosis
An unsubscribed contact got an API email
An unsubscribed contact got an API email
Check
options.transactional. If it was true or omitted, unsubscribe entries on the suppression list don’t apply, and Audience status is never checked on API sends. Set it to false for marketing mail, or send a campaign.A contact missed a campaign
A contact missed a campaign
Check their status and
paused_until in the Audience. Campaigns skip anyone not subscribed, anyone paused, and anyone who left the targeted topic.An API send shows the recipient in rejected
An API send shows the recipient in rejected
The address is on the suppression list. Ask Adamko why, and see Delivery Issues.
A contact looks fine in Audience but you still see bounces
A contact looks fine in Audience but you still see bounces
Contact status and the suppression list are separate. Clean the contact up, and watch your bounce rate. See List Hygiene.
Related Topics
Understanding Suppression Lists
Which events add an address to the suppression list, and how to ask for a removal.
Email Preferences Page
The hosted page behind every campaign unsubscribe link, with topics and pauses.
Complaints & Unsubscribes
Webhook events and handling code for complaints and unsubscribes.
Unsubscribe Best Practices
Legal requirements and honoring opt-outs.