Skip to content

Cloudflare Email Routing Setup: Free Custom-Domain Email Forwarding

Email Routing is one of Cloudflare’s most underrated free features. Here’s the setup we run for every client domain.

John Cravey with AIFounder4 min readUpdated Aug 4, 2026

Cloudflare Email Routing is a free service that forwards email from `*@yourdomain.com` to any destination address (Gmail, Outlook, anywhere). For SMBs who want a `hello@brand.com` address but don’t want to pay $6/user/month for Google Workspace, it’s the cleanest answer in the industry. Setup takes ten minutes per domain. Here’s the configuration we run for every FH client.

Free estimate · 2 minutes

Read the playbook. Now see it for your business.

The posts are the mechanism. The estimate below sketches the version we'd actually ship for your business, at your scale. About a minute, no opt-in.

What it does and what it doesn’t

Email Routing forwards inbound email. You receive at a custom address; your replies go from your regular Gmail/Outlook with the personal address. It does not send mail from your custom address by default — sending requires extra setup with the “Send As” feature in Gmail.

What it doesn’t do: provide a mailbox, run a calendar, give you Office apps. If you need any of those, Google Workspace or Microsoft 365 is the right tier. For forwarding-only use cases (a small SMB with 3 forwarding addresses), Email Routing is free and excellent.

Setup

  1. In the Cloudflare dashboard, go to Email → Email Routing for the domain.
  2. Click Enable Email Routing.
  3. Cloudflare automatically adds the required MX records and the SPF/DKIM TXT records. Verify they’re present.
  4. Add a routing rule: ‘Match all emails to hello@yourdomain.com → forward to your-personal@gmail.com.’
  5. Verify the destination address by clicking the link in the verification email Cloudflare sends.
  6. Test: send an email to hello@yourdomain.com from a different account. It should arrive at your-personal@gmail.com within 60 seconds.

Multiple destination addresses

You can add multiple rules. Match `hello@` and forward to the owner; match `support@` and forward to a shared inbox; match anything else (catch-all) and drop or forward to a quarantine address. Each rule has its own destination, verified independently.

Sending from your custom address

Cloudflare provides SMTP credentials for outbound. In Gmail, go to Settings → Accounts → Send mail as → Add another email address. Use the Cloudflare SMTP host and the credentials they generate. Reply emails will appear to come from hello@yourdomain.com instead of your-personal@gmail.com.

When this isn’t enough

Three signals you should upgrade to Google Workspace or Microsoft 365 instead:

  • You need a real mailbox with shared inboxes, archiving, and search across years of history.
  • You have more than 3-5 users needing custom addresses. The forwarding setup gets unwieldy.
  • You need a calendar, document collaboration, or any of the productivity suite features.

For most SMBs at startup phase, Email Routing covers the need for the first 1-2 years. Migrating to Workspace later is a half-day project.

SPF, DKIM, and DMARC

Email Routing sets up SPF (which servers can send mail for your domain). It does not handle DKIM signing automatically — Gmail signs outbound mail with their DKIM key, which is fine. Add a DMARC record pointing at a real reporting address so you can see if anyone’s spoofing your domain. We default to `v=DMARC1; p=quarantine; rua=mailto:dmarc@yourdomain.com`.

If your transactional email (lead notifications, password resets) goes through Resend, add Resend’s DKIM record per their docs. Your DMARC will then pass for both forwarded mail and Resend-sent mail.

Workers Email integration

Cloudflare Email Routing supports forwarding email to a Worker for programmatic processing. Use case: route inbound email to an API that creates a Slack message, a CRM entry, or a database row. We have one client using this for inbound support emails — each email creates a ticket in their internal admin tool.

export default {
  async email(message: ForwardableEmailMessage, env: Env) {
    const raw = await new Response(message.raw).text();
    await fetch(env.TICKET_API, {
      method: "POST",
      headers: { authorization: `Bearer ${env.TICKET_API_KEY}` },
      body: JSON.stringify({
        from: message.from,
        subject: message.headers.get("subject"),
        body: raw,
      }),
    });
    await message.forward("support-team@example.com");
  },
};

Limits

Cloudflare Email Routing has a 25MB per-email size limit and a soft rate limit (Cloudflare doesn’t publish a number, but heavy use can throttle). For SMB volumes (hundreds of emails per day), you’ll never hit it.

Migrating away from Workspace to Email Routing (or the other direction)

