Hard bounce

Updated November 10, 2026

A hard bounce is a permanent email delivery failure. The receiving system rejects the message because the mailbox does not exist, the domain cannot receive mail, or another lasting condition blocks delivery. Senders should remove hard-bounced addresses from future campaigns, because retries will fail the same way and damage sender reputation.

In short: A hard bounce is a permanent delivery failure, for example a mailbox that does not exist, and senders should suppress those addresses instead of retrying them.

How a hard bounce works

A bounce is the receiving system telling the sender that delivery failed. AWS separates hard bounces from soft bounces 1. A hard bounce means a persistent failure. The classic case is a mailbox that does not exist 1. Other lasting failures include a domain with no mail path and an address rejected as invalid at the protocol level.

Amazon SES documents that it does not retry hard bounces, with a narrow exception for some DNS lookup failures 2. The guidance is clear. Do not keep sending to addresses that hard bounce 2. Each retry adds to bounce rate without producing a delivery. Bounce rate is commonly hard bounces divided by emails sent 1. Providers and mailbox networks watch that ratio when they decide whether to accept future mail from a sending domain.

Hard bounces can arrive synchronously during the SMTP conversation or later as an asynchronous notice 1. Either way, the operational response is the same. Suppress the address. Update the CRM. Stop sequences that still target it. Soft bounce events are different. They are temporary, and systems often retry them 2. Mixing the two labels in one suppression list either deletes recoverable contacts or keeps dead ones.

Prevention sits upstream of the bounce. Email verification checks whether an address looks deliverable before the campaign starts 3. RichAPI Email verifier returns valid, status, disposable, and mxFound so a pipeline can drop bad rows early 3. An mxFound false domain will hard bounce if you send to it 3. A disposable domain may accept mail today and vanish tomorrow. Status labels that mean invalid should never enter a cold-send pool.

Hard bounces also arrive with codes that repay a careful read. A user-unknown style code is a clear suppress. A domain-level reject may point at DNS or at a block list. An authentication failure can look like a bounce while the mailbox itself is fine. Operators who suppress every failure code the same way will delete recoverable contacts and keep some dead ones.

The cleanest operational rule is still simple. If the ESP labels the event a hard bounce, suppress first and investigate second 12. Investigation can restore a contact when the label was wrong. Leaving a true hard bounce in the stream while someone investigates is how bounce rate climbs during the review.

Upstream prevention remains the cheaper move. RichAPI Email verifier flags domains with no MX through mxFound, flags throwaway domains through disposable, and returns a status label for branching 3. Those fields exist so permanent failures leave the list before the ESP has to teach the same lesson 3.

Why hard bounces matter for outbound

Hard bounces are the part of bounce rate that mailbox providers treat as a quality signal. A short spike after a bad list import can throttle a warm domain for weeks. The fix is not a prettier subject line. The fix is removing permanent failures before the next wave, which is the fastest path back to stable email deliverability.

Teams that inherit CRMs often discover years of stale addresses. People change jobs. Domains expire. Role inboxes get renamed. Sending that file cold is how hard-bounce rates jump. A verify-before-send pass is cheaper than rebuilding reputation. On RichAPI the verifier costs 2 credits per verdict 3. A waterfall miss with no verdict bills zero 3. New accounts get 100 free credits 3.

Hard bounces also interact with catch-all email domains. A catch-all may accept the SMTP handshake and bounce later, or never bounce while the message dies in a bit bucket. That is why verification alone is not enough on catch-alls, and why first-wave monitoring still matters.

Agencies should attribute hard bounces per client sending domain. One bad list should not poison every domain on the shared infrastructure. Named API keys and separate suppression tables keep that blast radius small. After a hard bounce, do not move the address to a softer status because a second tool disagreed. Permanent means permanent until a human confirms the mailbox was rebuilt.

Warm domains deserve extra caution after a hard-bounce spike. Cut volume, suppress the bad addresses, and verify the next import before resuming full pace 3. Content changes help inbox placement. They do not resurrect a mailbox that does not exist.

