See all blogs

July 27, 2026

Free Unlimited Custom-Domain Email with Gmail + Cloudflare

Free Unlimited Custom-Domain Email with Gmail + CloudflareFree Unlimited Custom-Domain Email with Gmail + Cloudflare

Reference: Cloudflare Email Routing docs ยท Gmail "Send mail as" help

This guide walks through two pieces working together: Cloudflare Email Routing, which catches mail sent to your custom domain and hands it to Gmail, and Gmail's "Send mail as" feature, which lets you reply and compose using that same custom address. No Google Workspace subscription needed.

Backstory

A custom email address makes a side project or small business look legitimate. hello@yourbrand.com reads very differently from a free Gmail address. The usual path to that is a paid Google Workspace plan, billed per mailbox, per month.

There's a free route that gets you the same result for personal projects and small teams: let Cloudflare catch incoming mail on your domain and forward it straight into a Gmail inbox you already have, then use Gmail's own SMTP servers to send replies that appear to come from your custom address.

The mental model:

Cloudflare Email Routing  -> catches mail sent to your domain, forwards it INTO Gmail
Gmail "Send mail as"      -> lets Gmail send replies OUT as your domain address

Inbound and outbound are handled by two completely different systems โ€” that split is the key thing to understand before touching any settings.


How It Works

  • Cloudflare Email Routing (free, no plan upgrade required) forwards anything sent to your custom domain into an existing Gmail inbox.
  • Gmail's "Send mail as" lets you compose and reply using your custom domain address, sent out through Gmail's own SMTP servers.
  • Nothing here requires a paid Google Workspace subscription.

Requirements

  1. A Gmail account free, and quick to set up if you don't already have one.
  2. A domain you own or fully control, registered anywhere (Cloudflare, Namecheap, GoDaddy, name.com, Route 53, etc.).

๐Ÿ’ก Tip: This is far simpler on a fresh domain with no existing DNS records. If you're adding this to a domain that already has a live site or an existing mail service, export your current DNS records first โ€” pointing your domain at Cloudflare's nameservers hands Cloudflare control of all of it.


Step 1: Add Your Domain to Cloudflare

  1. Create a free Cloudflare account and sign in.
  2. Choose Add a Domain and type in your domain.
  3. Pick the Free plan โ€” Email Routing is included, no upgrade necessary.
  4. Cloudflare will scan for and import any DNS records it can find. If records already exist (say, from a placeholder page), check them carefully if you're migrating a live site later, it's worth setting the proxy status to "DNS only" until everything's confirmed working.
  5. Cloudflare then hands you two new nameservers.

Step 2: Point Your Domain at Those Nameservers

  1. Log in wherever the domain is registered (Namecheap, GoDaddy, name.com, etc.).
  2. Find the nameserver settings for the domain.
  3. Swap the existing nameservers for the two Cloudflare ones from Step 1.
  4. Save the change.

โณ Propagation time: typically under 15 minutes, occasionally a few hours depending on your registrar. Cloudflare's domain status page will flip to active once it's picked up the change.

Step 3: Turn on Email Routing in Cloudflare

Once the domain shows as active, head to Compute โ†’ Email Service โ†’ Email Routing and enable it. The first time you do, Cloudflare will show you the DNS records it needs (an MX record plus a TXT record) โ€” there's a one-click option to add them automatically.

โš ๏ธ If the domain already has a separate email service configured, these new records can conflict with it. Adjust as needed, or sidestep the issue entirely by doing this on a fresh domain.

3a. Add a Destination Address

You need a verified inbox before you can route anything to it.

  1. Go to Compute โ†’ Email Service โ†’ Email Routing โ†’ Destination Addresses.
  2. Add your personal Gmail address.
  3. Cloudflare emails a verification link โ€” open it and confirm.

3b. Create a Routing Rule

  1. Open the Routing Rules tab.
  2. Choose Create routing rule.
  3. Set it up:
    • Email pattern: the part before the @ (e.g. hello for hello@yourdomain.com), with your domain selected.
    • Action: send to an email.
    • Destination: the verified address from Step 3a.
  4. Save the rule.

3c. Test It

