Docs
← Back to site

Email Routing

7 min readUpdated April 10, 2026

Cloudflare Email Routing is a free service that lets you forward email from any address on your domain to any inbox you control — no mail server required. WP WAF Manager brings the entire setup into WordPress so you can spin up [email protected][email protected] in under a minute, and manage forwarding for all your zones from one screen.

This is one of the most useful Cloudflare features for WordPress site owners. If you’ve ever bought a domain and wished it had working email without having to set up Google Workspace or a mail server, this is the answer. It’s free on every Cloudflare plan, including Free.

Heads-up: Cloudflare Email Routing requires Cloudflare to manage your domain’s MX records. When you first enable it on a zone, Cloudflare automatically replaces your MX records with theirs. If you’re already using Google Workspace, Microsoft 365, Fastmail, or any other mail provider on the domain, don’t enable Email Routing on that zone — it’ll break your existing email. Email Routing is best for domains where you don’t currently have any mail setup.

Opening the page#

In WP admin, go to WAF Manager → Email Routing. The page has:

  • An account selector at the top — pick which Cloudflare account’s email routing you’re managing
  • Two tabs: 📋 Forwarding Rules and 📬 Destination Addresses

You’ll always start in the Forwarding Rules tab, but the very first thing you need to do is set up at least one destination address.

Step 1 — Add a destination address#

A destination address is an inbox you control where forwarded mail will land. You add it once per account, and it’s then available across every zone in that account.

  1. Click the 📬 Destination Addresses tab.
  2. Type the email address you want forwarded mail to land in (e.g. [email protected]).
  3. Click Add & Send Verification.

Cloudflare will immediately send a verification email to that address. Open it and click the verification link, then come back to the plugin and click ↻ Refresh. The address will now show with a green ✓ verified badge and become available as a destination in your forwarding rules.

You can add as many destination addresses as you want — one for personal mail, one for the team inbox, one per client, whatever makes sense. Each one is verified independently.

If an address shows up as unverified for a long time, the verification email may have ended up in spam, or the user clicked the link in a different browser session. Just delete it and re-add to send a new verification.

Step 2 — Pick a zone to forward from#

Switch to the 📋 Forwarding Rules tab and pick a zone from the Zone dropdown. The page will load any existing routing rules and the catch-all configuration for that zone.

If Email Routing isn’t enabled on the zone yet, the plugin will prompt you to enable it. Enabling it makes Cloudflare take over the zone’s MX records — this is the moment to confirm you don’t already have email running on the domain.

The ↻ Sync button re-fetches everything from Cloudflare in case you made changes elsewhere. The + Add Rule button opens the modal for creating a specific forwarding rule.

Catch-all rules#

The big card at the top of the Forwarding Rules tab is the catch-all configuration. A catch-all rule means “forward every address on this domain to this inbox” — including ones that don’t exist yet. So if you set the catch-all to [email protected], then any email sent to info@, hello@, random-string@, or even typos like infomation@ all land in your Gmail.

Setting up a catch-all#

Inside the card:

  1. Type a label in the Email address on your domain field (e.g. info, contact, hello). This is just for display — the catch-all itself catches everything, but the label helps you remember what you intended.
  2. Pick a verified destination inbox from the dropdown. (If the dropdown is empty, go back to Step 1 and add a destination first.)
  3. Tick the Enable checkbox.
  4. Click Save.

That’s it. Within seconds, every address on your domain forwards to your chosen inbox. Test it by sending an email to literally anything @yourdomain.com.

To turn off the catch-all later, untick Enable and save again.

Why catch-alls are powerful#

Most domains end up wanting half a dozen specific addresses (info, support, hello, contact, sales, noreply). Setting up a catch-all instead means you don’t have to predict them — they all just work, immediately. You can also use it for unique-per-vendor addresses: hand out [email protected] to one company and [email protected] to another, then if you start getting spam at one of them you know exactly who leaked your address.

The trade-off is spam: a catch-all means spammers’ guessed addresses also reach you. For most personal domains the volume is manageable; for high-profile domains you may prefer specific rules instead.

Specific forwarding rules#

Below the catch-all card is a table of specific rules — exact-match forwarding for individual addresses. Specific rules are matched before the catch-all, so you can use them to route different addresses to different inboxes:

Adding a specific rule#

  1. Click + Add Rule in the top-right of the tab.
  2. In the modal, type the local part of the address you want to forward in the Address on your domain to forward field — just support, not the full email. The plugin shows your domain’s suffix automatically.
  3. Pick a verified destination from the To — verified destination dropdown.
  4. Optionally give the rule a name like “Forward support to team inbox” so future-you knows what it’s for.
  5. Click Add Rule.

The rule appears in the table immediately and starts forwarding mail right away.

Managing existing rules#

Each rule in the table has:

  • A toggle checkbox to enable or disable it without deleting
  • A Delete button to remove it permanently

If a rule was created outside the plugin and the plugin can’t find an ID for it, you’ll see a “Delete in CF dashboard” note instead of a delete button — Cloudflare’s API doesn’t always return enough info to delete those, so they have to be removed from inside Cloudflare itself. This is rare.

A typical setup#

For most personal or small business domains, the simplest and most useful configuration is:

  1. Add one destination address (your real inbox) and verify it.
  2. Enable a catch-all to that destination on every domain you want forwarding for.
  3. Add a few specific rules only if you actually need different addresses to go to different places.

That’s a working email setup for unlimited addresses across unlimited domains, in about three minutes per domain, for free.

Multi-account workflow#

If you manage Cloudflare accounts for several clients, the account selector at the top of the page lets you switch between them. Destination addresses are per-account, so each client can have their own verified inboxes without seeing each other’s setup.

A common agency workflow: enable Email Routing on each client’s domain, set up a catch-all to the client’s inbox, and you’ve handed them working email for their domain without ever touching a mail server.

Troubleshooting#

Verification email never arrives — check spam, then delete and re-add the address. Some email providers are slow with Cloudflare’s verification mails.

Mail isn’t forwarding — confirm Email Routing is enabled on the zone, the destination is verified (green badge), and either the catch-all or a matching specific rule is enabled. The plugin’s sync button re-pulls state from Cloudflare in case the dashboard view is stale.

Mail used to work but broke — somebody probably changed the MX records on the zone. Cloudflare needs to control the MX records for Email Routing to work; if another tool replaced them, you’ll need to re-enable Email Routing.

Existing email broke after enabling Email Routing — this is the warning at the top of this page. Disable Email Routing on the zone and your old MX records will need to be restored manually from whatever provider you were using.

Share:

Was this helpful?

This website uses cookies to enhance your browsing experience and ensure the site functions properly. By continuing to use this site, you acknowledge and accept our use of cookies.

Accept All Accept Required Only