# Why do statistics not match?

> Two reports disagree — denominator splits, the 7-day default filter, prospect-level counting, tracking gaps, and deletions that move the numbers.

**Mismatches usually come from definitions, not lost data: delivery and bounce rates divide by Total people while open and reply rates divide by Contacted, the Stats tab defaults to the last 7 days, key metrics count each prospect once, and opens rely on a tracking pixel that is off by default. Compare time filters and denominators first.**

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

## Symptom

The same metric shows different values in two places — the sequence Stats tab against a
report export, Reply against your CRM, or today against yesterday. Almost always the two
numbers are computed from different definitions, windows, or tracking states rather than
from missing data.

## Most likely causes

| # | Cause | Detail |
| --- | --- | --- |
| 1 | Different denominators | Delivery rate and bounce rate divide by **Total people** (Contacted + Out of Office + Bounced + Auto Replied); open, reply, interested, meetings, and opt-out rates divide by **Contacted** only — [Statistics calculation](/behavior/statistics-calculation) |
| 2 | Different time filters | The sequence Stats tab shows the **last 7 days by default**; All time and custom ranges are separate views, and the total for multiple time ranges may be higher than the overall total |
| 3 | Prospect counting, not email counting | Key metrics are prospect metrics — multiple emails (steps) to one contact count **once**; a contact reached via several channels is also counted once |
| 4 | Tracking is off or blocked | Open and click tracking are **disabled by default** per sequence; the opens tracker is a pixel, so a prospect with images disabled — or an email delivered to spam, where images are not displayed — never shows Opened |
| 5 | Deletions changed the base | Deleting a contact decreases Total people; deleting a team member does not change team-report metrics; opt-out counts follow their own rules when statuses or contacts are removed |
| 6 | Different email populations | Direct ("one-shot") emails are tracked in the prospect card's Emails tab, apart from sequence stats; a LinkedIn connection request **without** a note is not counted as contacted |
| 7 | Chart date grouping | On the performance chart, Bounced and Opt out bars are grouped by the date the email was **sent**, not the date the bounce or opt-out happened — and both series are hidden until you click them in the legend |

## Diagnostic checklist

1. Write both numbers down with their exact source view, time filter, and any owner or account filters.
2. Align the time window: switch both views to All time, or the same custom range, before comparing — remember the Stats tab default is the last 7 days.
3. Compare definitions in [Calculations](/reference/calculations): same numerator, same denominator? Reply rate = Replies × 100 ÷ Contacted, while bounce rate = Bounced emails × 100 ÷ Total people.
4. Check what each side counts: prospect-level key metrics against per-email or per-event counts, sequence stats against one-shot emails in the prospect card.
5. Check tracking: are opens and clicks enabled for the sequence in question? Clicks are also not tracked for emails sent with the Send test button.
6. Ask what changed since the older number: deleted contacts shrink Total people, and the reply rate is based on historical data and may change over time.

## Resolution

Align the definitions and re-compare — in practice that resolves the gap. Pick one view
per metric as the team's reference, use the same time filter on both sides, and read rates
against their documented denominator. If opens look impossibly low, enable open tracking
(Sequence Settings, General) and accept that pixel blocking undercounts opens regardless.
If numbers differ from your CRM, check sync timing and each system's reply definition
before suspecting the data — see [Sync Reply with a CRM](/workflows/sync-reply-with-a-crm).
A genuine data problem — events visibly missing after full alignment — is worth a support
ticket with both views captured.

## Verification

After aligning the time range, denominator, and population, recompute both numbers — they
should now agree within late-arriving events. Re-check after a day boundary: counters keep
updating as opens and replies arrive, and the reply rate may shift because it is based on
historical data.

## Prevention

Standardize which view your team quotes for each metric and annotate dashboards with the
denominator (Total people or Contacted). Keep tracking settings consistent across
sequences so open rates stay comparable, and avoid deleting contacts mid-analysis — the
denominators move with them. The formulas live in
[Statistics calculation](/behavior/statistics-calculation) and
[Calculations](/reference/calculations).

## FAQ

### Why is my open rate low when plenty of people reply?

Two reasons: open tracking is disabled by default per sequence, and even when enabled it
relies on a pixel — prospects with images disabled, or emails landing in spam where images
are not displayed, never register as Opened. Opens can also over-count when a provider's
email checker loads the message.

### Why did Total people decrease?

Deleting a contact decreases the Total people value, which also shifts every rate that
divides by it (delivery and bounce rates). Deleting a team member from team reports does
not change the metrics. See [Statistics calculation](/behavior/statistics-calculation).

### The chart shows bounces on days I did not send — why?

It does not: Bounced and Opt out bars are grouped by the date the email was sent, not the
date the bounce or opt-out itself happened. Both series are hidden by default — click them
in the chart legend to reveal them.

## Related

- [How statistics are calculated](/behavior/statistics-calculation) — every formula and both denominators
- [Calculations](/reference/calculations)
- [Analyze campaign performance](/how-to/analyze-campaign-performance)
- [Campaign analytics](/capabilities/campaign-analytics)

## Build with Reply

- REST API: [docs.reply.io](https://docs.reply.io/api-reference/introduction) — pull raw counters and compute your own rates
- CLI: [agents.reply.io/cli](https://agents.reply.io/cli)
