Suppressions and unsubscribe
How global, account and stream suppressions work, how to manage them, and how one-click unsubscribe works on marketing streams.
A suppression list holds addresses that must not receive mail. Before each message is sent, every recipient is checked against it. A suppressed recipient is refused: the HTTP API returns it in rejected, and SMTP answers 550 5.7.1 Recipient is on a suppression list. Suppressed recipients don't count against your quota.
Suppression scopes
| Scope | Console label | Applies to | Added by | Who can remove it |
|---|---|---|---|---|
| Global | Global | Every stream of every Yeap Cloud account | Hard bounces and spam complaints, automatically | Support only |
| Account | Account; Whole account when adding | All streams on your account | You | You |
| Stream | This stream | One stream | Unsubscribes (automatically), you, or the API | You |
Each entry also has a reason:
| Reason | Console label | Source |
|---|---|---|
hard_bounce | Hard bounce | A permanent delivery failure. Soft bounces, such as a full mailbox, aren't suppressed. |
complaint | Complaints | The recipient reported a message as spam |
unsubscribe | Unsubscribed | The recipient unsubscribed through the link or the mail app's unsubscribe button |
manual | Manual | Added by you in the console or with the API |
Categories
An entry can apply to all mail or to one category only. A recipient who unsubscribes from a message with the category newsletter stops getting newsletter mail from that stream, but still gets, for example, order mail. An entry without a category blocks all mail to the address.
Manage the list in the console
Open the stream and go to the Suppression list tab. It shows the account and stream entries with their Scope, Reason, category; All means all categories and time. You can filter by email, reason and scope.
Global entries are only listed when you search for the full email address. They're marked Read-only.
To add addresses:
- Click Add to open Add to suppression list.
- Enter the addresses, one per line, up to 1,000 at a time.
- Under Scope, choose This stream or Whole account.
- Optionally, open Advanced and enter a category under Block this category only.
- Click OK.
To remove an entry, click Remove on its row and confirm. You can send to the address again afterwards.
Only remove an address when you know it's valid again, for example after the recipient has asked you to resume sending. Sending to addresses that bounced or complained hurts your delivery rate and can pause your stream.
You can also manage stream entries with the suppressions API.
Unsubscribe on marketing streams
Marketing streams always include a working unsubscribe option. It can't be turned off.
Postal address
Before a marketing stream can send through the HTTP API, fill in the Sender postal address on the Marketing settings tab: the physical address of your business. Until it's set, the API refuses messages with postal_address_required and the Overview tab shows a reminder.
What's added to each marketing message
| HTTP API | SMTP | |
|---|---|---|
List-Unsubscribe header with an https://u.tm.yeapcloud.net/u/… link | Added | Added, replacing any value you set |
List-Unsubscribe-Post: List-Unsubscribe=One-Click (RFC 8058) | Added | Added |
| Footer with your postal address and an "Unsubscribed / Unsubscribe" link | Added to the HTML and text parts | Not added: include the address and an unsubscribe link in your content |
Both headers are covered by the DKIM signature. Mail apps such as Gmail and Outlook use them to show their own unsubscribe button, which unsubscribes the recipient with one click.
The unsubscribe page
The footer link opens a page that shows the recipient's address (and the category, if the message had one) with a Confirm unsubscribe button. Opening the link doesn't unsubscribe anyone by itself, so link scanners in mail filters can't unsubscribe recipients by accident. The recipient has to click the button.
After unsubscribing:
- The address is added to the stream's suppression list with the reason
unsubscribeand the message's category. If the message had no category, all mail from the stream to that address is blocked. - The message's
unsubscribed_atis set and anunsubscribedwebhook event is sent.
Categories for marketing mail
On the Marketing settings tab you can list your mail categories under Email categories: click Add category, enter a code (letters, digits, ., _, -) and a Display name, and click Save. Send each message with the matching category (HTTP API) or X-Yeap-Category header (SMTP), so recipients can unsubscribe from one kind of mail and keep the others.
The same tab has the Open tracking and Click tracking switches, which set the default for messages that don't specify track_opens or track_clicks.
Transactional streams
Transactional streams don't add unsubscribe headers or footers, because recipients need messages such as password resets and receipts. Use a transactional stream only for mail the recipient expects as part of using your service. Newsletters and promotions belong on a marketing stream.