Before you buy a verification service, find out the two numbers your sending platform enforces: the bounce rate at which it reviews your account, and the complaint rate at which it pauses you. Those numbers define how clean your list has to be. Everything else about list hygiene is downstream of them.
Thresholds that are actually published
Amazon SES publishes the clearest ones. AWS reviews accounts when the bounce rate reaches 5% and when the complaint rate reaches 0.1%, and sending can be paused if rates keep climbing. You can see both live on the *Account dashboard* page of the SES console, where they are calculated over a representative recent volume rather than per campaign.
Google's published figure for bulk senders is a user-reported spam rate below 0.3%, visible in Postmaster Tools. Treat 0.1% as your working ceiling, because the rate is volatile at low volume and you want headroom.
SendGrid, Mailgun, Mailchimp and HubSpot do not publish a single hard number; they act on patterns, and in practice an account that trips SES's thresholds would trip theirs too. The safe planning assumption across every platform: under 2% hard bounces on an established list, under 0.1% complaints, and no single import that spikes either.
Where the suppression list lives
Every platform keeps a list of addresses it will refuse to send to again. These lists are the most under-read page in email tooling — they are a free, accurate record of exactly which addresses hurt you.
| Platform | Screen | What it holds |
|---|---|---|
| Amazon SES | *Suppression list* under the account, plus per-configuration-set overrides | Account-level bounces and complaints; you can add and delete entries via API |
| SendGrid | *Suppressions* → Bounces, Blocks, Invalid Emails, Spam Reports, Global Unsubscribes | Five separate lists; "Blocks" are usually reputation or content rejections, not bad addresses |
| Mailgun | *Sending → Suppressions* | Bounces, unsubscribes, complaints, per domain |
| Mailchimp | Contacts marked *Cleaned*, plus the unsubscribe list | Cleaned is automatic after a hard bounce or complaint and cannot be undone by re-import |
| HubSpot | *Bounced* contact filters and the graymail/unengaged segments | HubSpot stops marketing email to bounced contacts automatically |
Note the distinction SendGrid makes between a bounce and a block. A block is the receiver rejecting you, not the address being wrong — cleaning your list will not clear it, and running a verification pass over blocked addresses is wasted money.
What verification can and cannot detect
Verification services do a predictable set of checks, and it is worth knowing which results are facts and which are guesses:
- Syntax and domain checks — facts. A missing MX record means the domain cannot receive mail at all.
- SMTP probe (connect,
MAIL FROM,RCPT TO, neverDATA) — a fact only when the server answers honestly. Google Workspace and Microsoft 365 both deliberately give unhelpful answers to probes, which is why the largest slice of any B2B list comes back as "unknown" or "risky". - Catch-all domains — undecidable. The server accepts every address, so a probe proves nothing. Many corporate domains are catch-all.
- Spam traps — undetectable. A trap address is syntactically perfect and accepts mail. No verifier can flag one reliably; claims otherwise are marketing.
- Role accounts (
info@,sales@,support@) — detectable by pattern, and worth suppressing for outreach because they attract complaints.
So verification reduces hard bounces. It does not reduce complaints, does not remove traps, and does not fix a list that was bought rather than built.
The order to do this in
- Deduplicate and normalise before anything else. Lowercase, strip whitespace, drop addresses with no MX.
- Export your platform's existing suppression list and remove those addresses from the source system too, so your CRM stops handing them back.
- Verify, then treat the three buckets differently: delete invalid, suppress role accounts, and segment catch-all and unknown addresses into a separate low-volume stream rather than deleting them.
- Send to the engaged segment first on any new domain or IP, then widen. Bounce and complaint rates are ratios — the fastest way to keep them low is to put known-good traffic in the denominator early.
- Re-check monthly. B2B lists decay continuously as people change jobs.
What not to do
- Do not import a fresh list at full volume on day one. A single bad import can push an SES account past 5% in one send, and the review that follows is slow.
- Do not re-upload cleaned or unsubscribed contacts to "try again". Mailchimp will not re-add them, and on other platforms you are manufacturing complaints.
- Do not treat "risky" as "delete". On B2B domains that bucket is mostly catch-all corporate mail servers, which includes plenty of real buyers.
- Do not rely on open rates to judge list quality. Apple Mail Privacy Protection and image proxies inflate opens enough that the number cannot carry that weight.
MailPilot works on the sending side of this problem: it warms mailboxes over OAuth or SMTP so a new domain has reputation before volume arrives, measures real inbox placement per provider, and tracks per-mailbox reputation daily — so when bounces or complaints move, you can see which mailbox and which provider it started with.
Ready to reach the inbox every time?
Automated email warmup across real peer mailboxes. Live inbox placement monitoring. Free 7-day trial - no credit card required.
Start free trial