# Open and click tracking

Open and click tracking are what turn a delivered message into the engagement numbers on the [Metrics dashboard](/docs/guides/email/tracking-and-metrics). 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**, so privacy-proxy noise doesn't inflate it. A recorded open may still be a proxy prefetch, which is why opens are a soft signal; prefer clicks for decisions that matter.

## 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 it is `links` under your sending domain: `links` on `mail.acme.com` becomes `links.mail.acme.com`. Tracking only runs 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/api/reference/create-email-message), and both default to `true`. Set either to `false` to skip pixel injection or link rewriting for that send, which is 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 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, both in the send response and on later reads.

## Next steps

- [Sending domains](/docs/guides/email/sending-domains): add and verify the tracking CNAME.
- [Email metrics](/docs/guides/email/tracking-and-metrics): where the engagement numbers land and what healthy looks like.
- [Events and webhooks](/docs/guides/email/events): the `email.opened` and `email.clicked` events these instruments produce.