# Deliverability Metrics and Benchmarks

> Concrete definitions of bounce, complaint, and engagement metrics, with the numeric thresholds major ESP guides consider healthy — and the corrective actions when a metric goes out of range.

Source: emailmarketing.net — https://emailmarketing.net/learn/operations/metrics-and-benchmarks

To know whether your mail is healthy, you need to track the same signals mailbox providers use to decide whether it is wanted and expected (see [Foundations of Email Deliverability](https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability)). Below are the definitions of those metrics and the numeric targets published by major ESP guides: AWS SES, Postmark, Twilio SendGrid and Klaviyo, with open-rate bands from Braze and Bird. Where the sources differ, every figure is given with its attribution.

The [canonical threshold table](#canonical-threshold-table) below collects the thresholds in one place. For dated industry survey figures to compare these targets with, see [Deliverability Benchmarks](https://emailmarketing.net/learn/reference/deliverability-benchmarks). It covers Validity's seed-measured inbox, spam and missing rates by provider and industry, and engagement benchmarks for each industry, all attributed to their vendors.

## Message lifecycle events

Twilio SendGrid lists nine primary events in a message's lifecycle. The names are labels from its interface, but every sending infrastructure produces equivalent states:

| Event | Definition |
|---|---|
| Processed | Message received by the sending system and queued for delivery |
| Dropped | Not sent at all (for example, the address is on a suppression list, bounced before, or the content was flagged as spam) |
| Deferred | Receiving server temporarily refused; delivery is retried (SendGrid retries for up to 72 hours) |
| Bounce | Receiving server rejected the message; often indicates invalid or outdated addresses |
| Delivered | Accepted by the receiving server. This does **not** mean Inbox; the message may still land in Spam |
| Open | Recipient (or a proxy, see below) rendered the message |
| Click | Recipient clicked a tracked link |
| Spam report | Recipient marked the message as spam (a complaint) |
| Unsubscribe | Recipient clicked an unsubscribe link |

## Bounces

A **bounce** occurs when an email cannot be delivered to the intended recipient.

- **Hard bounce**: a permanent failure. The address or domain does not exist, authentication fails (SPF, DKIM or DMARC misalignment), or there are severe reputation or blocklist issues. SMTP reply codes are in the **5.X.X** range (for example, 550).
- **Soft bounce**: a temporary failure. The mailbox is full, the receiving server is overloaded or temporarily unavailable, or a temporary block applies to content or reputation. SMTP reply codes are in the **4.X.X** range (for example, 421, 451, 452). Sending systems typically retry soft bounces at intervals over several days before giving up.

(Code 250 means the message was accepted and delivery is complete.)

A high hard-bounce rate tells receivers that you do not know your recipients, which is a strong negative reputation signal. Remove hard-bouncing addresses immediately and never send to them again; see [List Hygiene and Sunset Policies](https://emailmarketing.net/learn/operations/list-hygiene-and-sunset-policies).

### Bounce composition (transactional mail)

Postmark's transactional bounce data breaks down as follows: **80%** hard bounces, **10%** soft bounces, **3.5%** spam complaints and ISP blocks, **2.5%** delayed, **2.5%** auto-responders, and **1.5%** other (DNS errors, DMARC rejections, challenge verification, unsubscribes). Automate hard-bounce handling first.

## Complaints

A **complaint** occurs when a recipient clicks "Mark as Spam" (or its equivalent) in their mail client. Some mailbox providers, but not all, report complaints back to senders through a **feedback loop** (see [Sending Infrastructure Practices](https://emailmarketing.net/learn/operations/sending-infrastructure-practices)). Accumulated complaints tell the provider you are sending spam, which directly harms deliverability and sender reputation.

## Opens and clicks: measurement caveats

Open rates are inflated by **Apple Mail Privacy Protection (MPP)** and by Gmail's image prefetching, which load the open pixel without a person reading the message. SendGrid's guidance is to identify proxy opens (for example, by the prefetch user agents in event data) and to **prioritize click and conversion metrics over open rates** when you judge engagement.

## Canonical threshold table

The thresholds below are collected from several sources, so other guidance can refer to one set of numbers. Where the sources genuinely differ, the range is given with attribution, and a stricter vendor "house number" is labelled as such rather than presented as consensus.

<a id="reading-thresholds-by-scope-read-this-first"></a>

### Reading thresholds by scope

Read this part first. The numbers below partly disagree because **they are not the same measurement.** A rate depends on three things, and two thresholds are comparable only if all three match:

- **Who measures it**: the mailbox provider (Gmail or Yahoo, measuring what their users do), or the sending side (your ESP or MTA, measuring what your logs and feedback loops see). A provider sees only the complaints its own users file. A sender sees only bounces and the complaints feedback loops (FBLs) return.
- **The reputation entity (network, IP or domain)**: reputation is tracked at all three at once. Blocklists list **IP addresses** (Spamhaus SBL and CSS) and **domains** (DBL) separately. Gmail Postmaster Tools reports **IP reputation** and **domain reputation** on separate dashboards. AWS SES enforces at the **account** level to protect its shared-IP **network**.
- **The denominator**: complaints or bounces divided by mail **sent**, by mail **delivered**, or by mail **delivered to the inbox**. Gmail's spam rate is user reports divided by mail delivered to the inbox, counting only DKIM-authenticated mail, so a low Gmail number can hide mail Gmail has already routed to spam. SES and Klaviyo divide by mail delivered. The raw events are the same, but the percentage differs.

| Scope | What it is | Who measures it | Example threshold |
|---|---|---|---|
| **Network or shared pool** | aggregate reputation of an ESP's shared IP space | sending infrastructure (AWS SES, per **account**) | SES pause at 0.5% complaint rate or 10% bounce rate |
| **IP** | reputation of a single sending IP | blocklists; provider dashboards for IP reputation | Spamhaus listing; Gmail IP Reputation dashboard |
| **Sender domain** | reputation of the From or DKIM domain the recipient sees | mailbox provider (Gmail or Yahoo, per **domain**) | Gmail 0.1% target and 0.3% ceiling (divided by mail delivered to the inbox) |

**Which line you act on depends on your role:**

- **Sender (you own the domain):** the mailbox provider's ceiling for each **domain** determines your inbox placement. Keep the Gmail and Yahoo complaint rate under **0.1%**, and never let it approach **0.3%**. The numbers on your ESP dashboard are an early warning, not the target.
- **ESP operator (shared platform):** one number cannot protect every scope, so you need **three** guards: (1) a guard for the **network or pool** that protects the reputation of shared IP addresses (the SES-style line for each account); (2) a guard for each **domain**, so each customer stays under the Gmail and Yahoo ceiling; and (3) a tighter guard for each **tenant or IP address**, which catches a bad sender before either of the others trips (well below 0.3%, near 0.1% or your own house line). See [Account Enforcement](https://emailmarketing.net/learn/esp-operations/account-enforcement), [Outbound Monitoring](https://emailmarketing.net/learn/esp-operations/outbound-monitoring) and [Multi-Tenant Architecture](https://emailmarketing.net/learn/esp-operations/multi-tenant-architecture).
- **Compliance:** a rising complaint rate signals a problem with **consent quality** before it signals a deliverability problem. Sustained complaints above about 0.1% point to a problem with permission or expectations, not a technical one (see [Consent Methods](https://emailmarketing.net/learn/list-management/consent-methods)).

### Complaint (spam) rate

| Line | Value | Scope and who measures it | Denominator |
|---|---|---|---|
| Consensus healthy target | **< 0.1%** (≤ 1 per 1,000) | sender side, per account or list: AWS SES, Postmark, SendGrid | mail delivered |
| Klaviyo house number (stricter) | **< 0.01%** (≤ 1 per 10,000) | sender side, per account or list: Klaviyo (deliberately conservative, not consensus) | mail delivered |
| "High" in practice | even **0.08%** can be high | sender side: SendGrid | mail delivered |
| **Gmail and Yahoo violation ceiling** | **0.3%**, which must never be reached | **mailbox provider, per sender domain**: the Google and Yahoo bulk-sender rules of Feb 2024 | **mail delivered to the inbox** (Gmail: DKIM-authenticated mail delivered to the inbox) |
| SES enforcement (network or pool) | review at **0.1%**, pause at **0.5%** | **infrastructure, per AWS account**. It protects the shared-IP network and is not a target that keeps deliverability safe; see [Account Enforcement](https://emailmarketing.net/learn/esp-operations/account-enforcement) | mail delivered |

**These lines are not directly comparable.** The provider measures the Gmail and Yahoo **0.3%** ceiling against mail delivered to the inbox for each domain, while the sender-side and SES numbers are measured against mail delivered, at the scope of an account or pool. Because Gmail's denominator excludes mail already sent to spam, **your ESP dashboard can read 0.1% of delivered mail while your Gmail spam rate is already near the 0.3% limit**. In practice, senders should aim for the provider target of **< 0.1%** for each domain. ESP operators should set their own auto-pause lines for pools and tenants below the 0.3% ceiling (near 0.1%), and never at SES's looser 0.5% network line.

### Bounce rate

| Line | Value | Source and meaning |
|---|---|---|
| Klaviyo house number (aspirational) | total bounce rate **< 1.0%** | Klaviyo, stricter than consensus |
| Healthy during warm-up | **< 2%** | Postmark (domain warm-up guide) |
| Operating ceiling | keep the hard-bounce rate **under 5%** | AWS SES ("reasonable and attainable goal, but isn't a universal rule across all ISPs"); Postmark (for the whole domain) |
| Absolute ceiling | **never exceed 10%** | Postmark: investigate immediately at or above this rate |
| SES enforcement | hard bounces under review at **5%**, account may be paused at **10%** | AWS SES (per **account**, at network or pool scope); see [Account Enforcement](https://emailmarketing.net/learn/esp-operations/account-enforcement) |

**Scope note:** the bounce rate is by nature a **sender-side** metric. No mailbox provider publishes a bounce ceiling, because bounces are what your MTA observes, not what recipients do. All the lines above are therefore measured by the sender. They differ by the entity they apply to: Klaviyo and Postmark quote quality lines for each **list** or domain, while SES enforces for each **account** to protect its shared-IP **network**. They also differ by denominator: hard bounces divided by mail sent, or total bounces divided by mail delivered. The complaint rate above is different, because there the binding ceiling is set by the mailbox provider for each domain.

### Open rate (after MPP)

Since Apple Mail Privacy Protection, a raw open rate is really a rate of pixel loads, inflated by machine opens (see [Open and Click Tracking Mechanics](https://emailmarketing.net/learn/operations/open-and-click-tracking-mechanics) and [Tracking and Measurement Distortion](https://emailmarketing.net/learn/operations/tracking-and-measurement-distortion)). Read every open benchmark according to whether it **includes machine opens** (raw pixel loads, inflated by MPP) or **excludes machine opens** ("human" opens, with prefetches and bots filtered out):

| Basis | Healthy | Spam-folder warning | Source |
|---|---|---|---|
| Machine opens included (raw) | **≥ 33%** | Not stated | Klaviyo |
| Machine opens excluded (human, no prefetch) | **> 25%** (Braze) or **> 35%** (Bird) indicates widespread inbox placement | **< 20%** suggests placement in the spam folder | Braze, Bird; see [Open and Click Tracking Mechanics](https://emailmarketing.net/learn/operations/open-and-click-tracking-mechanics#opens-as-a-deliverability-signal--the-honest-reading) |

The older GreenArrow band of "5%–20%+ for good senders" predates MPP and is outdated as a benchmark for raw opens (see [Two Worlds](https://emailmarketing.net/learn/strategy/two-worlds-of-email-deliverability)). Do not use it to judge a modern list with many Apple users. Whatever the number, judge **audience** engagement on clicks and conversions, not opens, and use the trend in open rate only as a rough signal of placement.

## Corrective-action triggers

Postmark's domain warm-up guide pairs each metric breach with a concrete change in volume. The pairs are useful during any ramp-up (see also [IP Warm-Up](https://emailmarketing.net/learn/ip-management/ip-warm-up)):

| Trigger | Action |
|---|---|
| Bounce rate exceeds 3% | Reduce volume 40–50% |
| Open rate falls below 10% | Reduce volume 25–30% and refocus on engaged subscribers |
| Spam complaints exceed 0.1% | Immediately identify and pause the affected segments |
| Throttling or deferrals from a provider | Reduce daily volume 20–30% or spread sends across more hours |
| Listed on a major blocklist | Stop sending immediately; delist; restart at significantly reduced volume |

The same guide sets a general rule: **never** increase volume until you have reviewed performance **for each receiving provider**. If engagement and bounce rates look normal, the next day's increase is likely safe.

## Content quality as a metric input

Beyond behavioral rates, receivers run **content filters** over every message. AWS SES gives this guidance for staying on the right side of them:

- Modern content filters adapt continuously and do not use a fixed set of rules. Third-party services for seed and content testing can identify content that triggers filters before you send.
- Check every URL in the message against DNS-based blocklists (DNSBLs) such as URIBL.com and SURBL.org.
- **Avoid link shorteners.** When spammers abuse a shortening service and it is denylisted, every message that links through it is filtered.
- Test that every link points where you intend.
- Link to up-to-date Privacy Policy and Terms of Use pages from each email.
- For content you send often (for example, daily deals), vary the content of each send. Repetitive identical content reads as spam.

Postmark adds three recommendations: avoid shortened URLs (especially bit.ly), limit image-heavy layouts, and always include a plain-text alternative to the HTML part. Tiny changes can trigger content filtering. In one Postmark case, adding a phone number to a template triggered Gmail's spam filtering. When placement drops after a template change, revert the changes one at a time to isolate the cause.

## Related articles

- [List Hygiene and Sunset Policies](https://emailmarketing.net/learn/operations/list-hygiene-and-sunset-policies), on what to do with the addresses behind bad metrics
- [Sending Infrastructure Practices](https://emailmarketing.net/learn/operations/sending-infrastructure-practices), on feedback loops and reputation monitoring tools
- [Foundations of Email Deliverability](https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability)
