Blog/ Deliverability & authentication

Hard Bounce vs Soft Bounce: How to Handle Each Correctly

Nafiul HasanNafiul Hasan· 15 min read
Diagram comparing hard bounce vs soft bounce handling: a permanent 5xx failure routed to immediate suppression and a temporary 4xx failure routed to a retry schedule

The short answer

A hard bounce is a permanent failure — SMTP 5xx, an invalid address — so suppress it on the first bounce and never send to it again. A soft bounce is a temporary failure — SMTP 4xx, like a full mailbox — so retry it on a decaying schedule, then suppress it if it keeps failing for several days.

How to handle hard bounces vs soft bounces: suppress hard bounces on the first failure, retry soft bounces on a decaying schedule, watch domain patterns.

On this page
  1. 01The short version: suppress hard, retry soft, watch the domain
  2. 02Hard bounce vs soft bounce at a glance
  3. 03What actually makes a bounce hard or soft?
  4. 04How to handle a hard bounce: suppress on the first failure
  5. 05The whole handling decision in one flow
  6. 06How to handle a soft bounce: retry, then suppress
  7. 07How many soft bounces before suppressing an address?
  8. 08When soft bounces are a reputation signal, not a mailbox problem
  9. 09What bounce rate is too high?
  10. 10The third category: a block that only looks like a hard bounce
  11. 11Who these rules are for — and where AI Emaily fits

Every email you send can end three ways: it gets delivered, it gets deferred and tried again, or it fails outright. The two ways it fails are the hard bounce and the soft bounce, and knowing how to handle hard bounces vs soft bounces is the difference between a clean sender reputation and a slow slide into the spam folder. Handle them backwards — retrying a dead address or deleting a temporarily-unreachable one — and you either burn reputation or lose real recipients.

The short answer is not complicated, and this guide leads with it. Suppress hard bounces on the very first failure, because the address is permanently bad and retrying it only signals carelessness to the receiving server. Retry soft bounces on a widening schedule, because the problem is temporary and usually clears on its own — and only suppress them after a run of failures.

The part most articles miss is the third rule: when many addresses at one domain soft-bounce at once, that is rarely a hundred dead mailboxes. It is the receiving server throttling you, which is a reputation signal, not a list-hygiene problem. This post gives you the concrete retry and suppression rules for each, grounded in the SMTP standards that define the two categories in the first place.

The short version: suppress hard, retry soft, watch the domain#

If you only take three rules from this page, take these. They are the whole handling policy in miniature, and the rest of the post is the reasoning and the exact thresholds behind them.

  • Hard bounce (5xx): suppress the address immediately and permanently. It is invalid, and the SMTP standard says a permanent failure must not be retried. Retrying it hurts you.
  • Soft bounce (4xx): let your sending system retry it on a decaying schedule. The condition — a full mailbox, a server hiccup, a rate limit — usually clears. Suppress only after it keeps failing for several days.
  • A cluster of soft bounces from one domain: stop treating it as a mailbox problem. When many addresses at the same provider defer at once, the receiver is throttling your mail, and the fix is your reputation and authentication, not your list.

Hard bounce vs soft bounce at a glance#

Both are non-delivery reports, and both arrive as a message telling you your email did not reach someone. The difference is whether the failure is permanent or temporary — and that single fact decides everything about how you respond.

Hard bounceSoft bounce
SMTP reply code5xx — permanent4xx — temporary
What the code meansDo not retry (RFC 5321, 5yz)May be retried later (RFC 5321, 4yz)
Enhanced status class5.X.X permanent failure (RFC 3463)4.X.X persistent transient (RFC 3463)
Typical causeAddress does not exist, domain invalid, hard blockMailbox full, server down, greylisted, rate-limited
Will retrying help?No — the condition will not clear on its ownOften — the condition is temporary
Correct handlingSuppress on the first failureRetry on a decaying schedule
When to suppressImmediately, after one bounceAfter repeated failures over several days
What one tells youA single dead addressA mailbox issue — or, domain-wide, a reputation issue

