Free Custom Email Forwarding with Cloudflare
A friend of mine recently asked for help setting up email for a new project. She wanted something professional — a real address on her own domain — but wasn’t ready to commit to a monthly subscription before the thing had even launched.
It’s a reasonable position. Most email hosting options ask you to pay before you’ve sent a single message.
So we went the other route: Cloudflare Email Routing. Free, requires no new infrastructure, and if you already have a domain on Cloudflare, it takes about five minutes.
This is what we set up, and how.
What Cloudflare Email Routing Actually Does
It doesn’t give you a mailbox on your domain. There’s no SMTP server, no login for you@yourdomain.com.
What it does is simpler and often more useful:
Any email sent to your custom address gets forwarded—transparently—to a verified destination inbox you already own. Gmail, Outlook, iCloud, whatever. You read it there.
You get:
- a professional-looking address on any domain you control
- zero additional subscriptions
- inbox filtering by recipient address (useful if you’re forwarding from multiple aliases)
- no new app to check
It won’t work for every use case—if you need to send from your domain address at scale, or run a full mail server, this isn’t that. But for personal addresses, side projects, and small products where you just need mail to reach you, it’s hard to beat.
The Caveat You Should Know Up Front
Cloudflare Email Routing is receive-only.
You can receive email at hello@yourdomain.com. You cannot send from it—not natively. There’s no outbound SMTP, no “send as” configuration inside Cloudflare itself.
In practice, when you reply to a forwarded email, your reply will come from whatever address your destination inbox uses—not your custom domain address.
If that’s a dealbreaker, you have options:
- Gmail’s “Send mail as” — lets you send from a custom address via Gmail’s compose window, using Gmail’s SMTP (or your own). Free, but requires a bit of extra setup.
- Resend, Postmark, or similar — transactional email providers that handle outbound from custom domains properly. More appropriate for product or application mail.
For many use cases—a contact address on a personal site, a project alias, a catch-all for a side product—receive-only is perfectly sufficient. Just go in with clear expectations.
What You Need Before You Start
- A domain added to Cloudflare (DNS managed by Cloudflare)
- An existing email address to forward to (Gmail, Outlook, etc.)
1) Open Email Routing in Cloudflare
- Log into dash.cloudflare.com
- In the sidebar, go to Domains → Overview
- Click on your domain
- In the domain sidebar, go to Email → Email Routing
On first load, Cloudflare will prompt you to add the necessary DNS records.
Click Add records and enable.
This adds the MX and SPF records Cloudflare needs to receive mail on your domain’s behalf. If you already have MX records pointing somewhere else, Cloudflare will warn you—you’ll need to decide which takes precedence.
2) Verify Your Destination Address
Cloudflare only forwards to verified addresses.
Before you create any routing rules, make sure the inbox you want to forward to is verified. Cloudflare will have sent a confirmation email when you first set things up—check that it went through.
You can see and manage verified addresses under the Destination addresses tab.
3) Create a Routing Rule
With email routing enabled, go to the Routing rules tab.
Click Create address.
You’ll see two fields:
- Custom address — the prefix you want on your domain. For
hello@yourdomain.com, you’d enterhello. - Action — leave this as Send to an email.
- Destination — select your verified address from the dropdown.
Click Save.
That’s it.
Any email sent to hello@yourdomain.com (or whatever alias you created) will now be forwarded to your chosen inbox.
Using Multiple Aliases
You can create as many routing rules as you want. One domain can have hello@, support@, noreply@, and your-name@ all forwarding to the same or different destinations.
This is useful for:
- separating project mail from personal mail
- filtering by recipient address in your inbox (e.g. label everything to
support@yourdomain.comautomatically) - giving out different addresses for different contexts without managing multiple inboxes
Inbox Filtering Tips
When email arrives via forwarding, your inbox sees the original recipient address in the To header—not just your main address. You can use this to automatically sort forwarded mail into folders.
Gmail
Filter by Delivered-To or To containing your custom address, then apply a label or move to a folder automatically.
Outlook / Hotmail
- Go to Settings → Mail → Rules → Add new rule
- Set the condition to “To” address includes and enter your custom domain address
- Set the action to Move to and choose or create a folder
- Save the rule
Proton Mail
Proton’s simple filter wizard supports filtering by recipient, which should work for Cloudflare-forwarded mail since the original To header is preserved.
- Go to Settings → All settings → Proton Mail → Filters → Custom filters
- Click Add filter
- Set the condition to Recipient / To contains your custom address
- Set the action to move to a folder or apply a label
- Save
Note for free Proton Mail users: the free plan only allows one active filter at a time. If you’re forwarding from multiple aliases and need to sort them all, you’ll need a paid plan—or use a single catch-all rule and sort manually. Paid users can also use Sieve filters for more precise control, including matching on the exact
Toaddress rather than a partial string.
Troubleshooting
- No email arriving → check that the MX records Cloudflare added are active and not overridden by older records.
- Destination address not in dropdown → it may not be verified yet. Check your destination inbox for a Cloudflare confirmation email and click the link.
- Mail arriving but flagged as spam → the SPF record Cloudflare adds should handle most of this, but check your destination provider’s spam settings.
- Replies going out from the wrong address → expected behaviour. Replies come from your destination inbox address, not your custom domain. See the caveat section above if you need outbound from your domain.
Wrap-up
Cloudflare Email Routing is one of those quietly useful features that removes an entire category of overhead: professional email addresses on custom domains, at no cost, with no new inbox to manage.
It’s receive-only—but for most personal and project use cases, that’s all you need.
If your domain is already on Cloudflare, there’s genuinely no reason not to set this up.


