# Add DNS records · Azure DNS

<!-- external-screenshot: Azure portal → DNS zones → your zone → Record sets -->

If your domain's DNS is hosted in an Azure DNS zone, this page walks you through publishing the records Bird asks for on a sending domain: a DKIM TXT record, a return-path CNAME, an optional tracking CNAME, and a DMARC TXT record. Bird does not ask you to add an SPF record at your domain's apex — see [DKIM, SPF & DMARC](/docs/guides/email/dkim-spf-dmarc) for why.

Before you start, open your domain's detail page in the Bird dashboard and keep it visible — every host and value below is copied from there, not 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)

## Find your DNS zone

1. Sign in to the [Azure portal](https://portal.azure.com).
2. In the search bar at the top, type **DNS zones** and select it from the results.
3. Click the zone that matches your sending domain (for example `example.com`).
4. You land on the zone's overview, which lists the existing record sets. Each record below is added with the **+ Record set** button at the top.

## Add the records

For each record, click **+ Record set** and fill in the pane that opens on the right. The **Name** field is relative to the zone — enter only the part before your domain name (and `@` would mean the zone apex itself, which none of Bird's records use).

### DKIM (TXT)

1. Click **+ Record set**.
2. **Name**: paste the DKIM host from Bird, but remove your domain from the end — for `example.com` you enter `<selector>._domainkey`, not the full hostname.
3. **Type**: select **TXT** from the dropdown.
4. **Value**: paste the DKIM value exactly as shown in Bird (`v=DKIM1; k=rsa; p=...`). If Azure rejects it as too long for a single string, run it through the [DNS record splitter](/tools/dns-record-splitter) to get quoted chunks it will accept.
5. Leave TTL at the default and click **OK** (or **Add** in the newer portal experience).

### Return-path (CNAME)

1. Click **+ Record set**.
2. **Name**: `send` (or whatever subdomain your Bird dashboard shows before your domain name).
3. **Type**: select **CNAME**.
4. **Alias**: paste the value from Bird, for example `<region>.bounce.bird.com`.
5. Click **OK**.

### Tracking (CNAME, optional)

This record only enables branded open and click tracking — your domain can verify and send without it.

1. Click **+ Record set**.
2. **Name**: `links` (or the subdomain shown in Bird).
3. **Type**: select **CNAME**.
4. **Alias**: paste the value from Bird, for example `<region>.links.bird.com`.
5. Click **OK**.

### DMARC (TXT)

1. Click **+ Record set**.
2. **Name**: `_dmarc`.
3. **Type**: select **TXT**.
4. **Value**: paste the DMARC value from Bird, for example `v=DMARC1; p=none; rua=mailto:example.com@dmarc.bird.com;`.
5. Click **OK**. If you already have a DMARC record at this domain or a parent domain, you can keep it — Bird only requires that a valid DMARC record exists.

## Azure gotchas

- **Names are relative to the zone.** Azure appends the zone name to whatever you type in the Name field — entering `send.example.com` in the `example.com` zone creates `send.example.com.example.com`. Enter only the leading label(s); `@` is reserved for the zone apex.
- **Pick the type before you fill in values.** The pane's value fields change with the record type dropdown — if you do not see an Alias field for a CNAME or a Value box for a TXT record, check the type selection first.
- **A CNAME record set holds exactly one value.** TXT and most other Azure record sets accept multiple values, but a CNAME record set cannot — and Azure will also refuse a CNAME at a name where other records already exist. If the portal rejects the record, check for a conflicting record set at the same name.
- **The zone only matters if it is delegated.** An Azure DNS zone answers queries only when your registrar's name servers point at it. On the zone's overview, copy the four `*.azure-dns.*` name servers and confirm they match the NS records set at your registrar — otherwise the records you add here are invisible to the rest of the internet.

## After you publish

There is nothing to click in Bird — verification is automatic. Bird starts checking your DNS within seconds of the domain being added and re-checks frequently, so most domains flip to verified within minutes of the records going live. You can also trigger an immediate re-check from the domain's detail page in the dashboard. If the domain stays pending longer than you expect, see [Verification delays](/docs/knowledge-base/dns-and-domains/verification-delays).

## Next steps

- [Sending domains](/docs/guides/email/sending-domains) — adding and managing domains end to end
- [DKIM, SPF & DMARC](/docs/guides/email/dkim-spf-dmarc) — what each record proves and why there is no apex SPF record
- [Verification delays](/docs/knowledge-base/dns-and-domains/verification-delays) — what to check when a domain stays pending