What actually makes a bounce hard or soft?#

The two categories are not a marketing convention. They come straight from the SMTP standard, and the receiving server tells you which one you got through its reply code. Getting the handling right starts with reading that code correctly.

RFC 5321, the SMTP standard, splits reply codes by their first digit. A code that starts with 4 is a Transient Negative Completion: the action did not happen, but "the error condition is temporary, and the same command may be retried later." A code that starts with 5 is a Permanent Negative Completion: the action did not happen and "the same command MUST NOT be retried." That is the entire hard-versus-soft distinction in one sentence — 4xx invites a retry, 5xx forbids one.

RFC 3463 adds a more detailed enhanced status code, like 5.1.1 or 4.2.2, on top of the basic reply. It defines the 5.X.X class as a permanent failure — one that is "not likely to be resolved by resending the message in the current form" — and the 4.X.X class as a persistent transient failure, where the message is valid but a temporary condition has delayed it. When you read a bounce message, the leading digit of either code is the first thing to check.

The first digit does the work

You do not need to memorize every code. 4xx means temporary — the sending server should retry, and so should you. 5xx means permanent — do not retry, suppress the address. The rest of the code (like 5.1.1 for "no such user") tells you why, which is useful for diagnosis but does not change the hard-versus-soft rule.

How to handle a hard bounce: suppress on the first failure#

Hard-bounce suppression best practice is refreshingly blunt: one strike and the address is out. A 5xx permanent failure means the mailbox does not exist, the domain is invalid, or the server has permanently refused the message. None of those get better with a second attempt, and the standard itself says a permanent failure must not be retried.

The reason to suppress immediately is not tidiness — it is reputation. Mailbox providers watch how you treat known-bad addresses. Continuing to send to an address that already returned a permanent failure looks like a sender who does not clean their list, which is exactly the profile of a spammer working from a purchased list. That behavior pushes down your sender reputation and, with it, your inbox placement for everyone else on the list.

  1. 1

    Confirm it is a 5xx

    Check the reply code in the bounce. A leading 5 (and a 5.X.X enhanced code) is a hard bounce. A leading 4 is not — do not suppress it here.

  2. 2

    Add the address to your suppression list

    Move it to a permanent do-not-send list immediately. Most email service providers do this automatically for hard bounces; confirm that yours is enabled rather than assuming it.

  3. 3

    Never re-import it

    A suppression list only works if a later upload cannot resurrect the address. Suppress at the account level so a fresh CSV import does not quietly add the dead address back.

  4. 4

    Investigate a spike

    A handful of hard bounces per send is normal list decay. A sudden spike usually means a bad import, a typo in a signup form, or a list you should not be mailing at all.

Do not confuse a hard bounce with a block

Some 5xx replies are reputation blocks, not dead addresses — the mailbox is real, but the receiver refused your mail. Suppressing those hides a reputation problem instead of fixing it. There is a section on this below; check the wording of the bounce before you suppress a valid-looking address.

The whole handling decision in one flow#

Before the soft-bounce rules, here is the entire policy as a single decision. Read the code, split on the first digit, and the two paths almost handle themselves.

Decision flow for handling a bounce: a permanent 5xx hard bounce goes straight to the suppression list, while a temporary 4xx soft bounce is retried on a decaying schedule and only suppressed if it keeps failing after several days
Hard bounces exit on the first failure; soft bounces get a retry window before they do.

How to handle a soft bounce: retry, then suppress#

A soft bounce is a temporary failure, so the correct response is patience, not deletion. The address is probably fine — the mailbox was full, the server was briefly down, the receiver was greylisting new senders, or you hit a rate limit. Give the condition time to clear and try again.