Send a message from a different account to your new address and confirm it lands in the destination inbox (check spam if it doesn't show up right away).

Repeat 3b for as many addresses as you like โ€” support@, contact@, your own name โ€” all routing to the same inbox or different ones. It's free and there's no cap.

Step 4: Confirm Incoming Mail Works

  1. Send a test message from another account to your new address.
  2. Check the destination Gmail inbox, spam folder included.
  3. If nothing shows up immediately, give DNS a little more time to propagate and try again.

Step 5: Send Mail As Your Custom Domain

By default, replying to a forwarded message still sends from your regular Gmail address. To actually send as hello@yourdomain.com, Gmail's "Send mail as" needs to be configured with an app password.

5a. Generate a Gmail App Password

  1. Open your Google Account settings.
  2. Turn on 2-Step Verification if it isn't already on โ€” an authenticator app works fine for this.
  3. Search account settings for App Passwords.
  4. Create one with a name you'll recognize later (e.g. "custom domain SMTP").
  5. Copy the password it generates โ€” you'll only need it once, and you can revoke and regenerate it any time.

5b. Add the Custom Address as a "Send Mail As" Alias

  1. In Gmail: Settings โ†’ See all settings โ†’ Accounts and Import.
  2. Under "Send mail as," choose Add another email address.
  3. Enter the custom domain address.
  4. Tick Treat as an alias.
  5. Leave the reply-to field blank (or matching โ€” it doesn't add anything).
  6. Continue and fill in the SMTP details:
    • Server: smtp.gmail.com
    • Port: leave as the default
    • Security: TLS (default)
    • Username: your real Gmail address
    • Password: the app password from 5a
  7. Confirm and add the account.
  8. Gmail sends a verification email to the custom address โ€” it'll route through Cloudflare back into your Gmail inbox. Open it and click the confirmation link.

5c. Reply and Compose as the Custom Address

  1. Start a new email โ€” a "From" dropdown now lets you pick the custom address.
  2. Send a test to check it works end to end.
  3. To make replies default correctly too, go to Settings โ†’ Accounts and Import and, under "When replying to a message," choose to reply from the address the message was originally sent to.

Step 6: Repeat for Any Additional Addresses

  • Run Steps 3 and 5 again for each extra address you want.
  • Everything can funnel into one Gmail inbox, or be split across several if different people need their own.
  • If more than one person manages an address, a dedicated Gmail account just for that address is worth considering.

Troubleshooting

IssueLikely Cause
Test email never arrivesDNS still propagating โ€” wait and retry, check spam
"Send mail as" verification email missingDouble-check the Cloudflare routing destination is correct
Can't send as the custom addressRe-verify the app password and that 2-Step Verification is on
Replies go out from Gmail, not the custom domainSet the "when replying" option to match the receiving address
New records clash with an existing mail serviceAdjust or remove the conflicting MX/TXT records, or start fresh on a new domain

Notes & Limitations

  • This runs on a personal Gmail account rather than Google Workspace โ€” it's a workaround, not an officially supported setup at scale.
  • It suits solo developers, side projects, and early-stage products that want a credible custom address without a Workspace bill.
  • As a team grows, moving to a paid service like Google Workspace is the more robust long-term option.
  • Cloudflare Email Routing only handles the inbound side โ€” outbound sending is entirely Gmail's SMTP, via the "Send mail as" setup above.

Final Checklist

  • Domain's nameservers point to Cloudflare and show as active
  • Email Routing is enabled with the MX + TXT records added
  • At least one destination address is verified
  • A routing rule exists for each custom address you want
  • A Gmail app password has been generated (with 2-Step Verification on)
  • The custom address is added under "Send mail as" and verified
  • Replies default to the address the message was sent to

Conclusion

The setup splits cleanly into two halves:

Inbound  -> Cloudflare Email Routing catches mail to your domain, forwards it into Gmail
Outbound -> Gmail's "Send mail as" + an app password sends replies as that domain

Once both halves are wired up, a custom domain address behaves like any other Gmail account, you just never pay for Workspace to get there.

Resources

  • Cloudflare Email Routing documentation
  • Gmail: Send email from a different address
  • Google Account: App Passwords
  • Original walkthrough: jb.desishub.com/blog/custom-domain-email-gmail-cloudflare

See all blogs