Email scrubbing: how to clean a list without losing the subscribers worth keeping
Quick answers
- Scrubbing vs. verification? Verification confirms an address exists; scrubbing also removes addresses that exist but won't engage.
- How often? Quarterly is the floor for active marketing lists; before any major send is the practical minimum.
- Will I lose revenue? Short-term yes (smaller send), long-term no (better inbox placement on the remaining list usually nets out positive within two campaigns).
Scrubbing vs. verification — what's actually different
The two terms are often used interchangeably, but they answer different questions.
Verification asks: does this mailbox exist and accept mail right now? It's a synchronous, address-by-address check. The verifier returns a verdict — Valid, Risky, Invalid — based on syntax, MX records, SMTP probe, and reputation lookups.
Scrubbing asks: should this address be on my marketing list at all? It includes verification, plus engagement filtering (no opens in 12 months), plus sub-status filtering (role-based addresses, catch-all domains, known complainers).
A list that has been verified but not scrubbed will still contain valid mailboxes nobody is reading. A list that has been scrubbed but not verified will still contain occasional addresses that bounce. Most teams need both, run together.
When to scrub a list
Run a full scrub in any of these situations:
- Bounce rate on a recent campaign exceeded 2%
- Open rate has dropped 20%+ over the past three campaigns
- The list has been imported from a new source (CSV upload, lead-gen vendor, tradeshow)
- It's been more than 90 days since the last scrub
- You're warming a new sending domain or IP
- You're about to send to the full list for a major launch
Run a partial scrub (verification only, no engagement filter) before any send to a segment that hasn't been mailed in 60+ days. Mailbox decay is real and silent; addresses that worked in March may not work in May.
What scrubbing actually removes
Six categories of addresses are typically removed in a thorough scrub:
| Category | What it is | Why remove |
|---|---|---|
| Invalid syntax | Doesn't match RFC 5322 | Will never deliver |
| Dead domain / no MX | Domain doesn't accept mail | Will never deliver |
| Hard-bounced previously | Address rejected by server | Permanent failure, will repeat |
| Disposable / temporary | Mailinator, Guerrilla, Temp-Mail, etc. | Won't be read |
| Spam-trap candidates | Recycled or honeypot addresses | Damages reputation severely |
| Long-term unengaged | No opens or clicks in 12+ months | Drags down deliverability metrics |
Optional categories that depend on your sending strategy:
- Role-based (
info@,sales@,support@) — keep for B2B SaaS, drop for consumer marketing - Catch-all domains — score and decide per the catch-all guide
- Free-provider addresses on a B2B list — sometimes drop, sometimes keep
The 7-step scrub process
Action checklist for a full scrub:
- Export the list to CSV (one address per row, plus engagement columns if available).
- Run the file through user.cleaning's bulk verifier or equivalent.
- Drop everything verdict = Invalid; tag everything verdict = Risky for a per-segment decision.
- Filter by engagement: drop addresses with zero opens or clicks in the past 12 months.
- Suppress role-based addresses if your strategy targets individuals only.
- Re-import the cleaned list into your ESP, replacing the old segment.
- Document what was removed and why — you'll want the baseline for the next quarterly scrub.
A typical scrub on a year-old marketing list of 100,000 contacts removes 15,000–25,000 addresses across these categories. The remaining list usually improves open rate by 20–40% because the inactive contacts were dragging the average down.
API scrubbing vs. batch CSV scrubbing
Two operating modes; pick based on volume and frequency.
Batch CSV scrubbing is the right default for periodic cleans (monthly or quarterly). Export the list, upload to a verifier's web UI, wait, download the cleaned file, re-import. user.cleaning's bulk endpoint handles up to 1M addresses per file with results back in minutes. This works for any team and requires no engineering.
API scrubbing is the right default for continuous list hygiene. Each new signup is verified before being added to the list; each bounce is suppressed automatically; addresses that go inactive for X months are removed by a scheduled job. user.cleaning's verification API returns the same verdict shape as the batch tool. This requires engineering setup but eliminates the periodic-scrub overhead.
The hybrid model — API for new signups, quarterly batch for the existing list — is what most growing teams settle on.
Cost vs. benefit math
A typical mid-market list of 250,000 contacts:
- Cost of bulk scrub: roughly $250–$1,000 depending on vendor and verdict mix
- Time investment: 30 minutes to upload, wait, re-import
- Typical removal: 30,000–50,000 addresses (12–20% of list)
- Open-rate lift on the remaining list: 20–40%
- Bounce-rate reduction: usually below 1% from a starting point of 3–5%
The ROI math is straightforward: if open rate goes from 18% to 24% on a list that drives any meaningful revenue per send, the scrub pays for itself on the first campaign.
What scrubbing doesn't fix
Scrubbing fixes list quality. It does not fix:
- Authentication problems (SPF, DKIM, DMARC misalignment)
- Sender-reputation damage already done
- Content that trips spam filters
- IP-level reputation if you're on a shared sending IP
A list that's been scrubbed but mailed from a domain with broken SPF will still see the same deliverability problems. Scrub the data, then audit the infrastructure. The full deliverability checklist is in email deliverability best practices.
How often should you scrub, by list type
| List type | Recommended cadence |
|---|---|
| High-volume marketing (>1M sends/mo) | Monthly |
| Mid-volume marketing (100k–1M/mo) | Quarterly |
| Transactional only | At signup + every 6 months |
| Cold-outreach (B2B sales) | Before every major send |
| Newsletter under 10k subscribers | Every 6 months |
| Re-engagement campaigns | Always before send |
These are floors, not optimums. Teams sending to the same list more frequently or that observe bounce-rate drift between scheduled cleans should run an interim verification pass.
FAQ
What's the difference between email scrubbing and email scrub?
Same thing. "Scrub" is the verb form, "scrubbing" is the noun. Both refer to cleaning a marketing list.
Is email scrubbing the same as list cleaning?
Practically yes. Some vendors use "list cleaning" for batch processing and "scrubbing" for continuous, but the underlying work is identical.
What does an email scrubbing API do?
The same checks as a batch tool, accessible programmatically. You call the API per address (or per batch) and get back the verdict in real time. user.cleaning's verification API is one example.
How much does it cost to scrub a list?
Roughly $1–$8 per 1,000 addresses depending on volume and vendor. Most charge only for verdicts you act on; addresses returned as Invalid often don't count against your credit.
Will scrubbing hurt my numbers?
Short term, yes — the list gets smaller. Medium term, no — open rate, click rate, and inbox placement on the remaining list improve enough that total engagement usually goes up within two campaigns.
Can I scrub for free?
For small lists (<1,000 addresses), the free user.cleaning verifier covers single-address checks. For larger lists, free tiers from most vendors cover ~100–500 verifications.
What's the most overlooked scrubbing target?
Long-term unengaged contacts. Most teams scrub for invalid and disposable but keep stale opted-in subscribers on the list, which silently drags down deliverability metrics.
Run a scrub on any list with the user.cleaning bulk verifier or via API.