# Tracking & metrics

The **Metrics** page in the Bird dashboard is where you see how your email is doing: how much of it reached the inbox, how recipients engaged, and whether your bounce or complaint rates are drifting toward trouble. This guide starts with that page — what each number means and when to act on it — then explains the open- and click-tracking instrumentation that produces the engagement numbers behind it.

Metrics are the aggregate view across everything your workspace sends. For the per-recipient outcome of a single message — did _this_ address bounce, open, or click — see [events and webhooks](/docs/guides/email/events).

## Read your metrics

The [**Metrics**](https://bird.com/dashboard/w/email/metrics) page lives at **Email → Metrics** in the Bird dashboard. Every number respects the range picker in the top right (last 24 hours, 7, 30, or 90 days) and updates as new events arrive, so a report you open now reflects sends and engagement up to the last few minutes.

![The Metrics page in the Bird dashboard: the delivery, open, bounce, and complaint rate cards above the delivery and engagement over time chart](/images/docs/dashboard-email-metrics.png)

Rates are computed against **event time, not send time** — engagement earned today for a message sent last week lands in today's numbers, and a bounce that arrives hours after the send counts when it arrives.

### The four health cards

The row of cards at the top is your at-a-glance health check. Each shows a rate for the selected range, the count behind it, and a **Healthy** or **Risk** label so you can tell at a glance whether anything needs attention.

- **Delivery rate** — the share of accepted messages that reached the recipient's mail server. Bird marks it Healthy above 95%; below that, something is rejecting your mail (bad addresses, authentication gaps, or reputation problems) and the bounce breakdown below tells you which.
- **Open rate** — unique opens as a share of delivered mail, counting only opens Bird can attribute to a person (see [prefetched opens](#open-tracking) below). Healthy above 35%. Treat opens as a soft signal: a missing open doesn't mean the message went unread (text-only clients, blocked images), so prefer clicks for decisions that matter.
- **Bounce rate** — the share of messages that failed delivery. The card shows your rate against a **5% limit**; at or above it the card flips to Risk. Sustained high bounces mean list-hygiene problems and put your sending reputation at risk.
- **Complaint rate** — the share of delivered mail that recipients marked as spam. The limit here is **0.1%** — small, because mailbox providers act on complaints fast. This is the number to watch most closely; crossing it can get your mail throttled or blocked at the provider.

The 95% / 35% / 5% / 0.1% thresholds are the guardrails Bird uses to color the cards. They're deliberately conservative — a card can read Healthy and still have room to improve.

### Delivery & engagement over time

The main chart plots **sent**, **opened**, and **bounced** volume across the range so you can spot trends and one-off spikes — a bad send, a list import gone wrong, a campaign that landed well. The bucket size follows the range (hourly for 24 hours, daily for longer windows).

### Bounce rate and its causes

Below the chart, the bounce card breaks your bounces down by cause, so a rising bounce rate points you at the fix:

- **Hard** — permanent failures (invalid address, non-existent domain). These auto-[suppress](/docs/guides/email/suppressions) the address.
- **Soft** — transient failures (mailbox full, server temporarily unavailable). Bird retries these.
- **Block** — the receiving server blocked your sending IP for reputation reasons.
- **Admin** — administrative refusals (relaying denied, a blocklisted domain).
- **Undetermined** — the server's response was too ambiguous to classify.
- **Out-of-band** — a late bounce that arrived _after_ the message was already accepted; it doesn't change the recipient's delivered status but still counts against your sender health.

These map to the same `bounce_type` values on the event stream — see the [bounce classification table](/docs/guides/email/events#bounce-classification) for the underlying codes.

### Complaint rate over time

The complaint card charts your spam-complaint rate across the range. Because the healthy ceiling is so low, watch the _shape_ here as much as the number: a steady climb, even below the limit, is an early warning that a segment or campaign is annoying recipients.

### Delivery latency

The latency table shows how long messages take to move through the pipeline, split into **Processing** (Bird accepting and queueing the message), **Delivery** (time at the receiving server), and **Total**, each at the p50, p95, and p99 percentiles. Use p95/p99 to catch the slow tail — a healthy median with a slow p99 usually points at one provider deferring your mail.

### Breakdowns

The **Breakdowns** panel slices the same delivery and engagement numbers three ways, so you can compare senders side by side and isolate a problem to its source:

- **By domain** — each sending domain's sent, delivered, bounce, open, complaint, and health status.
- **By IP** — the same per sending IP, with the pool each IP belongs to.
- **By tag** — the [tags](/docs/guides/email/sending-email) you set at send time. This is the most flexible cut: tag a campaign, template, or experiment variant and compare them directly.

Each tab ranks the top senders for the range and supports a search filter; when a dimension has more distinct values than fit, the panel notes "Top N of M".

![The lower half of the Metrics page: the delivery-latency table (processing, delivery, and total at p50/p95/p99) above the Breakdowns panel, with delivery and engagement broken down by sending domain, IP, and tag](/images/docs/dashboard-email-metrics-breakdowns.png)

### A note on sandbox traffic

Sends to [sandbox addresses](/docs/guides/email/testing-sandbox) on `messagebird.dev` **count toward these metrics** — a heavy test run moves your dashboard numbers and bounce/complaint rates. Because sandbox sends never leave Bird, they never affect your real sending reputation, but keep them in mind when reading a range that includes testing.

## How tracking works

Open and click tracking are what turn a delivered message into the engagement numbers above. You enable them per sending domain on the [**Domains**](https://bird.com/dashboard/w/email/domains) page (**Email → Domains**), where you also add the tracking CNAME. Both are opt-in and instrument each message as it's sent.

### Open tracking

When open tracking is enabled, Bird injects a transparent tracking pixel into the HTML part of your message. When a recipient's mail client fetches the pixel, Bird records an `email.opened` event.

Modern inboxes complicate this signal: Apple Mail Privacy Protection and Gmail's image proxy auto-fetch images on the recipient's behalf, producing opens that no human triggered. Bird flags these as prefetched (`is_prefetched: true`) on the open event and counts raw and non-prefetched opens separately. Your open rate is based on **unique non-prefetched opens over delivered**, so privacy-proxy noise doesn't inflate it — and a recorded open may still be a proxy prefetch, which is why opens are a soft signal.

### Click tracking

When click tracking is enabled, Bird rewrites the links in your HTML through a tracking redirect: the recipient clicks the rewritten URL, Bird records an `email.clicked` event (including the original `url`), and immediately redirects to the destination.

Rewritten links are served from your domain's **branded tracking hostname** — the tracking CNAME you configure on your [sending domain](/docs/guides/email/sending-domains) (by default `links.` under your sending domain). Click and open tracking only run once that CNAME has verified; until then nothing is rewritten or pixelled. Once it verifies, tracked links are served over HTTPS from your own branded hostname. Tracking readiness is reported separately from sending readiness (`capabilities.tracking` vs `capabilities.sending` on the domain resource) — an unverified tracking CNAME never blocks sending, only tracking.

### Per-send toggles

`track_opens` and `track_clicks` are per-send booleans on [`POST /v1/email/messages`](/docs/guides/email/sending-email), and both default to `true`. Set either to `false` to skip pixel injection or link rewriting for that send — common for transactional mail where rewritten links are undesirable (password resets, security notifications).

Effective tracking is the **AND** of the per-send flag and your domain's tracking settings: a message is tracked only when the per-send flag is `true`, your domain's open or click tracking setting is enabled, and the tracking CNAME has verified. Those domain-level settings default to off, so even though `track_opens` and `track_clicks` default to `true`, opens and clicks aren't tracked until you set up and verify a branded tracking domain and turn the setting on — a per-send `true` can't enable tracking on its own. A per-send `false` always suppresses tracking for that message. The message resource echoes the resolved values back on reads.

## Advanced analytics

The Metrics page covers your own sending. Two Bird products go further, beyond what you can see from your own event stream:

- **[Inbox Tracker](https://bird.com/en-us/products/email/inbox-tracker)** — inbox placement monitoring: where your mail actually lands (inbox, spam, or missing) across mailbox providers, plus authentication and reputation signals.
- **[Competitive Tracker](https://bird.com/en-us/products/email/competitive-tracker)** — benchmark your email program against competitors: their send volume, campaign cadence, and subject lines.

Both are enterprise add-ons — [contact sales](https://bird.com/en-us/demo) to discuss access.

## Next steps

- [Events and webhooks](/docs/guides/email/events) — the per-recipient event stream behind the aggregate view
- [Sending domains](/docs/guides/email/sending-domains) — setting up the tracking CNAME for branded links
- [Sending email](/docs/guides/email/sending-email) — `track_opens`, `track_clicks`, and tags on the send payload