The two types are easy to mix up because both look like “the email did not arrive”. What separates them is whether trying again could ever work.
Side by side
| Hard bounce | Soft bounce | |
|---|---|---|
| Nature | Permanent | Temporary |
| Typical cause | Address does not exist, invalid domain | Mailbox full, server busy, message too large |
| SMTP code range | 5xx | 4xx |
| SES term | Permanent bounce | Transient bounce |
| Counts toward the bounce rate? | Yes, to domains you have not verified | No |
| Added to the suppression list? | Yes, by default on newer accounts | No |
| What you should do | Stop sending to the address | Watch for repeats, then remove |
Why the difference matters
AWS reviews your account on the bounce rate, and the bounce rate is built from hard bounces. A soft bounce that clears on retry costs you nothing. A hard bounce costs you every time, which is why suppression lists exist.
The other reason is diagnosis. A hard bounce points at your list: where the addresses came from and how you confirmed them. A soft bounce points at the moment: the recipient’s server, your content or your sending speed. Treating them the same hides both stories.
Read more in the entries for hard bounce and soft bounce, and see SMTP error codes for how to tell them apart in a raw bounce message.
Common questions
Which bounce is worse for my reputation?
Hard bounces. They are the ones SES counts toward your bounce rate, and they show mailbox providers that you sent to an address you had not verified.
Can a soft bounce become a hard bounce?
Not by itself. But an address that soft bounces on every send is effectively dead, and it is worth removing it by hand.