Delivery, opens, clicks, bounces, and complaints become numbers you can query, sliced by domain, ISP, IP, sending domain, and tag. In the dashboard and via the stats API, down to the hour.
import { BirdClient } from "@messagebird/sdk";
import { render } from "@react-email/render";
import { WelcomeEmail } from "./emails/welcome";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const { data, error } = await bird.email.send({
from: "Bird <hello@bird.com>",
to: ["ada@example.com"],
subject: "Your invite is ready",
html: await render(<WelcomeEmail name="Ada" />),
}).safe();
if (error) throw error;
console.log(data.id);
// → "em_2bX91Yk8h..."You can sign in any time at bird.com/login.
Your test API key is on your dashboard, ready to send.
The numbers in the API match the numbers in your dashboard.
Email analytics are part of the Bird Email API, not a separate add-on, so the same data the dashboard charts is available to query and export. Binance grew marketing email volume 2.5x while keeping engagement high by watching these numbers.
Five ways to see your email.
From a single KPI to a per-ISP breakdown.
- 01
Delivery + engagement KPIs.
Sent, delivered, opens, clicks, bounces, and complaints in a single summary you can pull on demand.
- 02
Slice by anything.
Per domain, per ISP, per IP, per sending domain, per recipient domain, per tag or category, per broadcast.
- 03
Bounce + complaint analysis.
Bounce codes and complaint types broken out, so you fix the cause rather than chase the symptom.
- 04
Mailbox-provider + client breakdowns.
See how Gmail, Yahoo, Outlook, and Apple Mail treat your mail, and which clients actually open it.
- 05
Daily + hourly granularity.
Query a day or a single hour. Backfill reports, or stream the numbers into your own dashboards.
Every chart is a query you can run yourself.
Pull a summary KPI, then break any metric down by a dimension (recipient domain, mailbox provider, sending IP, tag, or category) at daily or hourly grain. The same numbers the dashboard charts, in your own tooling.
// A single summary…
const { data } = await bird.email.stats.summary({
from: "2026-06-01",
to: "2026-06-23",
tag: "campaign:spring-2026",
}).safe();
// → { delivered_count, open_rate, click_rate, bounce_rate, … }
// …or the same metrics, broken down by mailbox provider.
const byProvider = await bird.email.stats.mailboxProviders({
from: "2026-06-01",
to: "2026-06-23",
});
// → gmail, yahoo, microsoft, apple … each with its own ratesOpen rates you can actually trust.
Apple Mail Privacy Protection and Gmail's image proxy pre-fetch images on the recipient's behalf, registering opens no human triggered. Bird flags those prefetched opens and computes your open rate from the real, non-prefetched ones, so the number means something. When a decision really matters, lean on clicks: prefetchers load pixels, but they rarely follow links.
Go deeper in the docs.
See what's tracked in the tracking & metrics guide, and wire near-real-time data into your stack with email events and webhooks.
Email analytics FAQ
What email metrics does Bird track?+
Can I get the data via API, not just the dashboard?+
How fresh are the numbers?+
Can I see how specific mailbox providers treat my mail?+
The rest of the Email platform
One API, one set of keys. Explore the other capabilities.
About 40% of the world's commercial email already runs on Bird.
Transactional and marketing email on infrastructure we've run for a decade. Analytics is one capability of the Bird Email API: sending, deliverability, dedicated IPs, and suppression ship with it.