Data QA: Bounce Risk Scoring
Diagnose why your list contains high-risk emails, score every address by bounce probability, and apply sending rules before your sender reputation takes the damage.
Fast Diagnosis
Catch-all addresses are the #1 cause of bounce risk
The most common cause: catch-all domains sent to without a risk tier applied. Catch-all servers accept every incoming email without confirming the individual mailbox exists, so verification returns "catch-all" not "valid." Bounce rates exceed 5% within a single campaign if this segment runs untreated.
Root Causes
6 root causes that build bounce risk in outbound lists
| Root cause | How to confirm | Urgency |
|---|---|---|
| Catch-all addresses sent as valid | Verification output: over 15% flagged "catch-all" or "risky" | High |
| No verification before send | No verification date or output file in the list's history | High |
| Stale list (over 90 days old) | Last verification date more than 90 days before current send date | High |
| No post-verification risk tier applied | Sending to all non-"invalid" statuses without a scoring layer | Medium |
| Toxic or spam-trap addresses in list | Bouncer toxicity score above 2/5 on any segment, or spam-trap detection triggered | High |
| Data source with low inherent accuracy | Provider accuracy below 90% or no accuracy guarantee published | Medium |
Bouncer's toxicity scale (0-5) covers spam traps, blocklisted addresses, and known complainers. Any address scoring 3 or above must be suppressed before the list activates. Sending to a known trap flags your sending domain with major mailbox providers within one campaign.
The Fix
5-step bounce risk scoring framework for every list
Work through these steps in order. Steps 1 and 2 apply to every list. Steps 3 and 4 apply if catch-all or risky addresses make up more than 10% of your list.
- Step 1: Run a full bulk verification pass
Upload your list to Bouncer, ZeroBounce, NeverBounce, Emailable, or Clearout. Each address returns a status: valid, invalid, catch-all, risky, unknown, or disposable. Do not send until this pass is complete.
- Step 2: Apply a bounce risk tier to every address
Tier 1 (send): valid only. Tier 2 (limit or test): catch-all and risky. Tier 3 (suppress): invalid, disposable, unknown, and any address with a toxicity score of 3 or above. Add a tier column to your list before loading leads into the sending tool.
- Step 3: Handle catch-all addresses with a controlled test
Route Tier 2 catch-all addresses to a secondary sending domain. Send a test batch of 50 to 100 addresses per domain and check bounce rates before releasing the full catch-all segment.
- Step 4: Re-verify lists older than 90 days before reuse
Run the full bulk verification pass again on any list not actively sending for 90 or more days. Use the "last verified" or "data freshness" field from your data source as the re-verification trigger.
- Step 5: Set a 3% bounce threshold in your sending tool
Instantly and Smartlead both support bounce detection thresholds that pause a campaign automatically. Set a hard stop at 3%. A pause triggered by bounce rate is always a data QA signal, not a deliverability configuration issue.
Verification confirms whether a server accepted or rejected an address. Bounce risk scoring adds domain behavior, historical bounce patterns, and toxicity signals. The scoring layer in Step 2 prevents repeated exposure to the same risk.
Prevention
3 rules to keep bounce risk out of your next list
Verify at the enrichment stage, not just before sending. Add a verification column inside your Clay or Findymail workflow so risk data travels with every lead record from the start.
Establish a 90-day re-verification rule for any list not actively sending. Add a "last verified" date field and flag any contact past 90 days before including them in a new sequence.
Add a formula column in Clay that maps verification status to Tier 1, 2, or 3. Set your Instantly or Smartlead filter to push only Tier 1 rows. This runs bounce risk scoring automatically on every table refresh without manual review.
FAQ
5 questions on bounce risk scoring, answered
Five items: verification pass within 90 days, bounce risk tier column populated for every row, Tier 3 addresses in suppression, Tier 2 routed to a secondary domain for testing, and bounce threshold set to 3% in the sending tool. Any unchecked item means the campaign runs without a data quality gate.
Valid: send on primary domain. Catch-all or risky: route to secondary domain, test 50 to 100 per domain, suppress any domain where the test batch exceeds 3% bounces. Invalid, disposable, or toxicity score 3+: always suppress.
Bouncer provides the deepest catch-all handling and toxicity scoring on a 0-5 scale. Findymail offers a bounce-rate guarantee below 5% on verified results. ZeroBounce allows additional catch-all scoring at 1 credit per address as a secondary step.
Set your sending tool to pause at 3%. Google and Microsoft use hard bounce rate signals for domain reputation scoring, and a single campaign exceeding 5% on Gmail-hosted addresses can depress inbox placement for subsequent sends.
Apollo and Clay cover core verification statuses including catch-all detection. They lack toxicity scoring and spam-trap detection depth. Use a dedicated tool like Bouncer when catch-all rates are high, lists come from multiple sources, or your domain is already under pressure.
Bounce risk scored. Next: verify the full data quality chain.
The Data Quality to Deliverability guide covers the upstream root causes that produce risky lists before verification is ever needed.