GLOSSARY

What is Bounce Rate?

In email, bounce rate is the share of attempted sends that the receiving server refused, split into hard bounces, which are permanent 5xx failures such as a mailbox that does not exist, and soft bounces, which are temporary 4xx failures such as a full mailbox or a greylisting deferral.

Free forever plan · No credit card required · Cancel anytime

Quick definition

In email, bounce rate is the share of attempted sends that the receiving server refused, split into hard bounces, which are permanent 5xx failures such as a mailbox that does not exist, and soft bounces, which are temporary 4xx failures such as a full mailbox or a greylisting deferral.

Not to be confused with the web analytics metric of the same name, which measures single-page sessions on your own site.

2%
Hard bounce ceiling
Above this, providers start throttling
5.1.1
The code you will see most
Mailbox does not exist
0.1%
Complaint rate target
Gmail publishes 0.3% as the limit

What it means

A bounce is a rejection, and the rejection carries a code that says exactly why. That is the part most teams skip. They see a bounce count in a dashboard, treat every entry as one bad address, and suppress the lot. In reality the same bounce list usually contains three unrelated situations: addresses that genuinely do not exist, addresses that are fine but temporarily unreachable, and messages that were refused because of something about the sender rather than the recipient. Only the first should ever be suppressed.

The arithmetic is simple: bounces divided by messages accepted for delivery, times one hundred. Compute it separately for hard and soft, because averaging them hides the only number that matters. A campaign at 6 percent total with 5.8 percent soft bounces from one greylisting provider is healthy. The same 6 percent made of hard bounces means the list is not yours.

Reading the codes

Every SMTP reply has two layers. The three-digit code, from RFC 5321, gives the class: 2xx accepted, 4xx temporary failure, 5xx permanent failure. The enhanced status code that usually follows, from RFC 3463, gives the detail in the form class.subject.detail, so 5.1.1 is permanent, addressing-related, bad destination mailbox.

The first digit tells you whether to retry. The rest tells you whether to blame the address or yourself, and that distinction is the difference between good list hygiene and self-inflicted damage. The subject digit 7 means policy or security, which is always about the sender, never about whether the mailbox exists.

Synchronous and asynchronous bounces

Some rejections happen during the SMTP conversation, before your relay has finished handing over the message. Those are easy: you get the code in the same connection. Large providers, though, tend to accept nearly everything at the edge and decide afterwards, then generate a delivery status notification, defined in RFC 3464, and send it back to your envelope sender address.

That notification is a multipart message: a human-readable explanation, a machine-readable part with the failing recipient and status code, and normally a copy of the original headers containing its Message-ID. Without a process that reads the bounce mailbox or consumes provider webhooks, none of this reaches your CRM and your list quietly rots while every dashboard shows green.

The mistake that costs the most: treating a block as a bounce

A 5.7.1 is a 5xx, so naive logic files it as a hard bounce and suppresses the recipient. But 5.7.1 means the receiver declined on policy grounds. The mailbox is fine. What failed was your authentication, your reputation, or your content, and it failed for everyone at that provider at once.

The result is a campaign that suppresses several thousand perfectly good customers in an afternoon because of a DMARC misconfiguration that took ten minutes to fix. Classify by the subject digit, not just the class: 5.1.x and 5.2.x are about the recipient, 5.7.x is about you, and only the first group belongs in a suppression list.

Where bad addresses come from

  • Purchased or scraped lists. Bounce rates of 20 percent and upwards, plus spam traps that do not bounce at all and quietly destroy your reputation instead.
  • Typos at capture. The classic misspelled provider domains. A domain-suggestion step at the form catches most of them before they enter the database.
  • Age. Business addresses decay at roughly two to three percent per month through job changes alone, so a list left untouched for a year is substantially dead.
  • Role accounts. Shared addresses like info or sales are frequently filtered, are more likely to be a trap, and rarely engage.
  • No confirmation step. Single opt-in accepts anything typed into a box, including other people addresses typed by a bot.

Related concepts

  • Suppression list: where hard bounces go, and where blocks must not.
  • Spam trap: the addresses that never bounce and hurt far more than the ones that do.
  • Domain warm-up: soft bounces are the feedback loop a warm-up schedule runs on.
  • DMARC: the usual cause of a sudden wave of 5.7.1 rejections.
  • Cold outreach: the activity that generates the highest bounce rates by design.

How Pinlyx handles it

Bounces arrive on a return path under your own sending domain and are parsed into class, enhanced status code and provider reason, then attached to both the contact and the original message rather than to a global counter. Hard bounces write a suppression entry with the code that caused it. Soft bounces schedule a decaying retry and only escalate after several consecutive failures across separate sends. Policy rejections in the 5.7 family are routed away from suppression entirely and raise an alert on the sending domain, because the correct response there is to stop sending, not to delete customers.

What a bounce looks like

Three rejections, three completely different responses.

The text below is what your logs and your bounce mailbox actually contain.

A hard bounce, in the SMTP conversation

>>> RCPT TO:<maya@exmaple.com>
<<< 550-5.1.1 The email account that you tried to reach does not exist.
<<< 550-5.1.1 Please try double-checking the recipient's email address for
<<< 550-5.1.1 typos or unnecessary spaces. For more information, go to
<<< 550 5.1.1  https://support.google.com/mail/?p=NoSuchUser  - gsmtp

# suppress on the first occurrence, and note the domain: exmaple.com is a typo
# that a capture-time domain suggestion would have caught

A soft bounce that is really a rate limit

