Hard bounce
A failure the provider classifies as permanent. Retrying will not help, and address-level ones should be suppressed on the spot.
See it
What it is
A hard bounce is your provider's label for a failure it classified as permanent: the receiver refused the message and told you not to try again. Most of them are facts about the address (the mailbox does not exist, the domain does not resolve, the account was deleted), arriving as a 5xx SMTP reply like '550 5.1.1 user unknown'. Some are facts about you instead: a policy, content, authentication, or reputation rejection is also a permanent 5xx, and retrying fixes neither kind.
Suppress automatically for the address-level ones: write the recipient to a do-not-send table the second the webhook lands, and check that table before every send from then on. Mailbox providers watch bounce rate as a proxy for how you built your list, since a sender who keeps hammering dead addresses either bought the list or never cleaned it. Above roughly 2 percent you are visibly sloppy, and a first campaign to an old list can easily hit 10 percent.
The gotcha that trips up hand-rolled bounce parsers: not every 5xx is a dead mailbox. '550 5.7.1 message rejected due to policy' or a Spamhaus listing block is the server rejecting you, not the recipient not existing. Suppress those addresses and you will quietly delete your best customers because of a temporary reputation problem. Read the enhanced status code (5.1.x means recipient, 5.7.x means policy) or lean on your provider's own bounce classification.
Ask AI for it
Implement hard bounce handling for our sending pipeline. Consume the provider's bounce webhook, classify each event using both the bounce type and the enhanced SMTP status code, and treat only recipient failures (5.1.x, user unknown, domain not found) as hard. On a hard bounce, insert the address into a suppressions table with the reason, raw diagnostic code, and timestamp, and make every send path check that table before handing a message to the provider. Route 5.7.x policy rejections to an alerting path instead of suppression, since those are our reputation problem and not a dead mailbox. Add a rolling 7 day hard bounce rate metric with an alert above 2 percent, and give support a screen to view and manually release a suppressed address.