intermediate
suppression
bounces
complaints

Suppression List

How Engage tracks hard bounces, complaints, STOP keywords, and operator-added suppressions - per-subaccount and global tiers.

Levy Fleets TeamMay 18, 20266 min read

Suppression List

The suppression list is Engage's mechanism for never sending to addresses or phone numbers that have hard-bounced, complained, or opted out. Sending to those riders again would tank your deliverability reputation, so the list is enforced at dispatch time and cannot be overridden.

Navigation

View and manage the suppression list from Engage > Settings > Suppression List.

Two Tiers

Engage tracks suppressions at two scopes:

ScopeEffect
Per-subaccountSuppresses only sends from your operator account
GlobalSuppresses sends from any operator on the platform

Hard bounces and spam complaints add a global entry by default - the rider's mail server has flagged the address as a problem, and that's not specific to one operator. STOP keyword opt-outs also add a global entry, because TCPA requires honoring STOP across the sending number.

Operator-added suppressions (e.g., "this rider asked me on the phone to stop emailing them") add a per-subaccount entry only.

Identifier Normalization

Before lookup or insert, Engage normalizes every identifier:

IdentifierNormalization
EmailLowercase, trim whitespace
PhoneE.164 format (+15551234567)
Push tokenTrim whitespace

This prevents the same address from sneaking in via case differences (User@Example.com vs user@example.com).

What Adds an Entry Automatically

EventSourceTier
Hard bouncePostmark webhookGlobal
Spam complaintPostmark webhookGlobal
STOP / STOPALL / CANCEL / UNSUBSCRIBE / END / QUITTelnyx inbound SMSGlobal
Preference center "Unsubscribe All"Rider actionGlobal (per channel)
One-click List-UnsubscribeEmail client (Gmail, etc.)Global (email only)
Soft bounce repeated 5+ times in 30 daysEngage dispatcherPer-subaccount

Soft bounces alone don't suppress - they're often transient (mailbox full, server down) - but a pattern of repeated soft bounces gets the rider held in your subaccount until you investigate.

What Adds an Entry Manually

You can add a per-subaccount suppression from the dashboard:

  1. Go to Engage > Settings > Suppression List.
  2. Click Add Entry.
  3. Choose channel (email / sms / push) and enter the identifier.
  4. Add a reason (free text, shown in audit).
  5. Save.

You can also bulk-import via CSV.

What Happens at Send Time

For every recipient, the dispatcher checks the suppression list before calling the provider:

1. Lookup per-subaccount suppressions for (customer.email, channel=email)
   → If hit: skip, log "suppressed_subaccount"
2. Lookup global suppressions for (customer.email, channel=email)
   → If hit: skip, log "suppressed_global"
3. Lookup channel consent on subscription_preferences
   → If consent=false: skip, log "no_consent"
4. (SMS only) Check quiet hours
   → If 9 PM - 9 AM local: hold in queue
5. Otherwise: dispatch

Skipped sends are not failed sends - they are accounted for separately in analytics.

Removing an Entry

In limited cases you can remove an entry:

SourceRemovable?
Hard bounceNo - the email is verified-bad by the provider
Spam complaintNo - regulatory minefield
STOP keywordOnly the rider can reverse via a START keyword
Preference center opt-outOnly the rider can re-opt-in via the preference center
Manual per-subaccount entryYes - operator can delete
Soft-bounce auto suppressionYes after investigation

This is intentional. Auto-suppressions protect you and the rider; manual overrides would defeat the point.

Viewing the List

The suppression list page shows:

  • Identifier (masked: j***@example.com)
  • Channel
  • Reason
  • Tier (per-subaccount or global)
  • Created at
  • Last attempt (when was the last time you tried to send to them)

You can filter by channel, tier, or reason to spot patterns.

Why Deliverability Cares

Sending to addresses on the suppression list - even one or two per send - dramatically damages your sender reputation:

  • Gmail spam folder for the rest of your audience
  • Postmark sender suspension if you cross 0.1% complaint rate or 1% hard bounce rate
  • 10DLC SMS revocation for repeated STOP violations

The suppression list is the primary defense against all of these.

Cross-Subaccount Concerns

By default, global suppressions are platform-wide. If a rider complains about a send from operator A and complains again from operator B, both events go into the global pool.

For operators who specifically want isolation (e.g., a publicly-branded fleet that doesn't want neighboring operators' bad behavior affecting them), contact support to discuss segregation options.

Best Practices

  • Treat suppressions as data, not failures. A 1% hard bounce rate on a new segment is normal. A 10% rate means the list is dirty or stale - investigate.
  • Don't try to "reset" the list to send to bounced addresses again. They'll bounce again, and your reputation will get worse.
  • Audit the manual entries periodically. If you added someone to suppression in error six months ago, you can remove them now.
  • Use the import path for purchased lists with care - or better, don't buy lists. Engage is built for first-party riders, and purchased lists will spike your suppression rate immediately.

Need Help?

For suppression list help, contact support@levyelectric.com.