Compliance & suppression

Opt-outs and bounces, honored automatically — on every future send.

Every send passes through a suppression check before dispatch, and every outbound email ships RFC 8058 one-click unsubscribe by default. Opt-outs, bounces, and complaints are honored automatically — there is no separate do-not-mail list to maintain and remember to apply.

Opt-out clickBounceComplaintSUPPRESSION LISTUnsubscribedBouncedComplaintNEXT SEND ATTEMPTSEND GATEBlockedEvery other address keeps sendingOther sendsDelivered

The problem

A suppression list that depends on memory isn’t a suppression list.

[ 01 ]

Manually maintaining a do-not-mail list doesn’t scale

A spreadsheet or CSV export of addresses to avoid is stale the moment someone unsubscribes after the last export — and someone has to remember to re-import it before every campaign send.

[ 02 ]

A missed opt-out is real legal exposure, not just bad etiquette

Re-mailing an address that already opted out isn’t just a deliverability problem — under CAN-SPAM, GDPR, and similar regimes, honoring an opt-out is a legal obligation, and “we forgot to update the list” is not a defense.

[ 03 ]

Bounces that go unhonored quietly poison future sends

A hard-bounced address that keeps getting re-mailed because bounce feedback never made it back into a suppression list is one of the most common self-inflicted reputation problems in cold outbound.

[ 04 ]

A list scoped to one campaign or domain isn’t really a suppression list

If an opt-out on Campaign A doesn’t block Campaign B, or an unsubscribe on Domain 1 doesn’t block a resend from Domain 2, the address was never actually suppressed — it just looks that way until the next campaign proves otherwise.

How it works

Captured, suppressed, and enforced on every send — automatically.

Suppression is a hard gate inside the pipeline itself, not a list someone has to remember to check.

Every signal feeds one table, automatically

A hard bounce, three soft bounces within 14 days, a mailbox-provider spam complaint, and an RFC 8058 unsubscribe click all insert a row into suppressions with no human step in between — reason and origin_event recorded with each one.

BounceComplaintUnsubscribesuppressionsone table

The intersect stage checks it before every send

Stage 2 of the pipeline calls suppressions.isSuppressed() before verification or dedup even run — a suppressed lead is rejected with reason: ‘suppressed’ and never reaches personalization, let alone dispatch.

Suppression matches by email and by domain, everywhere

The check matches the recipient’s exact address or its whole domain, and the table isn’t scoped to a campaign — a suppression added under one campaign blocks that address on every campaign after it, from any sending domain in the pool.

Exact addressWhole domainSUPPRESSEDevery campaign · every domain

RFC 8058 one-click unsubscribe on every email

Every send carries List-Unsubscribe and List-Unsubscribe-Post: One-Click headers pointing at an HMAC-signed, per-recipient token — the same link Gmail’s and Outlook’s built-in Unsubscribe button hits directly, plus a mailto: fallback for older clients.

The mechanism, live

The list fills itself. Every send checks it.

An illustrative example: bounces, complaints, and unsubscribe clicks land in the same suppression table automatically, with no manual export or re-import step.

Suppression list — liveIllustrative
  • outreach@northfield.example

    Hard bounce · mailbox does not exist

    bounce_hard2m ago
  • hello@ridgeline.example

    RFC 8058 one-click unsubscribe

    unsubscribe14m ago
  • @parklane.example (domain)

    3rd soft bounce in 14 days

    bounce_soft_repeat1h ago
  • sales@westgate.example

    Recipient marked the message as spam

    reply_negative3h ago
  • info@millbrook.example

    Manual GDPR erasure request

    gdpr_request1d ago

[ 01 ]

6

Suppression reasons tracked automatically

[ 02 ]

3 in 14 days

Soft bounces before an address auto-suppresses

[ 03 ]

Stage 2 of intersect()

Where every send is checked

Always enforced

Once suppressed, never re-mailed.

Every opt-out, bounce, and complaint lands in the same table the moment it happens — and every future send, from any campaign, on any domain in the pool, is checked against it before it can go out. You never have to remember to apply it.

Enforced at
Every send, before dispatch
Fed by
Bounces, complaints, opt-outs
Scope
Every campaign, every domain

FAQ

Questions about suppression.

Immediately — the one-click unsubscribe link or a mailbox provider’s built-in Unsubscribe button hits the token-verified route synchronously and inserts the suppression row before responding. The very next lead ingested or campaign run that touches that address is blocked at the intersect gate. There’s no batch job or delay in between.

Across all of them. The suppressions table isn’t scoped to a campaign or a domain — the intersect check runs the same lookup regardless of which campaign or which pooled sending domain is about to send, so an opt-out or bounce recorded anywhere blocks that address (or, for a domain-level entry, that whole domain) everywhere, going forward.

Every outbound message carries a List-Unsubscribe header with two targets — an HTTPS URL and a mailto: address — plus List-Unsubscribe-Post: One-Click, which tells Gmail and Outlook they can trigger the unsubscribe with a single POST and no page load. Both targets carry the same HMAC-SHA256-signed token, and either one lands on the same suppress() logic.

No — they’re separate guardrails for separate failure modes. Suppression stops individual bad sends to a specific address or domain before they happen; the circuit-breaker (see /features/reputation-circuit-breaker) watches aggregate, domain-level reputation signals and pauses a whole sending domain’s outbound traffic when it drifts.

The other guardrail watching your sending reputation: the reputation circuit-breaker.

Your leads deserve to reach an inbox.

Every email you send without protection is a gamble on whether it reaches the inbox at all. Bring your leads — CogniLead handles the warmup, the safety checks, and the cleanup, so you don't have to think about deliverability again.

100 sends a month, free forever · no credit card · cancel any time

Suppression & one-click unsubscribe — CogniLead