Blog

Soft Bounce vs Hard Bounce: What They Mean and What to Do With Each

Soft bounces are temporary delivery failures. Hard bounces are permanent. Here's what each means, why they happen, and exactly how to handle them in your code.

Yogini Bende • 09 Jun, 2026 • how to guide

Every time you send an email, the receiving server sends back a response. Most of the time that response is a quiet 250 OK and you never think about it. But when delivery fails, you get a bounce. The type of bounce tells you exactly what went wrong and what you should do next.

There are two types: soft bounces and hard bounces. They are not interchangeable. Handling them the same way is one of the most common mistakes I see from developers who are new to email infrastructure.

This article covers what each type means, why they happen, how your code should respond, and how AutoSend handles them automatically.

What is a hard bounce?

A hard bounce is a permanent delivery failure. The email cannot be delivered to that address, and retrying will not change that.

Hard bounces happen when:

  • The email address does not exist (550 5.1.1 The email account that you tried to reach does not exist)
  • The domain does not exist or has no valid MX records
  • The receiving server has permanently rejected your sending domain or IP

The diagnostic code in the bounce notification usually makes it obvious. A 5xx SMTP response code means permanent rejection.

What to do with a hard bounce: suppress immediately.

Do not retry. Do not wait and try again tomorrow. The moment you receive a hard bounce event, add that address to your suppression list and never send to it again.

At AutoSend, hard bounces trigger immediate global suppression on the first event. The address is blocked across your entire project, not just for one campaign. Future sends to that address are stopped before they ever reach the sending infrastructure. There is no manual step, no threshold, no grace period.

This matters because every hard bounce you retry is a wasted send at best, and a reputation signal at worst. ISPs watch retry patterns. If you keep hammering invalid addresses, you look like a spammer.

What is a soft bounce?

A soft bounce is a temporary delivery failure. The address is valid and the domain exists, but the email could not be delivered right now.

Soft bounces happen when:

  • The recipient's mailbox is full
  • The receiving server is temporarily unavailable or overloaded
  • Your message exceeded the server's size limit
  • The receiving server applied a temporary rate limit to your sending IP

The diagnostic code here is a 4xx SMTP response: temporary rejection, try again later.

What to do with a soft bounce: let the infrastructure handle it.

Your email delivery infrastructure retries transient failures automatically using standard SMTP retry logic, typically over several hours. That retry window happens before a soft bounce notification ever reaches your application. By the time you see the event, the delivery layer has already made multiple attempts.

So at the application level, you do not need to requeue and resend on a soft bounce. Log the event, watch the pattern, but do not suppress the address on a single soft bounce.

At AutoSend, soft bounces are recorded as events for visibility, but they do not trigger suppression. Only permanent bounce types block future sends.

The rule: Hard bounce → suppress on first event. Soft bounce → record, do not suppress, let delivery infrastructure retry.

The bounce types your ESP actually sends you

When your ESP processes a bounce, it normalizes the raw SMTP response into one of three types:

Bounce typeWhat it meansHow to handle
Permanent (Hard)Address is invalid or permanently rejectedSuppress immediately
Transient (Soft)Temporary failure, delivery may succeed on retryRecord, do not suppress
UndeterminedCould not be classifiedMonitor, do not auto-suppress

Most ESPs follow this pattern. The exact field names vary by provider, but the classification logic is consistent.

If you are parsing bounce webhooks yourself, look for the bounce type field in the payload rather than trying to parse raw diagnostic codes. Codes like 550 vs 421 can be inconsistent across receiving servers. The classified type is more reliable.

The decision flowchart

Got a bounce event? Here is how to handle it:

Flowchart of how a bounce event is handled: a permanent or hard bounce is suppressed immediately with a global block and never retried, while a transient or soft bounce is recorded without suppression and left for the delivery infrastructure to retry

If you see the same address soft-bouncing repeatedly across multiple sends over days or weeks, that is a signal the address may have become invalid. Build a counter if you want to handle this case, but do not suppress on the first or second soft bounce.

The mistake I keep seeing

A lot of developers treat suppression as optional, something you can skip if you are "just testing" or bypass when you need to reach someone who bounced.

I have seen teams send transactional email campaigns thinking they could manually check for suppression and force-send anyway. They overrode the suppression list because they were confident the content was important. What happened: their spam complaint rate spiked and their bounce rate climbed. Both are signals ISPs use to evaluate your sender reputation.

Overriding suppression is almost never the right call. If an address hard-bounced, there is a reason. Forcing a send to it does not deliver the email. It just burns your reputation trying.

How AutoSend handles this for you

AutoSend processes bounce events from your email sends automatically. Hard bounces (Permanent bounce type) trigger immediate global suppression. The address is added to your suppression list and blocked from future sends across your entire project.

Soft bounces (Transient) are recorded in your email activity log so you can see what happened, but they do not trigger suppression. The delivery layer handles the retry before the event reaches AutoSend.

Complaints follow the same logic as hard bounces. They are suppressed immediately on the first event.

You can view suppressed addresses in your AutoSend dashboard under the suppression list. If you need to manually review or remove an entry (for example, a transient soft bounce that you know was a temporary server issue on the recipient side), you can do that from the dashboard.

Bounce rate and deliverability

Your overall email bounce rate is a deliverability health metric. ISPs use it to evaluate whether you are maintaining a clean list.

A bounce rate above 2% is a signal that your list has quality problems. Hard bounces are the primary driver of a high bounce rate. That is exactly why immediate suppression matters. Every time you suppress a hard-bounced address, you are removing it from future sends and keeping your bounce rate down.

For more on bounce rate thresholds and what they mean for deliverability, see our email bounce rate guide.

For context on why list hygiene connects to spam trap hits and blacklisting, see our spam traps article.

FAQ

What is the difference between a soft bounce and a hard bounce? A hard bounce is a permanent delivery failure. The address does not exist or has been permanently rejected. A soft bounce is a temporary failure: the address is valid but delivery failed for a short-term reason like a full mailbox or a server outage. You suppress hard bounces immediately. You do not suppress on soft bounces.

Should I retry a soft bounce? You do not need to at the application level. Your email delivery infrastructure retries transient failures automatically over several hours before it emits a soft bounce notification. By the time you see the event, retrying has already happened.

How many soft bounces before I suppress an address? There is no universal rule, but a reasonable threshold is 3-5 soft bounces across separate sends over a week or more. A single soft bounce is almost always a temporary server issue. A pattern of repeated soft bounces on the same address may indicate the inbox has become invalid.

What causes a hard bounce? The most common causes are: the email address does not exist (typo, deleted account), the domain has no valid mail server, or the receiving server has permanently rejected your domain or IP.

What causes a soft bounce? Full mailbox, receiving server temporarily down or rate-limiting your IP, message too large for the server's policy, or a temporary DNS lookup issue on the receiving side.

Does a soft bounce affect my sender reputation? Less than a hard bounce, but it adds up. A high soft bounce rate suggests list quality problems or aggressive send volumes. Hard bounces are the bigger reputation risk. They signal that you are not maintaining your list.

What is an undetermined bounce? Some bounce notifications cannot be cleanly classified as permanent or transient. The receiving server gave an ambiguous response. Treat these like soft bounces: log the event, do not auto-suppress, and watch for patterns.

Does AutoSend suppress soft bounces? No. AutoSend only auto-suppresses on Permanent (hard) bounce events and spam complaints. Transient bounce events are logged in your activity feed but do not trigger suppression.

Related Articles