Every bounced email tells Gmail, Outlook and Yahoo the same thing: this sender doesn't know who it's emailing. Enough of them and your messages, including the ones to real, engaged recipients, start landing in spam.
This guide covers what a healthy bounce rate is, where bounces come from, and a checklist to get below 2% and stay there.
Hard bounces vs soft bounces
- Hard bounce: permanent failure. The mailbox or domain doesn't exist (
550 5.1.1 User unknown). Remove these addresses immediately; never retry them. - Soft bounce: temporary failure. The mailbox is full, the server is busy, or the message is too large (
452 4.2.2 Mailbox full). Retry a few times, and suppress the address if it keeps soft-bouncing.
Hard bounces are the ones that damage reputation, and most of them are preventable.
What's a good bounce rate?
| Bounce rate | What it means |
|---|---|
| Under 1% | Healthy list |
| 1 to 2% | Acceptable, but watch it |
| 2 to 5% | Deliverability problems likely; many ESPs will warn you |
| Over 5% | Expect spam-folder placement and possible account suspension |
Email service providers such as SendGrid, Mailgun, Amazon SES and Mailchimp monitor bounce rates and may pause sending accounts that go well above these levels.
Where bounces come from
- Typos at signup:
jane@gmial.com,jane@hotmial.com. - Disposable addresses that expire minutes after signup.
- List decay: people change jobs and companies shut down mailboxes. B2B lists lose a noticeable share of addresses every year.
- Bought or scraped lists, full of guessed and outdated addresses.
- Catch-all domains that accept at first and bounce later (more on catch-alls).
- Your own configuration: broken SPF or DKIM can cause rejections that look like bounces.
The checklist
1. Verify at the point of entry
The cheapest bounce to fix is the one that never enters your database. Verify addresses when they're submitted: signup forms, lead forms, CRM imports. Tell users about typos while they can still fix them.
const { deliverable, reason } = await verifyEmail(email); // POST /v1/verify
if (!deliverable) showError(reason);
See the Node.js guide or the Python guide for complete examples.
2. Verify every list before a campaign
Any list you haven't mailed in 3+ months, and every imported or purchased list, should be verified before sending. With the batch API that's up to 200 addresses per request, or upload a CSV in the dashboard.
3. Be strict with catch-all and unknown results for outreach
For cold email, send only to addresses that are confirmed deliverable. "Risky" results are exactly where hidden bounces come from. MailRambo already returns deliverable: false for them.
4. Suppress bounces automatically
Configure your ESP to add hard bounces to a suppression list immediately, and to suppress addresses after about 3 consecutive soft bounces. Sync that list back to your CRM so no other tool emails those addresses again.
5. Re-verify on a schedule
Re-verify active lists every 3 to 6 months, and B2B lists more often. It's much cheaper than the reputation damage from a bounce spike.
6. Fix your authentication
Make sure SPF, DKIM and DMARC are in place and aligned, or receivers may reject your mail outright. Check in seconds with the domain health checker, and read SPF, DKIM and DMARC explained.
7. Warm up new domains and IPs
A new sending domain that jumps straight to thousands of messages a day looks like spam, even with a clean list. Ramp up volume over a few weeks.
Measuring it properly
Calculate bounce rate as bounced / sent for each campaign, and track hard and soft bounces separately. Watch the trend, not just single campaigns: a slow climb usually means list decay, and a sudden spike usually means one bad import.
Summary
- Keep hard bounces under 2%, and ideally under 1%.
- Verify at entry, verify before every campaign, and be strict with catch-alls for outreach.
- Suppress bounces automatically, re-verify regularly, and keep SPF, DKIM and DMARC healthy.
Start with the free email verifier, or get a free API key for 100 verifications a month.