Checked at send, not at import#
The difference decides whether the list works. Filtering at import means anything already queued when someone unsubscribes still goes out, and a sequence enrolled last week ignores this week's opt-out entirely. Checking immediately before each individual send is the only version that cannot be raced.
It is also the cheaper check to reason about: one lookup, one decision, at the last possible moment, applied identically to sequences, campaigns and one-off mail.
What belongs on it#
Four sources, and each should record which one it came from:
- Unsubscribes, including replies that plainly ask to be removed rather than only clicks on a link.
- Hard bounces — the address does not exist, and sending again is a reputation cost with no upside.
- Complaints, which are the strongest possible signal and the most expensive to ignore.
- Manual entries: competitors, existing customers, anyone a colleague has asked you not to contact.
Suppression is not erasure#
A suppression entry is data you keep in order to honour a request. Deleting it would mean forgetting the opt-out and eventually sending again, which is why it is legitimate to retain — and why it is the wrong answer to a request for erasure.
Keep both mechanisms, keep them separate, and make sure the person asking gets the one they actually asked for.
Suppression list in SalesShift#
SalesShift keeps a workspace-level suppression list checked before every send, with the reason recorded — unsubscribe, hard bounce, complaint or manual. Replies that read as removal requests are suppressed automatically by reply detection, and the hosted unsubscribe page writes to the same list.
Further reading#
See it running
Signals, prospect search, sequences, deliverability and pipeline on one record.