Domain says Verified in Resend, SPF and DKIM both pass, and Gmail still puts everything in the spam folder.
Verification only produces SPF and DKIM. It does not publish DMARC, and Resend states that DMARC is not set up automatically. Passing SPF and DKIM with no DMARC policy on the From domain is exactly what the Google and Yahoo bulk sender requirements target, and Resend's own Deliverability Insights flags it on every message you look at.
The fix
Publish v=DMARC1; p=none; rua=mailto:dmarcreports@example.com; at _dmarc.yourdomain.com, then open the Insights panel on a real send and clear every remaining check, especially the link URL match and the no-reply sender.
I keep getting 403 domain is not verified when sending from localhost, even to my own address.
Two different rules collide here. The from domain has to match the verified domain exactly, so a domain verified as sending.example.com rejects a request that says example.com. Separately, if from is still onboarding@resend.dev, the only recipient allowed is the address on your Resend account, so a typo in your own address produces what looks like the same error.
The fix
Open the Domains page and copy the verified domain string character for character into from, then check the API key is not restricted to a different domain by domain_id. While developing, send to delivered@resend.dev, bounced@resend.dev, complained@resend.dev or suppressed@resend.dev instead of your own inbox.
Added every record to Cloudflare two days ago and the domain is still pending. Nothing changes when I click verify.
Three causes account for almost all of these. The DNS provider appended your domain to the MX value, producing feedback-smtp.us-east-1.amazonses.com.example.com. The records went to the registrar while the nameservers point somewhere else, so nothing you published is live. Or the MX region does not match the region the domain was created in, sometimes with two regions published at once.
The fix
Look the records up publicly with dns.email or nslookup rather than trusting the DNS panel. Add a trailing period to the MX value to mark it fully qualified, delete any duplicate region rows, set the records to DNS only rather than proxied, then use Restart verification.
After I pointed the MX record at Resend, our Google Workspace inbox stopped receiving anything.
The MX record Resend generates belongs on the send subdomain. Published on the root, it becomes the mail exchanger for the whole domain, so every message addressed to anyone@yourdomain.com routes to Resend and away from Google Workspace or Microsoft 365. Resend documents this exact failure and recommends a subdomain to avoid it.
The fix
Delete the MX record from the root, restore your Google Workspace or Microsoft 365 MX records exactly as they were, and republish Resend's MX with the host set to send. If send is already taken, Resend suggests send.sub.yourdomain.com.
We launched, sent about four thousand signup confirmations in a day from a domain we verified that morning, and most of them landed in junk.
Everything before launch went out from resend.dev, so your own domain had no sending history at all. Resend puts the responsibility for warming a domain on you, unlike dedicated IPs, which it warms automatically. Their plan starts at up to 150 emails on day one and reaches up to 2,000 by day seven, with the calculator extending the ramp to 42 days for larger targets.
The fix
Verify the sending subdomain weeks before launch and start real low-volume traffic on it. Follow the warm-up plan, keep bounce rate under 4% and spam rate under 0.08%, and limit non-transactional sends to people who opened or clicked in the last six months, as Resend's audience hygiene guidance recommends.