Cloudflare Email Routing not working? What to check
Mail to your domain isn't arriving, or the forward stopped. Check the Activity log, then MX records, the destination address, SPF, DMARC and the spam folder.
On this page · 9 sections
Start with the Activity log
The Email Routing Activity log lists each message the domain received and what Cloudflare did with it. Expand a message to see its SPF, DKIM and DMARC results. The log covers 30 minutes to 30 days, or a range you pick. [1] Send yourself a test message from another account, then find it:
- Forwarded
- What it means: Sent on to the destination address. [1]
- Where to look: The destination's spam filter
- Rejected
- What it means: Refused because of SPF, DKIM or DMARC. [1]
- Where to look: The sender's authentication
- Delivery failed
- What it means: The destination address could not be reached. [1]
- Where to look: The destination address
- Handled
- What it means: A Worker took the message. [1]
- Where to look: The Worker's own logs.
Nothing in the log: the MX records
If a message never shows up, the sender's server is delivering it somewhere else. Email Routing needs exclusive control of the domain's root MX records. While another provider's MX records are still there, setup fails with error 2008, Non-Cloudflare MX records exist. [2]
- Run
dig MX example.com +shortwith your domain, or put it in the email DNS checker. Every answer should end inmx.cloudflare.net. [3] - If an old host's records are listed (Google, Microsoft, your registrar), remove them, or follow Cloudflare's guide to moving from another provider. [2]
- Mail from an account on the old host can still be delivered inside that host and never leave it. Test from a different provider.
The destination address isn't verified
When you add a destination address, Cloudflare emails it a link. Until you open that email and select Verify email address, every rule that points to the address stays disabled. [4]
Check Compute → Email Service → Email Routing → Destination Addresses. A pending address can get the verification email again from there. [4] Look in the destination's spam folder for the first one.
Two SPF records
A domain may have only one TXT record starting with v=spf1. With two, SPF fails with a permerror and Email Routing doesn't work properly. [2] Cloudflare's record for the root domain is v=spf1 include:_spf.mx.cloudflare.net ~all. [2]
- Run
dig TXT example.com +short | grep spf. More than one line is the problem. [2] - In DNS → Records, delete the wrong one. If you can't tell which, delete every
v=spf1record on that name. [2] - Open Compute → Email Service and enable Email Routing again. Cloudflare adds the correct SPF record back. [2]
Rejected: the sender's authentication
Email Routing checks the mail it receives. A message must pass SPF or carry a valid DKIM signature, and one that fails both is rejected. It also honors the sender's DMARC policy, so a message that fails it is rejected. [3]
- This is about the sender's domain, not yours. Expand the message in the Activity log to see which check failed. [1]
- Cloudflare notes that, because of how forwarding works, a restrictive DMARC policy can stop forwarded mail from being delivered. [3]
- A sender on a block list is refused with an error such as 554 … found on one or more RBLs. [3]
Dropped: your rules
- Each address needs a rule, or the catch-all. Mail that matches no rule falls through to the catch-all, and a catch-all set to Drop discards it. See Catch-all email on Cloudflare. [4]
- If two rules have the same pattern, only the first one in the list handles the mail. [4]
- Messages over 25 MiB are rejected. [5]
Forwarded, but not in your inbox
Forwarded means the destination's server accepted the message, not that it reached the inbox. [1][2] Look in the spam folder first. In the message's headers, Authentication-Results shows how the destination judged it, and X-Spam-Flag: yes means it was marked as spam. [2]
Email Routing rewrites the envelope sender so SPF passes at the destination, leaves the From: header unchanged, and adds DKIM signatures. [3] If every check passes and the mail still lands in spam, Cloudflare says the cause is likely reputation or content, not the setup. [2]
Skipping the forward with Ayoh
Most of the trouble above happens after a forward leaves Cloudflare and reaches another inbox. Ayoh keeps the mail in your own Cloudflare account instead: it points the catch-all at its Worker, so messages show as Handled and arrive in Ayoh, and it publishes the SPF and DKIM records when you connect a domain. Mail to an address you haven't created is refused with 550 No such mailbox, so the sender gets a bounce.
Sources
Read October 30, 2026.
- [1] Cloudflare, Email Service logs (opens in a new tab): the Activity log, its routing statuses and time ranges.
- [2] Cloudflare, Email Service troubleshooting (opens in a new tab): error 2008, SPF records, Delivered versus inbox, and spam headers.
- [3] Cloudflare, Email Routing postmaster (opens in a new tab): MX hosts, SPF or DKIM required, DMARC, block lists and sender rewriting.
- [4] Cloudflare, Email routing rules and addresses (opens in a new tab): destination address verification, the catch-all and duplicate rules.
- [5] Cloudflare, Email Routing limits (opens in a new tab): message size.