10 min read
Cloudflare Email Routing handles the receiving side. It sits in front of your domain, watches for incoming emails addressed to you@yourdomain.com, and silently forwards them to your real Gmail inbox. It never stores your emails. It never reads them. It just routes them, like a postal redirect service.
Let me tell you something that took me an embarrassingly long time to figure out.
I was paying $6 a month for Google Workspace just to have a hello@mydomain.com email address. Six dollars. Every month. For years. Not because I needed calendars, shared drives, or admin consoles — I just wanted a professional email that didn't end in @gmail.com.
Then I discovered Cloudflare Email Routing, spent about 20 minutes on a Saturday morning setting things up, cancelled my Workspace subscription, and haven't thought about it since.
If you own a domain and you want a professional custom email address that receives in your Gmail, sends from your Gmail, and costs you absolutely nothing every month — this guide is for you. I'm going to walk you through the whole thing, including the DNS records, the gotchas, and the bits that most tutorials skip over.
Before we dive into steps, let me explain the architecture because it'll save you debugging time later.
Cloudflare Email Routing handles the receiving side. It sits in front of your domain, watches for incoming emails addressed to you@yourdomain.com, and silently forwards them to your real Gmail inbox. It never stores your emails. It never reads them. It just routes them, like a postal redirect service.
Gmail SMTP handles the sending side. By adding your custom domain address as a "Send mail as" alias in Gmail, you can compose and reply to emails appearing to come from you@yourdomain.com — using Google's own servers to actually send them.
The result: from the outside, you have a completely professional email address. People email hello@yourdomain.com, it lands in your Gmail. You reply, and it goes out as hello@yourdomain.com. Nobody sees a gmail.com address unless they dig into the email headers — and most people never do.
What does it cost? The domain itself, which you already have (or which costs $10-15/year from any registrar). The email infrastructure: zero, forever.
That's genuinely it.
If your domain isn't already on Cloudflare, head to cloudflare.com, create a free account, click Add a Site, and enter your domain name. Cloudflare will scan your existing DNS records and import them automatically.
You'll then be asked to update your domain's nameservers at your registrar (GoDaddy, Namecheap, wherever you bought the domain) to point to Cloudflare's nameservers. This change can take anywhere from a few minutes to 48 hours to propagate, but in practice it's usually under an hour.
Once your domain is active in Cloudflare, go to your dashboard and select the domain. In the left sidebar, look for Email → Email Routing.
Click Enable Email Routing. Cloudflare will automatically add the necessary MX records to your DNS zone — the records that tell the internet "this domain's email is handled by Cloudflare." You don't need to add these manually. Just click the Add Records Automatically button and Cloudflare handles it.
Your MX records will look something like this once set up:
MX @ isaac.mx.cloudflare.net priority 13
MX @ linda.mx.cloudflare.net priority 84
Still in the Email Routing section, click Create Address.
hello, contact, yourname, whateverClick Save. Cloudflare will send a verification email to your Gmail to confirm the destination. Click the link in that email, and you're done on the receiving side.
At this point, any email sent to youraddress@yourdomain.com will land in your Gmail inbox. Send yourself a test email from another account to confirm it's working before moving on.
This is where most guides gloss over important details, so I'll be thorough.
Gmail's App Passwords — which you'll need in the next step — only work if two-factor authentication is enabled on your account. If you don't have 2FA on yet, go to myaccount.google.com → Security → 2-Step Verification and set it up. This is a prerequisite, not optional.
Go to myaccount.google.com → Security → App Passwords. (If you can't find it, search "App Passwords" in the account search bar.)
Google will show you a 16-character password. Copy it immediately and save it somewhere — you won't be able to see it again. This password is what lets Gmail send mail on behalf of your custom domain address.
Open Gmail and go to Settings (the gear icon) → See all settings → Accounts and Import tab.
Under the Send mail as section, click Add another email address.
A dialog box will open. Fill it in like this:
hello@yourdomain.comIn the next screen, fill in the following:
SMTP Server: smtp.gmail.com
Port: 587
Username: your full Gmail address (e.g. yourname@gmail.com)
Password: the 16-character App Password from Step 5
Leave TLS enabled. Click Add Account.
Gmail will send a verification code to your hello@yourdomain.com address — which, thanks to Cloudflare Email Routing you just set up, will arrive in your Gmail inbox. Enter that code to confirm ownership, and you're done.
Getting emails to arrive is one thing. Getting them to not land in spam is another. This is where proper DNS configuration matters.
SPF (Sender Policy Framework) tells receiving mail servers which servers are authorized to send email on behalf of your domain. Since you're now sending via Gmail's SMTP servers, you need to authorize both Cloudflare and Google.
In your Cloudflare DNS settings, find the TXT record that starts with v=spf1 and update it to include both:
v=spf1 include:_spf.mx.cloudflare.net include:_spf.google.com ~all
If there's no existing SPF record, create a new TXT record with @ as the name and the above as the value.
DMARC tells receiving servers how to handle emails that fail SPF or DKIM checks. Add a new TXT record:
_dmarcv=DMARC1; p=none; rua=mailto:hello@yourdomain.comSetting p=none means the policy is in monitoring mode — you get reports without risking legitimate emails being rejected. This is the right starting point.
Here's the honest limitation of this free setup: you won't have proper DKIM signing on your outgoing emails. DKIM is a cryptographic signature that proves an email actually came from your domain. Google Workspace signs outgoing emails with your domain's DKIM key. Free Gmail SMTP does not — it signs with Gmail's own DKIM key, which means the "signed by" domain in email headers will be gmail.com, not your domain.
For most use cases — professional correspondence, client emails, newsletters — this is fine. Your emails will be delivered and won't land in spam, especially once your domain has some sending history. But if you need full DKIM alignment for enterprise deliverability or transactional email at scale, this setup has a ceiling and you'll eventually need Google Workspace or a dedicated SMTP service like Mailjet or SMTP2GO.
Once everything is configured, here's how the daily workflow feels:
Receiving: Emails to hello@yourdomain.com land in your Gmail inbox automatically. You can create a Gmail filter to label them (something like → Custom Domain) so you always know which emails came in on your custom address.
Sending: When composing a new email in Gmail, click the From field and you'll see a dropdown with both your Gmail address and your custom domain address. Select whichever you want to send from.
Replying: When you reply to an email that came in to hello@yourdomain.com, Gmail is smart enough to pre-fill the From field with that address automatically. Your replies go out looking like they came from your custom domain.
Multiple addresses: You can create as many Cloudflare routing rules as you want — contact@, support@, press@, noreply@ — all forwarding to the same Gmail. Then add each as a separate "Send mail as" address in Gmail settings, each with its own App Password. All from one inbox, all free.
Emails going to spam initially: When you first start sending from a new domain address, there's a warm-up period. Recipients' spam filters need to build up trust signals. Give it about a week of normal sending and it settles down. Proper SPF and DMARC records (which you've set up) accelerate this significantly.
Gmail rate limits: Gmail SMTP has sending limits — around 500 emails per day for free accounts. For normal professional correspondence this is more than enough. If you're sending bulk emails or transactional notifications, route those through a dedicated service and keep this setup for human-to-human email.
App Passwords and 2FA: Google occasionally tightens its App Password policies. This setup has worked reliably for years and continues to work in 2026, but if Google ever deprecates App Passwords for personal accounts (they've threatened to), this specific approach would need revisiting. Keep an eye on that.
The headers question: Technically, if a very savvy recipient opens the raw email headers, they'll see the email was sent via smtp.gmail.com. For 99% of professional communication, nobody looks at headers. But if total opacity matters for your use case, this isn't the right setup.
This setup works beautifully for freelancers who want yourname@yourstudio.com without paying for hosting. It works for developers with personal domains who want a professional contact address. It works for small business owners who want hello@theirbusiness.com without the overhead of a full Google Workspace subscription. It works for bloggers, portfolio sites, and side projects.
It doesn't replace Google Workspace for teams that need shared inboxes, delegated access, mobile device management, or enterprise compliance. For solo operators and small setups, though, it's genuinely the right tool.
Here it is condensed, for the people who just want to scan to the bottom:
custom@yourdomain.com → your Gmailmyaccount.google.com → Securitysmtp.gmail.com, Port: 587, Username: Gmail, Password: App Passwordinclude:_spf.google.com_dmarc → v=DMARC1; p=none; rua=mailto:you@yourdomain.comTotal cost: $0/month, forever.
I cancelled that Google Workspace subscription the same day I got this working. That's $72/year back in my pocket, for a setup that honestly works just as well for my needs. Sometimes the best engineering solution is the one that's already there, free, and takes 20 minutes to configure.
Go set it up. Your hello@yourdomain.com is waiting.