In practice, your sending server does most of this for you. When a message gets a 4xx, the mail server queues it and retries on a widening interval — a short gap at first, then longer ones. Most servers keep retrying for roughly four to five days and then give up, at which point the temporary failure is finally reported back to you as a permanent one (a "delayed, then failed" bounce). Those exact intervals are configurable and vary by server, but the shape is always the same: try, back off, try again, give up.

AttemptRoughly whenWhat is happening
1ImmediatelyFirst delivery attempt gets a 4xx and is queued
2~15–30 minutes laterA common minimum gap before the first retry
3 to nWidening gaps over hoursThe server backs off further between each try
Give upAfter ~4–5 days of failuresSending stops; the message returns as a failed bounce

How many soft bounces before suppressing an address?#

There is no single standard number, and any article that gives you one as gospel is guessing. What matters is that you pick a consistent threshold and apply it. A workable rule most senders can defend: suppress an address once it soft-bounces on every attempt across a defined window — commonly around three to five consecutive sends, or after it has been soft-bouncing continuously for the same four-to-five-day window your mail server uses before it gives up.

So should you remove soft bounces from your list? Not on the first one, and not the second. A single soft bounce is noise. A pattern of them from the same address, with no successful delivery in between, means that mailbox is effectively dead even though it never returned a clean 5xx — and at that point it belongs on the suppression list just like a hard bounce. The judgment call is the count and the window, not the eventual action.

One nuance decides whether your threshold works: count consecutive failures, not total ones. An address that soft-bounced once last month and delivers fine today is healthy. Reset the counter every time a message lands, and only suppress when the streak of failures with no delivery in between crosses your threshold.

When soft bounces are a reputation signal, not a mailbox problem#

Here is the rule almost no bounce guide states plainly. A soft bounce from one address is a mailbox problem. A wave of soft bounces from many addresses at the same domain, all at once, is usually not. It is that provider throttling your mail, and treating it as a list-hygiene issue sends you fixing the wrong thing.

The tell is in the timing and the wording. If a hundred Gmail addresses defer within the same hour, with 4xx replies mentioning rate limits, temporary deferral, or reputation, those mailboxes are almost certainly fine. Gmail is slowing you down because something about your sending looks risky — a volume spike, a jump in spam complaints, or broken authentication. Suppressing those addresses would delete valid recipients while ignoring the actual problem.

When you see a domain-wide soft-bounce cluster, stop cleaning the list and check your reputation instead. Confirm SPF, DKIM, and DMARC are aligned, look at your spam-complaint rate in the provider's postmaster tools, and check whether your send volume just jumped. The soft bounce is the symptom; your sender reputation is the disease.

What bounce rate is too high?#

Two numbers get confused here, so separate them. There is your bounce rate — the share of sends that fail — and there is your spam-complaint rate, which the big mailbox providers actually publish thresholds for. They are not the same measurement, and only one of them has hard published limits.

For bounce rate itself, there is no official cross-provider ceiling. The widely used industry rule of thumb is to keep hard bounces under about 2% and investigate anything above that, because a high bounce rate signals a stale or purchased list — which is a reputation risk in its own right. Treat 2% as a convention to act on, not a published law.

The numbers that are published are complaint rates, and Gmail's are the ones to know. As of August 2026, Google's sender guidelines tell bulk senders — those sending 5,000 or more messages a day to personal Gmail accounts — to keep the spam rate reported in Postmaster Tools below 0.10% and to "avoid ever reaching a spam rate of 0.30% or higher." These are complaint thresholds, not bounce thresholds, but they are the reputation numbers a high bounce rate ultimately threatens.

ProviderWho the rules targetWhere to verify (at send time)
Gmail5,000+ msgs/day to personal Gmail; spam rate under 0.10%, never 0.30%; SPF+DKIM+DMARC; one-click unsubscribeGoogle sender guidelines
YahooBulk senders; authentication, low complaint rate, one-click unsubscribeYahoo Sender Hub
Microsoft (Outlook.com)5,000+ msgs/day; SPF+DKIM+DMARC required; non-compliant bulk can get 550 5.7.515Outlook.com Postmaster

