Set Up Professional Email Using Cloudflare (with Any Domain) for Free

Get contact@yourdomain.com for free with Cloudflare Email Routing and Gmail.

Srujal S. Shah7 min read

Cloudflare Email Routing setup overview

TL;DR: You can get a professional email like contact@yourdomain.com for free by using Cloudflare Email Routing to forward mail to your existing Gmail inbox. You'll (1) point your domain's nameservers to Cloudflare, (2) create routing addresses (like contact@), and (3) optionally configure Gmail SMTP so you can send as your domain address using a Google App Password.

Best for: solo founders + small teams · Cost: free (Cloudflare Email Routing) + your existing inbox (Gmail) · Time: usually under an hour (DNS propagation varies)

Important: Cloudflare Email Routing forwards email to a mailbox (like Gmail). It's not mailbox hosting.

What are we building (Cloudflare Email Routing + Gmail)?#

This setup uses Cloudflare Email Routing to forward email sent to your custom domain (like contact@yourdomain.com) into a mailbox you already use (like Gmail). Cloudflare handles routing via DNS; Gmail remains your inbox. If you want replies to come "from" your domain address, you'll add Gmail SMTP settings once.

Simple flow: Sender → contact@yourdomain.com → Cloudflare Email Routing → yourmail@gmail.com

What this does/doesn't do

  • Does: forwards mail sent to your domain address to a real inbox (like Gmail), and supports replying from Gmail after SMTP setup.
  • Doesn't: host a mailbox at Cloudflare (Email Routing is forwarding/routing, not hosting).

What do you need before you start (prerequisites)?#

To follow this guide, you need (1) a registered domain from any registrar, (2) a free Cloudflare account, and (3) a destination inbox (Gmail or another email address) to receive forwarded messages. If you plan to send mail as your domain address from Gmail, you'll also need Google 2-Step Verification enabled to create an App Password.

Optional (for "send as" from Gmail):

Step 1: How do you connect your domain to Cloudflare?#

Once your domain's nameservers point to Cloudflare, Cloudflare can manage your DNS and enable Email Routing. You'll add your domain, import existing DNS records, then update nameservers at your registrar and wait for propagation.

1) Get a domain (if you don't already have one)#

Buy from any registrar; Cloudflare will manage DNS after you connect it. Examples:

2) Add your domain to Cloudflare#

Cloudflare dashboard → Add a Site

Add your domain to Cloudflare

Guide: https://developers.cloudflare.com/fundamentals/setup/manage-domains/add-site/

3) Import DNS records#

Docs: https://developers.cloudflare.com/dns/manage-dns-records/

4) Update nameservers at your domain provider#

Cloudflare will give you two nameservers (example format: abby.ns.cloudflare.com, tom.ns.cloudflare.com). Replace your current nameservers at your registrar.

General guide: https://developers.cloudflare.com/dns/zone-setups/full-setup/setup/ Registrar examples:

Wait for the Cloudflare domain status to become Active.

Step 2: How do you set up Cloudflare Email Routing?#

Cloudflare Email Routing lets you create addresses on your domain (like contact@yourdomain.com) and forward incoming messages to an inbox you already use. You'll enable Email Routing, create one or more custom addresses, then set and verify the destination inbox.

1) Enable Email Routing#

Cloudflare → Your Domain → Email → Email Routing → Get Started. Docs: https://developers.cloudflare.com/email-routing/

Enable Cloudflare Email Routing

2) Create your custom address(es)#

Examples:

  • contact@yourdomain.com
  • hello@yourdomain.com
  • team@yourdomain.com
Create custom email addresses in Cloudflare

Docs: https://developers.cloudflare.com/email-routing/setup/email-routing-addresses/

3) Add a destination address (where the mail should arrive)#

Example:

  • contact@yourdomain.com → yourmail@gmail.com
Add and verify a destination email address in Cloudflare

Verification notes:

  • If the destination email matches the email you used for your Cloudflare account, verification may happen automatically.
  • If it's different, Cloudflare will email a verification link. Open it and confirm.

Result: mail sent to contact@yourdomain.com will arrive in your Gmail inbox.

Step 3: How do you send mail as your custom domain address from Gmail?#

Receiving mail works automatically after routing is configured, but sending "from" contact@yourdomain.com requires Gmail's "Send mail as" feature. Gmail will authenticate SMTP using a 16-character App Password (not your normal password). Once set, you can reply from the custom address directly inside Gmail.

1) Create a Gmail App Password#

Open: https://myaccount.google.com/security

Steps:

2) Add your custom address in Gmail ("Send mail as")#

Gmail → Settings → See all settings → Accounts and Import. Docs: https://support.google.com/mail/answer/22370

Under Send mail as, click Add another email address, then enter:

  • Name: your display name
  • Email: contact@yourdomain.com

3) Configure SMTP settings#

Use Gmail's SMTP configuration:

  • SMTP Server: smtp.gmail.com
  • Port: 465
  • Security: SSL
  • Username: your personal Gmail address
  • Password: the App Password you created

Docs: https://support.google.com/mail/answer/7126229

4) Confirm the sender's email#

Gmail will send a confirmation email. Verify it to finish setup.

Result: you can send from Gmail and have messages show as From: contact@yourdomain.com.

Step 4: How do you organize incoming and sent mail with Gmail labels?#

Labels and filters keep conversations organized when you use multiple domain addresses (like contact@, support@, hello@). Create a parent label (your company) and nested sub-labels, then create filters for incoming and outgoing mail.

1) Create nested labels (sub-labels)#

Example structure:

  • Apexia
  • Apexia/Contact
  • Apexia/Support
  • Apexia/Partnerships

Docs: https://support.google.com/mail/answer/118708

2) Auto-label incoming mail (receive)#

Create a filter:

  • Condition: To: contact@yourdomain.com
  • Action: Apply label → Apexia/Contact

Docs: https://support.google.com/mail/answer/6579

3) Auto-label outgoing mail (send)#

Create a filter:

  • Condition: From: contact@yourdomain.com
  • Action: Apply label → Apexia/Contact

This keeps incoming + outgoing threads together in one place.

Step 5: How do you forward mail to teammates (and let them reply to the same address)?#

If you want contact@yourdomain.com to reach multiple people, you can forward messages after they arrive in one inbox. Teammates can also reply "from" the custom address by repeating the same Gmail "Send mail as" SMTP setup with their own accounts.

1) Add a forwarding address in Gmail#

Gmail → Settings → Forwarding and POP/IMAP. Docs: https://support.google.com/mail/answer/10957

Add your teammate's email (they'll need to verify).

2) Create a forwarding filter#

Example:

  • Condition: To: contact@yourdomain.com
  • Forward to teammate@gmail.com
  • Apply label Apexia/Contact

3) Let teammates reply to the custom address#

Each teammate repeats Step 3 (Gmail Send-mail-as) using:

  • SMTP smtp.gmail.com + port 465 + SSL
  • Their own App Password

Troubleshooting (quick fixes)#

  • Cloudflare domain isn't Active: confirm you changed nameservers at your registrar; wait for propagation.
  • Emails aren't arriving: verify the destination email is confirmed; check the routing rule; check spam in the destination inbox.
  • Gmail SMTP fails: confirm you used an App Password (not your normal Gmail password) and selected port 465 with SSL.

FAQ

Final result (what you'll have at the end)#

  • Custom domain email addresses (like contact@yourdomain.com)
  • Free routing/forwarding via Cloudflare Email Routing
  • Gmail for receiving and (optionally) sending as the domain address
  • Team sharing via forwarding + filters
  • Clean organization using labels