# Add DNS records · Cloudflare

<!-- external-screenshot: Cloudflare → DNS → Records → Add record -->

When you add a sending domain to Bird, the domain's detail page in the Bird dashboard lists every DNS record to publish, each with a copyable host and value. Keep that page open in one tab and the Cloudflare dashboard in another — every value below is copied straight from Bird, never typed by hand.

![A domain's DNS Records page in the Bird dashboard, showing the verified DKIM record with copyable name and value, and the return-path and DMARC sections below](/images/docs/dashboard-email-domain-detail.png)

## The records you'll add

| Type  | Host                                | Value (copy from Bird)     |
| ----- | ----------------------------------- | -------------------------- |
| TXT   | `<selector>._domainkey.example.com` | Your DKIM key              |
| CNAME | `send.example.com`                  | `<region>.bounce.bird.com` |
| TXT   | `_dmarc.example.com`                | Your DMARC policy          |
| CNAME | `links.example.com` (optional)      | `<region>.links.bird.com`  |

The tracking CNAME (`links`) is optional — it only enables branded open and click tracking, not sending itself.

## Add the records in Cloudflare

1. Log in to the [Cloudflare dashboard](https://dash.cloudflare.com) and select the account that holds your domain.
2. Click your domain in the list, then choose **DNS** → **Records** in the left sidebar.
3. Click **Add record**.
4. For the DKIM record: set **Type** to **TXT**, paste the host from Bird into **Name**, and paste the DKIM value into **Content**. If the value is too long for Cloudflare to accept as one string, run it through the [DNS record splitter](/tools/dns-record-splitter) first. Leave **TTL** on **Auto**. Click **Save**.
5. Click **Add record** again. For the return-path record: set **Type** to **CNAME**, enter the host (for example `send`), paste the target from Bird (for example `<region>.bounce.bird.com`) into **Target**, and switch **Proxy status** to **DNS only** (the cloud icon turns grey). Click **Save**.
6. Click **Add record** again. For the DMARC record: set **Type** to **TXT**, enter `_dmarc` as the **Name**, and paste the DMARC value from Bird into **Content**. Click **Save**.
7. If you want branded tracking, add the optional tracking record the same way as step 5: **Type** **CNAME**, **Name** `links`, **Target** `<region>.links.bird.com`, **Proxy status** **DNS only**. Click **Save**.

## Cloudflare-specific gotchas

- **Turn the orange cloud off.** Cloudflare proxies CNAME records by default (orange cloud, "Proxied"). A proxied record answers with Cloudflare's IPs instead of Bird's hostnames, which breaks bounce routing and stops verification from ever succeeding. Both CNAME records must be set to **DNS only** (grey cloud).
- **Watch the Name field.** Cloudflare accepts both a bare label (`send`) and a fully qualified name (`send.example.com`) and appends the zone when needed — but if you paste a full name into a field where you already typed part of it, you can end up with `send.example.com.example.com`. After saving, check that the record's name reads exactly as Bird shows it.
- **Propagation is fast.** Cloudflare publishes changes to its nameservers within seconds, so there is rarely any waiting once the records are saved correctly.

## After you publish

Bird checks your DNS automatically — verification usually completes within minutes of the records going live, and you can trigger an immediate re-check from the domain's detail page. If the domain stays pending longer than expected, see [Verification delays](/docs/knowledge-base/dns-and-domains/verification-delays).

## Next steps

- [Sending domains](/docs/guides/email/sending-domains)
- [DKIM, SPF & DMARC](/docs/guides/email/dkim-spf-dmarc)
- [Verification delays](/docs/knowledge-base/dns-and-domains/verification-delays)