These thresholds move — verify before you rely on them

Sender requirements have tightened repeatedly, and enforcement is stricter than most articles report: Google has escalated to temporary and permanent rejections for non-compliant bulk traffic, not just spam-foldering. The figures above are current as of August 2026. Always confirm the live numbers on each provider's own postmaster page before making a decision from them.

The third category: a block that only looks like a hard bounce#

Hard and soft is the useful split, but there is a third case that hides inside the hard-bounce category and deserves its own handling. It is the block bounce — a 5xx rejection where the address is perfectly valid, but the receiver refused your message on reputation or policy grounds.

You can usually tell a block from a true dead address by the wording of the bounce. "No such user" or "mailbox unavailable" (often 5.1.1) is a genuine hard bounce — suppress it. But "message blocked," "spam content," "policy rejection," or a code like Gmail's 550 5.7.26 or Microsoft's 550 5.7.515 means the mailbox exists and your mail was turned away. Suppressing those addresses is exactly the wrong move: you would remove real recipients and leave the actual problem — your authentication or reputation — untouched.

Same 5xx code, opposite handling
5.1.1 no such userThe address does not exist. A true hard bounce — suppress it immediately.
550 mailbox unavailableThe recipient is gone or disabled. Treat as a hard bounce and suppress.
550 5.7.26 / 5.7.515 blockedThe mailbox is valid; your mail was refused. Do not suppress — fix SPF/DKIM/DMARC and reputation.

Who these rules are for — and where AI Emaily fits#

Bounce handling is a sender's job, and specifically the job of whatever platform sends your mail at volume. If you run campaigns or sequences, your email service provider — Mailchimp, Brevo, Amazon SES, Postmark, SendGrid and the like — is where hard-bounce suppression and soft-bounce retries actually happen. Most of them auto-suppress hard bounces and manage the retry schedule for you; your job is to confirm those settings are on and to watch your rates in a postmaster tool. Groups like M3AAWG publish the sender best-practice documents these platforms build on.

We build AI Emaily, and here is the honest placement: it is not that tool. AI Emaily is an AI email client, not an email service provider — it does not send bulk mail, it does not keep a suppression list, and it does not run retry logic for a campaign. On the sending side of everything above, your ESP is the answer, and we will not pretend otherwise.

Where AI Emaily is genuinely useful is the other end of the same problem: the bounce that lands back in your own inbox. When a one-to-one email fails, the non-delivery report returns as a message, and in a busy inbox those get buried under everything else. AI Emaily triages your inbox so a real bounce surfaces instead of getting lost, and helps you read what the code is actually telling you. That is inbox work, not deliverability infrastructure — the job we do, stated at its real size. You can see how the triage works at aiemaily.com.

Frequently asked

Nafiul Hasan

Written by

Nafiul Hasan

Nafiul Hasan is an entrepreneur and AI automation system builder with 10+ years of experience turning messy, manual workflows into reliable automated systems. He designs and ships AI enterprise solutions end-to-end — the agent logic, the data plumbing, and the product people actually use — and founded AI Emaily to give busy professionals their attention back. He writes here from the builder's seat: what works, what breaks, and how to put AI to work without giving up control.

EntrepreneurAI Automation System BuilderAI EnthusiastBuilds AI Enterprise Solutions10+ years experience
More from Nafiul
Ready when you are

Bounce handling lives in your ESP. Inbox triage lives with us.

AI Emaily does not send bulk mail or run suppression lists — your email service provider does that. What it does is triage the inbox those bounce notices land back in, so a real failure surfaces instead of getting buried. Across Gmail, Outlook, and any IMAP account. See how at aiemaily.com.

  • 7-day free trial
  • Cancel anytime
  • Every provider