Answer

Soft bounce vs hard bounce, and the codes that decide

Hard means permanent and soft means temporary, but the three digit SMTP code does not reliably tell you which. The enhanced status code does, and two common cases are misclassified by most tooling.

A hard bounce means the address is permanently undeliverable and should be suppressed. A soft bounce means something temporary got in the way and the message should be retried later. The reliable signal is the enhanced status code (for example 5.1.1 or 4.2.2), not the three digit code in front of it.

Published by emailcampaign.ai. We classify bounces in our own sending, and the two misclassifications below are ones we had to fix in our own code before writing about them.

Read the enhanced code, not the 550

Every bounce carries two codes. The three digit code gives you the class, where 4xx is temporary and 5xx is permanent. The enhanced status code, defined in RFC 3463, tells you what kind of failure it was. That second code is where the decision lives.

Enhanced status codes and what to do with them
CodeMeaningTypeSuppress the address?
5.1.1No such userHardYes
5.1.2Domain does not existHardYes
5.2.1Mailbox disabledHardYes
5.2.2Mailbox fullSoft in practiceNo. Retry later
5.4.xRouting or network failureSoftNo
5.7.xPolicy, authentication or reputationAbout the SENDERNever
4.x.xTemporary, any causeSoftNo. Retry with backoff

The two that get misclassified

5.2.2, mailbox full. Formatted as permanent, temporary in reality. People empty their mailboxes, come back from leave, get more quota. A system that suppresses on any 5.x.x removes these addresses forever, and because it also reduces your measured bounce rate, the change looks like an improvement while it is quietly shrinking your reachable list.

5.7.x, policy rejection. This is the expensive one. A 5.7.x is the receiver telling you something about your IP, your domain, your authentication or your reputation. The recipient is fine. Suppressing the address records the wrong fact, burns a contact you never had a problem with, and hides the signal you actually needed.

Google’s 5.7.26 is worth knowing by name: it means the message was unauthenticated. That is a DNS problem you can fix this afternoon, and it has nothing to do with the person you wrote to.

Classifying correctly

Three rules cover nearly everything:

  1. Search the whole response, not the first line. Multi-line SMTP replies routinely carry the enhanced code on a continuation line.
  2. When there is no enhanced code, record unknown. A bare 550 from an unfamiliar server is not enough evidence to destroy an address permanently.
  3. Keep policy refusals in a separate ledger. Record them against the pair of sending identity and receiving provider, not against the recipient. Rising 5.7.x from one provider tells you to stop sending to that provider from that domain and fix the cause.

Why the distinction reaches your domain reputation

Hard bounce rate is the number providers read as a proxy for list quality. Above roughly two percent, a receiver treats the list as bought or stale, and that judgement attaches to the sending domain rather than to the campaign. It is the fastest way to undo three weeks of warm-up.

Soft bounces do not carry that weight, which is exactly why lumping them together is costly in both directions: it inflates the number that matters and it deletes addresses that were never bad.

Reducing hard bounces before you send

Verification catches most dead addresses. The nuance worth knowing is accept-all: a domain with a catch-all policy accepts mail for any address, so a verifier can only report that the server did not say no. Keep accept-all results in their own bucket, send to them last and in smaller batches, and watch the bounce rate between batches rather than after the campaign.

Questions, answered straight

What is the difference between a soft bounce and a hard bounce?
A hard bounce is a permanent failure: the address does not exist and will not exist tomorrow, so it should be suppressed. A soft bounce is temporary: a full mailbox, a server outage, a throttle. It should be retried with backoff and suppressed only after repeated failures over days.
Which codes are hard bounces?
Read the enhanced status code rather than the three digit code. Class 5 means permanent and class 4 means temporary, but the middle digit is what matters. 5.1.x is an addressing failure and is a true hard bounce. 5.7.x is a policy rejection about the sender, not the recipient, and should never be suppressed against the address.
Is a full mailbox a hard bounce?
No, though it is formatted as one. Mailbox full is 5.2.2, which is permanent in form and temporary in reality because mailboxes get emptied. Tools that suppress on any 5.x.x quietly delete real, reachable people from your list every time this occurs.
What bounce rate is acceptable?
Hard bounces above roughly two percent read to a provider as a bought or stale list, and that is the threshold where domain reputation starts to suffer. Soft bounces are not counted the same way, which is another reason the classification matters.
Should I retry a soft bounce?
Yes, with exponential backoff, for a bounded number of attempts across several days. Retrying immediately and repeatedly looks like exactly the behaviour a throttle was designed to stop, and can convert a temporary block into a durable one.

Published 20 September 2026. Updated 20 September 2026. Written by the team that runs the infrastructure; numbers come from the platform's own provisioning and sending, and from the providers' published documentation at the time of writing.

Soft Bounce vs Hard Bounce: The Real Difference | emailcampaign.ai