Documentation
Sign inGet started

WhatsApp metrics

The Metrics page in the Bird dashboard is where you see how your WhatsApp channel is doing: how much of it reached the recipient's device, whether your failure rate is drifting toward trouble, and what it's costing you. 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, not send time: a delivery receipt that arrives today for a message accepted yesterday lands in today's numbers. accepted is the denominator for both rate cards; it's the count of messages Bird admitted in the range, and every rate is measured against it.
The WhatsApp Metrics page in the Bird dashboard: the delivery-rate, failure-rate, accepted-volume, and cost 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. Bird marks it Healthy above 95%; at or below that, something is failing to reach devices (invalid numbers, an expired care window, or a template problem) and 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).
  • Cost: what the messages in the range cost, alongside the message count it's spread over. WhatsApp is priced per message by template category, so this moves with your category mix as much as your volume.
The 95% and 5% thresholds are the guardrails Bird uses 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 (the Failure rate summary tile holds the whole-window figure), and a histogram breaks failures down by Bird-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 Bird hands it to the WhatsApp network. This stage is entirely Bird's pipeline, so a slow percentile here is a Bird-side signal.
  • 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 Bird doesn't control (a phone that is offline for an hour stretches Total, not Processing).
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 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 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

  • WhatsApp log: the per-message view behind the aggregate numbers
  • Events: the per-message lifecycle stream the metrics are derived from
  • Sending WhatsApp messages: categories, tags, and the per-message cost model behind spend