Unsubscribe and suppression in Adapty Mail
Adapty Mail stops sending to a user under two distinct conditions:
- Suppression: The user is excluded from all future sends in this project (unsubscribed, bounced, complained, rejected, or throttled).
- Stop condition: The user’s current sequence is cancelled because they converted. They’re not suppressed and stay eligible for other campaigns.
Both mechanisms are per-project. Suppression in one Adapty project doesn’t affect another.
Unsubscribe
Every email Adapty Mail sends includes an unsubscribe link in the footer.
- The user clicks the link. Adapty Mail opens a confirmation page.
- The user confirms. The backend marks the profile with
suppression_reason = 'unsubscribe', cancels the remaining sequence, and excludes the profile from future sends in the project.
The token in the unsubscribe URL encodes the profile_id and the scheduled_email_id, so no login is required.
Adapty Mail also sends the List-Unsubscribe: <URL>, <mailto:> header together with List-Unsubscribe-Post: List-Unsubscribe=One-Click. Gmail and Yahoo require this for bulk senders (RFC 8058). Clients that support the header offer a one-click unsubscribe button directly in the inbox — no confirmation page involved.
Automatic suppression
Adapty Mail listens for AWS SES delivery events via SNS and suppresses the user immediately on any of the following:
| Event | Reason code | What it means |
|---|---|---|
| Bounce | bounce | The email address is invalid, the mailbox is full, or the domain doesn’t exist. |
| Complaint | complaint | The user marked the email as spam. |
| Reject | reject | SES rejected the message before sending. |
| Throttle | throttle | Sending rate exceeded domain safety limits. |
For every event, the outcome is the same: the user is added to the suppression list, the remaining sequence is cancelled, and they’re excluded from future sends in the project.
Adapty Mail does not distinguish between hard and soft bounces. Any bounce — including temporary conditions like a full mailbox — suppresses the user immediately. There’s no retry window.
Stop condition
When a user converts mid-sequence, Adapty Mail cancels their remaining emails with the stop_condition reason. Conversion means their subscription state reaches Subscribed, or their one-time purchase state reaches Purchased.
Stop condition is different from suppression:
- Suppression: Excludes the user from all future sends in the project.
- Stop condition: Cancels only the current sequence. The user stays eligible for other campaigns — for example, a renewal or win-back flow targeting active subscribers.
Stop-condition cancellations appear alongside suppressions in campaign analytics.
Managing suppression
Adapty Mail has no dashboard UI to view or remove suppressed users. To unsuppress a profile — for example, someone who accidentally marked a test email as spam — contact Adapty support.
What Adapty Mail handles for compliance
Adapty Mail ships with:
- Unsubscribe link: Included in every email footer, processed immediately on user confirmation.
- List-Unsubscribe headers: Sent with every email for one-click unsubscribe from the inbox (RFC 8058).
- Automatic suppression: Triggered on SES bounce, complaint, reject, and throttle events.
Parts you’re responsible for:
- Physical mailing address: CAN-SPAM requires one in the email footer. Adapty Mail doesn’t inject it — add it in your campaign design.
- Explicit opt-in consent: Collect it before passing a user’s email to Adapty. See Collect user emails.
- GDPR erasure requests: Adapty Mail doesn’t expose a “delete my data” endpoint. Coordinate with Adapty support if a user invokes their right to erasure.