# How statistics are calculated

> Every email-metric formula — Total people, Contacted, and the denominator split that puts delivery and bounce rates over Total but open and reply rates over Contacted.

**Every rate divides one counter by a defined denominator. Delivery rate and bounce rate divide by Total people — Contacted plus Out of Office, Bounced, and Auto Replied — while open, reply, interested, meetings, and opt-out rates divide by Contacted only. A LinkedIn connection request without a note does not count as contacted.**

_Status: Reviewed — human-edited, facts not yet confirmed against the product._

## At a glance

| Aspect | Detail |
| --- | --- |
| **What it governs** | The formula behind every key email metric in the Sequence Stats tab and the Email dashboard in Reports |
| **Trigger** | An outreach event: delivery, open, reply, bounce, auto-reply, opt-out, booked meeting |
| **Inputs** | Contact counts by status, delivered and opened emails, replies across channels, inbox categories |
| **Result** | Counters and rates update; opt-out rate updates in real time |
| **Configurable** | Opens and link tracking gate the open and click counters — see [Sequence execution](/behavior/sequence-execution) |
| **Does not** | Count a LinkedIn connection request without a note as contacted, count auto-replies or bounces as contacted, or judge message quality |
| **Plans** | The metrics are the same across the Sequence Stats tab and the Email dashboard in Reports |

## Rule summary

Every reported rate is one counter divided by one of two denominators. **Total people** —
the overall number of contacts in the sequence — is the denominator for delivery rate and
bounce rate. **Contacted** — contacts who received at least one email, excluding Out of
Office, Bounced, and Auto Replied — is the denominator for open, reply, interested,
meetings-booked, and opt-out rates. The two are linked by one identity:

```
Total = Contacted + Out of Office + Bounced + Auto Replied contacts
```

## Trigger

An outreach event arrives and the matching counter moves: a delivery, a tracked open or
click, a reply on any channel, a bounce, an auto-reply, an opt-out, or a booked meeting.

## What counts as Contacted

For the reply rate, **Contacted** counts all distinct contacts who received at least one
of the following: an email step, a LinkedIn connection request **with** a note or message,
or a LinkedIn message or InMail. Two boundaries matter:

- A LinkedIn connection request **without** a note or message is **not** counted as contacted.
- A contact reached via multiple channels is counted **once** (distinct).

**Replies** counts all distinct contacts who replied via at least one of: email, a
LinkedIn message or InMail, or a LinkedIn connection request (with a note/message). The
reply rate is based on historical data and may change over time.

## The formulas

Each formula below is verbatim from the metric definitions:

| Metric | Formula | Denominator |
| --- | --- | --- |
| Total people | Total = Contacted + Out of Office + Bounced + Auto Replied contacts | — |
| Delivery rate | Delivered emails × 100 ÷ Total people | Total people |
| Open rate | Opened emails × 100 ÷ Contacted | Contacted |
| Reply rate | Replies × 100 ÷ Contacted | Contacted |
| Interested | Interested × 100 ÷ Contacted | Contacted |
| Meetings booked | Meetings booked × 100 ÷ Contacted | Contacted |
| Opt-out rate | Opted out × 100 ÷ Contacted | Contacted |
| Bounce rate | Bounced emails × 100 ÷ Total people | Total people |
| Not reached | Out of Office + Bounced + Auto Replied contacts; rate = Not reached × 100 ÷ Total people | Total people |

The denominator split is deliberate: **delivery and bounce rates use Total people**, so
they measure list quality across everyone enrolled; **open, reply, interested, meetings,
and opt-out rates use Contacted**, so they measure engagement only among people who
actually received something. Delivery rate excludes Bounced contacts but **includes Out of
Office and Auto replies**; open and reply rates include neither. Interested counts come
from the Inbox category. Total accounts is the number of companies involved, based on
Total people.

## Result

Counters and rates update as events arrive. The opt-out rate updates in real time; update
timing for the other metrics is not documented. Hovering over Not reached on the Reports
page breaks it down into Out of Office, Bounced, and Auto Replied contacts.

## Deleting contacts and metrics

| Action | Effect on metrics |
| --- | --- |
| Delete a contact | Total people decreases |
| Delete a team member (team reports) | Metrics do not change |
| Remove the Opted Out status from a contact | The opt-out value changes |
| Delete a contact that has the Opted Out status | The opt-out metric does not change |
| Delete the contact from the sequence and remove the Opted Out status | The contact is not included in the stats |

## Exceptions

- **Totals across multiple time ranges can exceed the overall total** for a sequence — that is expected, not a bug.
- **CSV sequence reports use their own denominators**: Click through rate = Clicked count ÷ Delivered count × 100 (Delivered, not Contacted), while Open rate % and Reply rate % divide by Contacted count and Bounce rate % divides by Prospects count. Deleted email accounts are still included in report stats.
- **Opens and clicks require tracking to be enabled** — with opens or link tracking off, those counters stay at zero without meaning nobody opened. See [Statistics do not match](/troubleshooting/statistics-do-not-match).

## Configuration that changes this rule

The formulas themselves are fixed. Opens tracking and link tracking (Sequence > Settings >
General Settings, both off by default) determine whether open and click data exists at
all. Inbox categorization feeds the Interested metric — see
[Reply management](/capabilities/reply-management).

## Limits

| Limit | Value |
| --- | --- |
| Opt-out rate refresh | Real time |
| Reply rate stability | Based on historical data; may change over time |
| Time-range totals | The sum across ranges may be higher than the overall total |
| Update timing for other metrics | Not documented |

## FAQ

### Why is my delivery rate high while my open rate looks low?

Different denominators. Delivery rate divides by Total people and includes Out of Office
and Auto replies as delivered; open rate divides by the smaller Contacted count and
excludes them. The two rates are not directly comparable.

### Does an out-of-office reply count as a reply?

No. Out of Office and Auto Replied contacts are excluded from both Contacted and the
reply-rate numerator. They appear in Not reached instead — see
[Reply detection](/behavior/reply-detection) for how classification happens.

### Why did my reply rate change for a past period?

The reply rate is based on historical data and may change over time — for example, as
late replies arrive and distinct-contact counts update. Compare like for like before
treating it as an error; see [Statistics do not match](/troubleshooting/statistics-do-not-match).

### Does deleting a contact clean them out of my stats?

Deleting a contact decreases Total people, but an Opted Out contact's opt-out metric stays
unless you remove the status and delete them from the sequence. Deleting a team member
from team reports changes nothing.

## Related

- [Calculations](/reference/calculations) — the counter tables
- [Campaign analytics](/capabilities/campaign-analytics)
- [Analyze campaign performance](/workflows/analyze-campaign-performance)
- [Statistics do not match](/troubleshooting/statistics-do-not-match)

## Build with Reply

- REST API: [docs.reply.io](https://docs.reply.io/api-reference/introduction) — statistics and reporting endpoints
- CLI: [agents.reply.io/cli](https://agents.reply.io/cli) — the reports commands