Sales tools that auto-enroll sequences from CRM updates are a common source of hard bounces. A sync pulls stale emails from an old enrichment job and enrolls them the same night. Gate enrollment on a fresh verifier status, or on a max age for the last verify timestamp 3. Without that gate, every CRM sync becomes a deliverability event.

When hard bounces concentrate on one enrichment source, quarantine that source's unverified hits. Keep other sources flowing. The execution_log on RichAPI finder and verifier responses exists partly so that quarantine can be precise instead of global 3. Broad pauses feel decisive and waste good rows.

Example of handling a hard bounce

Suppose a sequence sends to four hundred contacts and twenty addresses return hard bounces. The ESP marks those twenty as permanent failures. The operator exports them into a suppression list the same day. Those addresses leave every active sequence and every future import match.

Before the next campaign, the same team runs email_verifier across the remaining list 3. Rows with mxFound false leave immediately 3. Rows marked disposable leave the B2B track 3. Invalid statuses leave the sendable pool. The goal is fewer hard bounces in the next wave, not a perfect crystal ball.

Billing on that cleanup is predictable. Each verdict costs 2 credits 3. Calls that reach no verdict cost zero 3. With 100 free credits on a new account, a first cleanup pass can cover dozens of checks before any paid bundle 3.

After suppression, the team reviews whether one source produced most of the hard bounces. If the bad rows came from a single enrichment provider, that provider's hits get an extra verify step from then on. The hard bounce is the symptom. The list source and the missing verify gate are the cause.

A second path is proactive. Before any sequence enrolls, a workflow calls email_verifier 3. mxFound false rows never enroll 3. disposable true rows never enroll on a B2B sequence 3. Invalid statuses never enroll. Only the remaining addresses reach the ESP.

That workflow bills 2 credits per verdict 3. Misses with no verdict bill zero 3. Over a month, the credit spend is visible in usage logs, while the avoided hard bounces show up as a flatter bounce chart. New accounts can prove the pattern on the free 100 credits before buying a bundle 3.

If a hard bounce still appears, the address goes to suppression within the hour. The contact record keeps the bounce code and the date. Future imports that match the same address inherit the suppress. That closes the loop the ESP opened.

Hard bounce vs soft bounce

Both are delivery failures. A hard bounce is permanent. A soft bounce is temporary. The response to each should differ, and AWS documents both sides of that split 12.

Hard bounceSoft bounce
What it answersIs this a persistent delivery failure?.Is this a temporary delivery failure?.
InputA bounce event from the receiving system.A bounce event from the receiving system.
OutputA permanent failure such as mailbox does not exist.A temporary failure such as mailbox full or throttling.
Cost driverReputation damage if you keep sending.Retry capacity and pacing decisions.
Main riskLeaving dead addresses in the send stream.Deleting contacts who would accept a later retry.
Use it whenThe failure will not heal on its own.The failure may clear without changing the address.
Read the reference →

Frequently asked questions

What is a hard bounce?

A hard bounce is a persistent email delivery failure, for example when the mailbox does not exist 1. Senders should suppress those addresses rather than retry them, because another attempt will fail the same way 2.

How is bounce rate calculated?

Bounce rate usually means hard bounces divided by emails sent, shown as a percentage 1. For example, 222 hard bounces on 10,000 sends is a 2.22 percent bounce rate, and providers watch that ratio closely 1.

Does Amazon SES retry hard bounces?

Amazon SES does not retry hard bounces, with a narrow exception for some DNS lookup failures 2. The docs strongly recommend against repeated delivery attempts to addresses that already hard bounced 2.

How does RichAPI help reduce hard bounces?

RichAPI Email verifier returns mxFound, disposable, valid, and status before you send 3. Dropping bad rows early cuts permanent failures. A miss with no verdict bills zero, and new accounts get 100 free credits 3.

The bottom line

A hard bounce is a permanent delivery failure such as a mailbox that does not exist 1. Suppress those addresses the same day, verify before the next send with tools such as RichAPI Email verifier, and keep hard bounces out of the soft-bounce bucket so reputation can recover 23.

Sources

  1. Email definitions: bounces, AWS
  2. Understanding email deliverability in Amazon SES, AWS
  3. Email verifier reference, RichAPI
  4. RichAPI pricing, RichAPI

More terms