<<< 421 4.7.0 [TSS04] Messages from 46.225.21.115 temporarily deferred due to
<<< unexpected volume or user complaints

<<< 450 4.2.1 The user you are trying to contact is receiving mail at a rate that
<<< prevents additional messages from being delivered. Please resend your message
<<< at a later time.  - gsmtp

# neither address is bad. the first is about your sending IP,
# the second about that one recipient. retry with backoff, suppress nothing.

An asynchronous DSN, hours later

Content-Type: message/delivery-status

Reporting-MTA: dns; mx.pinlyx.com
Arrival-Date: Mon, 08 Sep 2026 09:14:02 +0000

Final-Recipient: rfc822; maya@example.com
Action: failed
Status: 5.2.2
Diagnostic-Code: smtp; 552 5.2.2 The email account that you tried to reach is
 over quota and inbound messages are currently being rejected.

--- original headers ---
Message-ID: <7f1b2c9a-4e33-4f0b-9a1e-5f7c0d2a11b8@pinlyx.com>

The Message-ID in the attached headers is what lets you attach this failure to the exact send that caused it, rather than to the most recent message to that address.

Decision table

Code to action, without guessing.

CodeClassMeaningWhat to do
550 5.1.1HardThe mailbox does not exist at this domain. Typo, staff departure, or an address that was never real.Suppress immediately and permanently. Keep the code on the record so a later typo correction can be justified.
550 5.1.2HardThe domain itself does not resolve or has no mail exchanger. Usually a misspelled domain or an expired company.Suppress, and add the domain to your capture-time validation so the same typo cannot be entered again.
552 5.2.2Hard in form, soft in factMailbox over quota. Some servers return this as 452 4.2.2, which is the same condition with a retryable code.Retry on a decaying schedule for up to 72 hours. Suppress only after several consecutive failures across separate sends.
450 4.2.1 / 421 4.7.0SoftRate limited or greylisted. The receiver is asking you to slow down, not telling you the address is bad.Back off and retry with increasing delay. Never suppress. Repeated 4.7.0 across many recipients is a reputation warning.
550 5.7.1Block, not a bounceDelivery refused on policy or reputation grounds: DMARC failure, a blocklist listing, or content filtering.Do not suppress the recipient. Pause the sending domain, find the cause, fix it, then resume. Suppressing here destroys a clean list for a sender-side problem.
554 5.7.1 blocked using zen.spamhaus.orgBlockThe sending IP is listed. Almost always a spam trap hit, a compromised account, or a shared pool neighbour.Stop sending from that IP, resolve the listing at the source, and request delisting once, after the behaviour has actually changed.
Emergency procedure

Bounce rate just jumped past 5 percent. Do this.

  • Pause the campaign. Every additional send against unknown users deepens the reputation problem.
  • Split the bounces by enhanced status code. If the 5.7 family dominates, this is not a list problem and suppressing addresses will make it worse.
  • Find the shared origin: one import, one form, one segment, one date range. Bad addresses arrive in batches, not evenly.
  • Quarantine that batch rather than the whole list, and validate it with syntax and MX checks offline.
  • Resume to your most engaged segment only, at a reduced volume, and watch the deferral rate for 24 hours before widening.
  • Fix the capture path that let the addresses in, or the same batch arrives again next month.

Bounce rate: FAQ

What operators ask the morning after a campaign goes wrong.

No, and the collision causes real confusion in reports. In web analytics a bounce is a single-page session with no further interaction, measured on your own site. In email a bounce is a delivery failure reported by someone else server. They share a word and nothing else, so label the metric explicitly in any dashboard that shows both.
Under 2 percent hard bounces on a list you built yourself, and under 0.5 percent on a list you mail regularly, because regular sending removes dead addresses continuously. Above 5 percent most providers begin throttling and many ESPs will suspend the account. A sudden jump from 0.4 to 4 percent matters more than the absolute number: it usually means an imported list or a broken capture form.
Because a 250 at SMTP time only means accepted for delivery, not delivered. Many providers accept everything at the edge and make the real decision afterwards, then send a delivery status notification to the Return-Path address. This is an asynchronous bounce, it can arrive minutes or hours later, and if you are not reading the bounce mailbox or the provider webhook you never learn about it.
No. A 5.1.1 is a definitive statement that the mailbox does not exist, and retrying it is exactly what a spam sender does, which is why repeated attempts against unknown users are themselves a reputation signal. Retry 4xx codes with backoff, suppress 5xx addresses on the first occurrence, and treat 5.7.x separately because that is a verdict about you rather than about the recipient.
Stop the source first: find which import, form or segment produced the bad addresses and pause it. Then validate the remaining list with syntax and MX checks rather than sending to it, remove role addresses and anything not engaged for a year, and resume sending to your most engaged segment only. Sending more slowly to a bad list does not fix it, it just spreads the damage.
Yes. Bounces say your list is stale, complaints say your mail is unwanted, and providers weight complaints far more heavily. Gmail publishes a spam complaint threshold of 0.3 percent for bulk senders with 0.1 percent as the practical target, which is roughly one complaint per thousand messages. Both feed the same reputation score, but a clean list with a high complaint rate is in more trouble than a stale list with none.
Ready to ship

Read the code, not just the count.

Pinlyx parses every rejection into class and enhanced status code, attaches it to the contact and the original message, and keeps policy blocks out of your suppression list.

Free forever plan · GDPR-ready · No credit card required

We value your privacy

We use cookies to improve our site, analyze traffic, and personalize ads. You can accept all, reject non-essential, or customize your choices. Read our Cookie Policy.