From Workspace to Routing: export Workspace history first if you want it (Workspace Takeout). Set up Email Routing rules. Change MX records in Cloudflare DNS to point at Cloudflare’s mail servers. Wait 24 hours for propagation. Cancel Workspace.

From Routing to Workspace: easier. Set up Workspace, follow their MX record instructions, disable Email Routing rules. Existing forwarded mail stops; new mail goes to Workspace mailboxes.

How this lands across FH client work

Across the FH client book, three clients use Cloudflare Email Routing (the small contractors with 1-3 addresses each), four use Google Workspace (the bigger teams with calendar and Drive needs). The split is sensible. If you’re paying for Workspace and only using it for email forwarding, book a consultation — Email Routing is the cleaner answer for that exact use case.

Answers

Frequently asked questions

What does email routing actually do?

Forwards mail sent to addresses on your domain to a real mailbox elsewhere. It is delivery only. It does not host mailboxes, does not store mail, and does not by itself let you send as the address, which is the part people discover after switching.

What does it not replace?

A mailbox provider. If a team needs shared inboxes, calendars, storage, or archiving, this is not that product. It suits a domain that needs a handful of addresses pointing somewhere a person already reads, which describes most small-business domains.

How do I send from the forwarded address?

By configuring the destination mailbox to send as that address, which is a setting on the mail provider rather than on the forwarder. Skipping it produces the awkward state where enquiries arrive at the right address and replies come from a personal one.

What DNS records matter here?

The routing records for delivery, plus the authentication set: SPF to name who may send, DKIM to sign what you send, and DMARC to say what to do with anything failing both. Forwarding without authentication is how legitimate replies end up in spam.

Why does forwarding sometimes break authentication?

Because a forwarded message arrives from a server the original sender never authorized, so a strict check can fail on delivery. Understanding that is what stops a mysterious spam-folder problem being investigated as a content issue for a week.

Can several addresses reach several people?

Yes, and that is the common setup: role addresses each pointed at the right person or at several. Keep the map small enough that someone can read it and say who receives what, because a routing table nobody understands quietly drops enquiries.

What are the limits?

Volume ceilings and message-size limits that are generous for business correspondence and unsuitable for bulk sending. Transactional and marketing mail belong on a sending service with its own reputation, not on a forwarder.

When should a client move to a full mailbox provider?

When they need shared access, retention, or compliance, or when losing forwarded mail would be serious. The trigger is usually the first time two people need the same inbox, which forwarding handles badly.

Can this integrate with automation?

It can hand incoming mail to code at the edge, which suits routing enquiries into a system automatically. Treat that as a real integration with error handling, because a silently failing mail hook loses leads and produces no evidence that anything happened.

How do I move away from an existing provider?

Add the routing, verify with test sends to every address, then change the delivery records and watch for a day before removing anything. Mail is the one system where a botched cutover is invisible: nothing errors, messages simply stop arriving.

Does using this affect deliverability of mail I send?

Not directly, because it handles inbound. What affects your sending is the authentication set on the domain and the reputation of whatever service sends for you. Those need to be right regardless of how inbound mail is handled.

Is this appropriate for every client domain?

For most small ones, yes: it is free, it takes minutes, and it removes the excuse of not having an address on the domain. It stops being appropriate the moment more than one person needs the same mailbox, and that transition is worth planning rather than discovering.

Question we did not answer? Ask us directly and we will answer it here.

John Cravey, Founder
Written by
John Cravey
Founder

Founder of Frontend Horizon. Writes most of the long-form work on the FH blog.

Newer post
Cost-Effective AI: How to Pick Claude Opus vs Sonnet vs Haiku for Each Workload
Older post
The Competitor Analysis Every SMB Should Run Before Spending Another Dollar on Marketing
Keep reading

More from the blog

Cloudflare·6 min

Cloudflare DNS and CDN: The Base Configuration for Every FH Client Site

Every FH site sits behind Cloudflare. Here’s the exact configuration and why each setting is where it is.

Cloudflare·6 min

Cloudflare Pages vs Workers vs R2: Which One to Use in 2026

Cloudflare has 30+ products. Three of them cover 80% of what most SMB sites need.

Cloudflare·4 min

Cloudflare Workers: When Edge Functions Actually Earn Their Keep

Workers are fast and cheap. They’re also the wrong answer for half the things people use them for. Here’s when they fit.