TL;DR
- Hard bounce: permanent. The server answered with a
5xxcode, for example550 5.1.1"user unknown". Remove the address. - Soft bounce: temporary. The server answered with a
4xxcode (busy, rate limited, greylisted). Your platform retries it. - Hard bounces are what burn domains. Verifying before you send removes most of them.
Where bounces come from
When you send an email, your sending server talks to the recipient's mail server over SMTP. Every step gets a three-digit reply code.
Codes starting with 2 mean success, 4 means "not now, try later", and 5 means "no, and don't try again"
(RFC 5321, checked 2026-10-17). A bounce is your server
reporting one of those failures back to you. The first digit is what separates hard from soft.
| Hard bounce | Soft bounce | |
|---|---|---|
| SMTP code | 5xx (permanent) | 4xx (transient) |
| Enhanced code | 5.x.x | 4.x.x |
| Typical causes | Mailbox doesn't exist, domain doesn't exist, domain accepts no mail, address malformed | Server busy or down, rate limiting, greylisting, mailbox temporarily over quota |
| Does the server retry? | No | Yes, usually for hours to days before giving up |
| What to do | Remove the address at once | Leave it; remove it if it keeps failing across campaigns |
Common hard bounces
550 5.1.1The mailbox doesn't exist. The most common hard bounce, and the one verification catches best.550 5.1.10The domain publishes a "null MX", meaning it accepts no mail at all.553 5.1.3The address isn't valid syntax.- No MX or DNS record at all: your server can't find anywhere to deliver, so the message fails without a reply from the recipient.
Common soft bounces
421 4.7.0or421"try again later": the server is limiting how fast it accepts mail from you.450/451with a greylisting message: the server refuses first contact from an unfamiliar sender and accepts a retry a few minutes later.452 4.2.2The mailbox is over quota for now.
See the full table in email bounce codes.
The grey zone: blocks and full mailboxes
Policy blocks such as 550 5.7.1 "client host blocked using Spamhaus" are 5xx codes, so platforms often count them as
hard bounces. But they're about your sending server or domain, not the address. The mailbox may be perfectly fine. If you see a run of
5.7.x bounces, fix your sending reputation or authentication rather than deleting the contacts.
Full mailboxes are sometimes reported as 552 5.2.2, a permanent code for what is often a temporary state. A mailbox
that has been full for months is usually abandoned, though, so repeated full-mailbox bounces are a good reason to drop the address.
Why hard bounces matter more
Mailbox providers read a high hard-bounce rate as a sign that you're mailing a list you didn't build carefully. Sending platforms watch it too: Instantly, for example, pauses a campaign at 5% bounces after 200 sends by default. Aim for under 2%. The numbers per platform are in how many bounces burn a domain? and Instantly campaign paused for bounce rate.
How verification relates to bounces
A verifier asks the recipient's server the same "will you take mail for this address?" question your sender would, then stops before
sending anything (how that works). If the server answers 5xx for the mailbox, we report
undeliverable (rejected_email), which is a hard bounce you avoided. If it keeps answering 4xx, we retry after a pause,
and if there's still no clear answer we report unknown and refund the credit. A 5.7.x block aimed at our server is also reported as
unknown, never as a dead address.