Email Bounce Rate Explained: Hard Bounces, Soft Bounces, and What to Do
Email bounce rate is one of the earliest warning signals of a list health problem. A rising bounce rate means real messages are failing to reach real inboxes — and if you ignore it long enough, mailbox providers will start treating your entire domain as a low-quality sender.
This post covers what hard and soft bounces actually are, how to calculate your bounce rate, what thresholds are considered acceptable, and the specific steps to bring a problematic rate back under control.
Hard Bounces vs Soft Bounces
The terminology comes from SMTP response codes defined in RFC 5321. The 4xx family are temporary failures (soft bounces); the 5xx family are permanent failures (hard bounces).
Hard bounces (permanent failures)
A hard bounce means the email cannot be delivered and will never be deliverable to that address. Common causes:
-
Address doesn’t exist:
550 5.1.1 The email account that you tried to reach does not exist - Domain doesn’t exist: The MX records for the domain can’t be found
- Address has been deactivated or deleted
Hard bounces are the dangerous ones. Every hard bounce is a signal to mailbox providers that your list has quality problems. Hard bouncing above 0.5% on a send will trigger spam filtering at Gmail and Outlook.
DexcyJet automatically suppresses hard-bounced addresses — once an address hard bounces, it goes into the global suppression list and will not be delivered to again.
Soft bounces (temporary failures)
A soft bounce means the delivery failed this time but may succeed on retry. Common causes:
-
452 4.2.2 Mailbox full— recipient’s inbox is over quota -
421 4.3.2 Service temporarily unavailable— the receiving mail server is temporarily down -
450 4.1.8 Domain does not exist— DNS lookup failed transiently
DexcyJet retries soft bounces automatically on an exponential backoff schedule. If an address soft bounces repeatedly across multiple sends (configurable, but typically 3–5 consecutive soft bounces), it gets suppressed as a chronic soft bounce — treated similarly to a hard bounce for list hygiene purposes.
Other bounce-adjacent categories
- Spam complaints (FBL): Not a bounce, but critically important. When a subscriber marks your email as spam, that feedback loop report is functionally worse than a hard bounce. Keep complaint rates below 0.08% (Gmail’s published threshold is 0.1%; stay below that).
- Blocked: Some receiving servers reject your email at the connection level due to IP/domain reputation. These look like bounces in your metrics but are a sender-reputation problem, not a list-quality problem.
How to Calculate Email Bounce Rate
Bounce rate = (Number of bounced emails / Number of emails sent) × 100
Be precise about your numerator: are you counting hard bounces only, or total bounces (hard + soft)? Most industry benchmarks cite hard bounce rate specifically. Soft bounces typically resolve on retry and shouldn’t be counted as failures unless they become chronic.
Example
You send a campaign to 12,500 subscribers.
- 87 hard bounces
- 143 soft bounces (40 of which resolved on retry, 103 remained)
Hard bounce rate: 87 / 12,500 × 100 = 0.70% — this is above the safe threshold. Action required.
Soft bounce rate (unresolved): 103 / 12,500 × 100 = 0.82% — worth investigating but less urgent.
In DexcyJet, the campaign analytics dashboard breaks bounces down by type and shows you which addresses contributed to each category, with the SMTP response codes so you can diagnose the root cause.
What Are Healthy Bounce Rate Thresholds?
| Bounce type | Acceptable | Warning | Critical |
|---|---|---|---|
| Hard bounces | < 0.5% | 0.5%–1.0% | > 1.0% |
| Soft bounces (chronic) | < 1.0% | 1.0%–2.0% | > 2.0% |
| Spam complaint rate | < 0.05% | 0.05%–0.1% | > 0.1% |
These thresholds come from Google’s Postmaster Tools guidelines and broadly align with what Mailbox Provider Compliance teams enforce. Note that these are per-campaign thresholds, not averages across your entire account.
6 Specific Steps to Reduce Bounce Rate
1. Use double opt-in for new subscribers
The single most effective prevention is confirming email addresses before they enter your active list. A confirmed subscriber has, by definition, a real, deliverable address. See our detailed breakdown of double opt-in vs single opt-in.
2. Validate emails at the point of collection
Use a real-time email validation API (ZeroBounce, NeverBounce, Hunter’s Verify) to check addresses as they’re submitted. At minimum, validate:
- Syntax (RFC 5322 compliant format)
- Domain MX record exists
- Mailbox existence (where the API supports it — not all do without a test message)
3. Clean lists before import
Before importing an old list into DexcyJet — from a previous platform, a tradeshow, or a historical CRM export — run it through a bulk validation service. Remove addresses that haven’t been engaged in 12+ months unless you have a specific re-engagement plan.
4. Suppress hard bounces immediately and permanently
DexcyJet does this automatically, but if you’re managing multiple sending platforms, you need a centralised suppression list. Export your suppression list regularly and apply it across all your senders. Sending to known hard bounces is one of the fastest ways to get your domain reputation tanked.
5. Apply a sunset policy for chronic soft bouncers
If an address has soft-bounced on three or more consecutive sends over 60+ days, it’s functionally dead. Suppress it. The address is either abandoned or the mailbox is permanently over-quota.
6. Warm up new sending domains and IPs
A common cause of elevated bounce rates on new accounts is sending too much too fast from a fresh IP or domain. Mailbox providers apply stricter filtering to new senders, and some addresses that would accept mail from established senders get deferred or bounced. Follow a proper warmup schedule — see our post on email warmup for new domains.
Reading Bounce Codes in DexcyJet
DexcyJet logs the full SMTP response for every bounce. In the Deliverability tab, you can filter by bounce code:
{
"event": "bounce",
"type": "hard",
"email": "user@example.com",
"smtp_code": 550,
"smtp_enhanced_code": "5.1.1",
"smtp_message": "The email account that you tried to reach does not exist",
"timestamp": "2026-03-15T08:42:11Z",
"provider": "gmail"
}
This event is also sent to your webhook endpoint so you can sync suppressions back to your CRM in real time. See the features page for webhook setup details.
For a broader view of what feeds into deliverability beyond bounce rates, read our post on 12 tactics to improve email deliverability.
Try DexcyJet: Automatic bounce handling, real-time suppression, and per-campaign delivery analytics are built in from day one. Start free — 2,000 emails/month on the Free plan.
Stay sharp on email deliverability.
Get new posts on email infrastructure, compliance, and engineering delivered directly. No spam — we eat our own cooking.
Try DexcyJet free →