Documentation
Sign inGet started

WhatsApp metrics

The Metrics page in the Bird dashboard shows how your WhatsApp channel is doing: how much of it reached the recipient's device, whether your failure rate is drifting, and how fast it all moved. This guide walks through that page, what each number means, and when to act on it.
Metrics are the aggregate view across everything your workspace sends. For the lifecycle of a single message (did this number receive it, and when), see the WhatsApp log and events.

Read your metrics

The Metrics page lives at WhatsApp → Metrics in the Bird dashboard; it is visible to workspace members who hold both the WhatsApp read and Analytics read permissions. Every number respects the range picker (last 24 hours, 7, 30, or 90 days) and updates as new events arrive, so a report you open now reflects sends and delivery receipts up to seconds ago.
Rates are computed against event time rather than send time, so a delivery receipt that arrives today for a message accepted yesterday counts toward today. accepted is the denominator for both rate cards. It counts the messages we admitted in the range, and every rate is measured against it.
The WhatsApp Metrics page in the Bird dashboard: the delivery-rate, failure-rate, and accepted-volume summary tiles above the delivery-over-time chart

The summary tiles

The row of tiles at the top is your at-a-glance health check:
  • Delivery rate: delivered messages as a share of accepted. The tile reads Healthy above 95%. At or below that, something is failing to reach devices: invalid numbers, an expired care window, or a template problem. The failure-cause histogram (see Failure rate and its causes) tells you which.
  • Failure rate: the share of accepted messages that ended failed. The tile shows your rate against a 5% limit with a progress bar; reaching it flips the tile to Risk. A sustained high failure rate usually points at list quality, an expired customer service window, or a Meta rate limit.
  • Accepted: the raw count of messages accepted in the range, with the number handed on to the WhatsApp network (sent).
The 95% and 5% thresholds are the guardrails we use to color the tiles. They're deliberately conservative; a tile can read Healthy and still have room to improve.

Delivery over time

The delivery chart plots accepted, delivered, and failed volume across the range so you can spot trends and one-off spikes: a bad campaign, a number-list import gone wrong, a template that started getting rejected. The bucket size follows the range (hourly for 24 hours, daily for longer windows).

Failure rate and its causes

Below the delivery chart on the Metrics page, a failure-rate line plots the per-bucket failure rate across the range, while the Failure rate summary tile holds the whole-window figure. A histogram breaks failures down by normalized error code, ranked by count with each code's share of failed messages. WhatsApp's failure reasons are an open set, so the histogram lists whichever codes actually occurred in the range rather than a fixed list; a rising bar on one code points you straight at the fix.

Delivery latency

The latency table reports two stages at the p50, p95, and p99 percentiles:
  • Processing: from accepting a message until we hand it to the WhatsApp network. This stage is entirely our own pipeline, so a slow percentile here points at us.
  • Total: end to end, from accepting the message until WhatsApp confirms delivery to the recipient's device. The gap between Total and Processing is the WhatsApp network and the recipient's device, which we don't control. A phone that is offline for an hour stretches Total while leaving Processing unchanged.
Use p95/p99 to catch the slow tail: a healthy median with a slow p99 usually points at one template or destination lagging. Latency is a whole-window figure; a stage or percentile with no data for the range shows a placeholder.

Breakdowns

The Breakdowns panel slices the same delivery numbers so you can isolate a problem to its source:
  • By number: each sending business number's accepted, delivered, and failed volume with its delivery rate, so you can compare senders side by side.
  • By template: the same split per template, to find the one template dragging a rate down.
  • By template category: the same split across Meta's template categories, the cut that also drives your spend.
  • By tag: the tags you attach to a send, the most flexible cut: tag a campaign, template, or experiment variant and compare them directly.
Each row also gets a derived status (Healthy, Watching, or Throttled) driven by its own delivery and failure rates, so a struggling number or category stands out without you reading every column. Each tab ranks the top rows for the range; when a dimension has more distinct values than fit, the panel notes "Top N of M".
The lower half of the WhatsApp Metrics page in the Bird dashboard: the delivery-latency table (processing p50/p95/p99) above the Breakdowns panel, with delivery broken down by number, template, template category, and tag

Programmatic access

The metrics on this page are a dashboard surface; aggregate WhatsApp statistics are not part of the public API today. To build your own reporting, consume webhook events as they happen, or page through GET /v1/whatsapp/messages and each message's events endpoint, whose filters (status, recipient, tag, time window) cover most reconciliation jobs.

Next steps