How to verify a domain in Resend
Open Domains, click Add domain, enter your domain or a subdomain, pick a region and add the DNS records Resend shows (DKIM, SPF and MX) at your DNS provider. Then click Verify DNS records and wait for each record to show Verified.
This is for a developer sending email from an app through Resend, usually because the code is ready and sending fails until the domain is verified. Resend gives you a short list of DNS records to copy into your DNS provider. Most failures are a host name pasted with the domain twice, or simply DNS that has not propagated yet.
Before you start
You need a Resend account and access to the DNS settings of the domain, such as at Cloudflare, your registrar or Route 53.
- Time
- About 5 minutes, plus DNS propagation
- Account
- Not walked yet
-
1
Open Domains
Sign in to Resend and click Domains in the left menu.
You should see: A list of domains, empty if you have none, with an Add domain button.
-
2
Click Add domain
Click Add domain.
You should see: A form with a Name field and a Region choice.
-
3
Enter the domain and region
Enter the domain or subdomain you will send from, such as mail.example.com, choose the region closest to your app and click Add.
You should see: The domain's page listing DNS records with Type, Name, Content, TTL and Priority, each marked Pending or Not started.
-
4
Add the DKIM record
At your DNS provider, add the TXT record Resend lists for DKIM. Copy the Name (such as resend._domainkey) and the long Content value exactly.
You should see: A new TXT record saved at your DNS provider.
-
5
Add the SPF records
Add the MX record and the TXT record Resend lists for SPF, on the name it shows (such as send). Set the MX priority to the value Resend gives.
You should see: An MX and a TXT record on the sending subdomain at your DNS provider.
-
6
Click Verify DNS records
Back in Resend, click Verify DNS records (it may read Verify).
You should see: Each record's status changes to Verified, or stays Pending while DNS propagates.
-
7
Wait for Verified
If records stay Pending, wait and check again later. When every record shows Verified, the domain's status reads Verified and you can send from any address on it.
You should see: The domain marked Verified in the Domains list.
If it does not work
A record stays Pending for hours. Look the record up with a DNS checker or dig. If it is missing, the host name probably has the domain added twice; remove the domain part from the Name at your DNS provider.
Cloudflare DNS records do not verify. Set the records to DNS only, not proxied (grey cloud). Proxied records hide the value Resend is checking.
Sending fails with The domain is not verified, or a 403 from the API. The address you send from must be on the verified domain exactly. A domain verified as mail.example.com does not cover hello@example.com.
The status reads Failed. Resend stopped checking after too long. Fix the records, then click Verify DNS records again or remove and re-add the domain.
Questions
Should I verify my root domain or a subdomain?
A subdomain such as send.example.com or mail.example.com keeps your app's mail separate from your team's mailbox reputation and avoids clashing with an existing SPF or MX record on the root.
Which region should I choose?
The region closest to where your app runs, such as us-east-1 or eu-west-1. It cannot be changed later without removing and re-adding the domain.
Why does the record not verify when I pasted it exactly?
Many DNS providers add the domain to the host for you. If Resend shows resend._domainkey and you paste resend._domainkey.example.com, the record ends up at resend._domainkey.example.com.example.com. Paste only the part Resend shows in the Name column.
How long does verification take?
Often minutes, but DNS can take up to 48 hours to propagate. Resend keeps checking, so you can leave the page and come back.
I already have an SPF record. Do I add a second one?
Not on the same name. A name may have only one SPF record. Resend's SPF goes on its own sending subdomain (such as send.example.com), which is why a subdomain avoids the clash.
How we checked
Verified 11 Oct 2026 against the live interface on not walked yet.
Ready to do it?
Run these 7 steps on your own Resend page. Each step shows in a panel on the page, Next when you are ready.