---
name: bounce-triage
description: Triages email bounces (NDRs) from cold email campaigns. Reads SMTP reply codes and enhanced status codes, sorts each bounce into hard invalid address, soft or temporary, throttling, and sender-side policy or reputation blocks, and returns the action per class - remove the address, retry, slow down, or stop and fix the sender. Warns when a 0% bounce rate is not credible. Use when the user pastes bounce messages or a bounce export, asks why emails bounce, or sees a bounce rate spike.
---

# Bounce triage

You sort bounces into classes that need different actions. The main mistake to prevent: treating a sender-side block (the receiver refuses you) as a bad address, or the other way round. A list problem is fixed in the list; a sender problem is fixed in the sender, and retrying makes it worse.

## Step 1. Collect

Ask for the raw bounce text (the SMTP reply line), not only the tool's label. Group by recipient provider (Google, Microsoft, other) using the recipient domain's MX. Note the total sent for the same period, so rates can be computed.

## Step 2. Classify each bounce

| Code / text | Class | Action |
|---|---|---|
| 550 5.1.1 user unknown, "address does not exist" | Hard: invalid address | remove, never retry |
| 550 5.1.10 or 5.4.1 "recipient address rejected" (Microsoft) | Hard: invalid address | remove |
| 5.1.2 bad destination domain, no MX | Hard: dead domain | remove the domain's leads |
| 552 5.2.2 mailbox full | Soft | retry once later, remove if it repeats |
| 4.x.x, 421, 450, 451 "try again later", greylisting | Soft / temporary | let the tool retry, no action |
| 421 4.7.0 or 4.7.28 "rate limited", "too many messages" | Throttling | lower per-mailbox volume and spread sends |
| 550 5.7.1 "likely unsolicited mail" (Gmail) | Sender block: reputation or content | stop that sender, fix before resuming |
| 550 5.7.26 "unauthenticated", DMARC fail | Sender block: authentication | fix SPF, DKIM, DMARC alignment |
| 5.7.606 to 5.7.649 "banned sending IP", "S3150" (Microsoft) | Sender block: IP reputation | stop that IP, request delisting from Microsoft after fixing |
| 5.7.1 "blocked using" a list name | Sender block: blocklist | check the list, fix, request removal |
| 5.7.x other policy, "message rejected" | Sender block: policy | read the text, usually content or reputation |

If a code and its text disagree, trust the text.

## Step 3. Compute rates

- Hard bounce rate = hard bounces / emails sent (not leads uploaded).
- Keep hard bounces under about 2% per campaign. Above that, the list needs verification before more sends.
- Any cluster of sender blocks on one mailbox, domain or IP = that sender is the problem, whatever the total rate.

## Step 4. Check that the bounce number is credible

A bounce rate can be wrong in the low direction. If mail goes through a relay or SMTP proxy that accepts every message and handles delivery later, the sending tool sees "accepted" and never learns about failures. Signs:

- 0% or near-0% bounces on a list that has never been verified.
- The same list shows clearly higher bounces when sent from a different provider.
- Replies and auto-replies drop while bounces stay at zero.

When you see these, compare bounce rates for the same list across providers, and use seed or inbox placement tests as the safety check, not the bounce rate alone.

## Output format

1. Table: class, count, share of sent, example line, action.
2. Sender problems first, by mailbox / domain / IP.
3. The list of addresses to remove (hard bounces), as a plain list or CSV.
4. One paragraph: is this a list problem, a sender problem, or both.

## Rules

- Never recommend retrying a 5.7.x block. Retries to a provider that already blocks you deepen the block.
- Do not count soft bounces as invalid addresses on the first occurrence.
- Do not guess the class from the tool's label ("bounced") alone. Ask for the SMTP text.

## Example

Input: 40 bounces from 1,800 sent. 31 are "550 5.1.1 The email account that you tried to reach does not exist", 9 are "550-5.7.1 ... likely unsolicited mail", all 9 from mailbox anna@example.com.

Output (abridged): Hard invalid 31 (1.7% of sent): remove, verify the rest of the list before the next upload. Sender block 9, all from anna@example.com: pause this mailbox, run an inbox placement test from it, check its domain's authentication and blocklists before resuming.
