How to Set Up Custom Domain Email at Zero Cost in 2026

Share this:

Here’s the thing: I recently needed to set up a new custom domain email, separate from my (other) main custom domain email. Today, virtually every email provider charges you for the privilege of using your own domain. Since I expect the usage volume for the new domain is low, I felt that money could be better spent elsewhere. But after some digging and testing, I’ve found a way to get this done at absolutely zero cost in 2026. Except for the custom domain name registration of course. No one can get away from that.

The setup I’m sharing uses free tiers from three services:

  1. Gmail for your main inbox
  2. Cloudflare Email Routing to handle incoming mail
  3. SMTP2GO to send emails whilst maintaining proper email authentication

Let me walk you through exactly how I got this working.

Sidenote: I am aware of Zoho mail forever free plan, but I rather limit my chances from getting forced to migrate again.

The Setup (TL;DR)

  • Use Cloudflare Email Routing (free) to receive and forward emails to Gmail
  • Configure SMTP2GO (free tier: 1,000 emails/month) as your outgoing SMTP server
  • Set up Gmail to send emails through SMTP2GO with proper DKIM and SPF authentication
  • Configure Gmail’s “Send mail as” feature to use your custom domain
  • Enable Cloudflare’s DMARC management for email security monitoring

Why This Setup Works

The key challenge with free Gmail accounts and custom domains is that Gmail doesn’t natively support DKIM signing for external domains. This increases the risk of your emails landing in spam folders and makes it impossible to implement a strict DMARC policy. By routing outgoing mail through SMTP2GO, we get proper DKIM signing and SPF alignment automatically, which dramatically improves deliverability.

Cloudflare Email Routing handles the receiving side beautifully—it’s 100% private by design, includes phishing detection, and creates DNS records automatically. The free tier gives you unlimited email addresses and aliases, which is perfect for personal use or small businesses.

Step 1: Register a new Gmail account

I recommend setting up a new Gmail account to mange the emails for this new domain. You can of course forward the emails to an existing gmail account, but it is a lot easier to differentiate the emails if they are separate.

Step 2: Set Up Cloudflare Email Routing

First things first, you’ll need to add your domain to Cloudflare if you haven’t already. Once that’s done, navigate to the Email section in your Cloudflare dashboard.

Cloudflare Email Routing interface showing routing rules and custom addresses configuration

Enable Email Routing and add destination addresses where you want your emails forwarded. In my case, I’m forwarding everything to the new Gmail account. You can create multiple custom addresses like [email protected], [email protected], or even set up a catch-all rule.

Adding and verifying destination email addresses in Cloudflare

Cloudflare will automatically configure the necessary MX and TXT records in your DNS settings. You should see records like the ones below once Email Routing is enabled.

DNS records configuration showing MX records and DKIM settings for email routing

Step 3: Configure SMTP2GO for Sending

Head over to SMTP2GO and create a free account. The free tier gives you 1,000 emails per month and 200 per day, which should be plenty for most personal or small business use.

SMTP2GO pricing page highlighting the Free Plan at 0 dollars per month with limits and two higher-tier paid plans beside it.

Once you’re logged in, navigate to Settings ➡️ Verified Senders ➡️ Sender domains and add your custom domain. SMTP2GO will generate three CNAME records that you need to add to your Cloudflare DNS.

SMTP2GO DNS CNAME records configured in Cloudflare for email authentication

After adding the CNAME records to Cloudflare, return to SMTP2GO and verify your domain. DNS propagation should apply almost immediately. takes a few minutes.

SMTP2GO dashboard on the Verified Senders page showing DNS configuration with verified CNAME records and SSL certificate enabled

Next, create SMTP users in your SMTP2GO dashboard. You’ll need these credentials to configure Gmail in the next step.

Once you get to the Add SMTP User page, simply provide the username and password as you prefer. You can leave everything else to the default settings.

SMTP2GO form to add SMTP user with fields for username, password.

At this point, you are all ready to setup Gmail and/or your email client to use this now.

Step 4: Setting up a Google Account App password

Before you can add your custom domain to Gmail, you need to generate an app-specific password. Google removed the ability to use your regular password for third-party apps years ago.

Go to your Google Account settings, search for “app passwords”, and generate a new one. Save this password—you’ll need it shortly.

Google Account settings showing how to create app passwords for third-party applications

If you are unable to find the App passwords settings, that means you have not enabled 2-Step Verification. Enable it and you will also find the App passwords settings there.

Step 5: Configure Gmail to Send via Your Custom Domain

Now open Gmail and navigate to Settings ➡️ See all settings ➡️ Accounts. Under “Send mail as”, click “Add another email address”.

Gmail interface for adding another email address with custom domain setup

Enter your name and custom domain email address (e.g., [email protected]). Make sure to select “Treat as an alias” if you want Gmail to show your custom address by default.

On the next screen, choose “Send through SMTP server” and enter the following details:

  • SMTP Server: mail.smtp2go.com
  • Port: 587 (TLS)
  • Username: your SMTP2GO username
  • Password: your SMTP2GO SMTP password (from Step 2)
Gmail SMTP configuration screen with SMTP2GO server settings

Click “Add Account” and Gmail will send a verification code to your custom email address.

Confirm verification for own custom domain email in Gmail

Since you’ve already set up Cloudflare Email Routing, this should arrive in your Gmail inbox within seconds. Enter the code to complete the verification.

Confirmd verification for own custom domain email in Gmail

Tools like mail-tester.com or mxtoolbox.com can help you verify the authentication is working properly. In my testing, emails sent through this setup consistently scored 10/10 on mail-tester and passed all authentication checks.

Sending test email from gmail
Getting 10/10 score from mail-tester.com

I also tested sending to another Gmail account using the custom domain email. As you can see below, Gmail has also verified that everything is working correctly by checking the email headers in the recipient’s inbox. Look for the following:

  • DKIM signature with your domain
  • SPF pass status
  • DMARC pass status
Email header showing successful DMARC, SPF, and DKIM authentication passes

You can also take a look at the SMTP2GO dashboard to ensure all the emails are getting sent as expected.

Step 6: Configure your email client

I use Spark Desktop for my email client. You should also be able to do the same with any other email clients, as long as you can set up the incoming IMAP and outgoing SMTP servers yourself.

For Spark, I can immediately set it to use my custom domain email address as the account email, not the Gmail’s one even though it would be actually accessing the Gmail inbox. This is because it would authenticate to IMAP using the Google account and then SMTP using the SMTP2GO account.

This way, unlike on Gmail, the default email used on Spark is already the “alias” in Gmail.

IMAP Server settings

  • IMAP Server: imap.gmail.com
  • Port: 993 (SSL)
  • Username: your gmail email
  • Password: the google app password (from Step 4)

SMTP Server settings:

  • SMTP Server: mail.smtp2go.com
  • Port: 587 (TLS)
  • Username: your SMTP2GO username
  • Password: your SMTP2GO SMTP password (from Step 2)

Next, if you set up more that one custom email addresses, you will also add these email aliases here in your email clients so that you can use them here. For example, I can a few others that I have created for different needs and have all of them forwarded to the same Gmail account. As SMTP2GO has been setup to allow sending from the whole domain, we are all good!

Here’s a test email I sent from Spark to check that everything has been set up correctly.

Step 6: Set Up DMARC Monitoring

Here’s where things get properly robust. Cloudflare offers free DMARC management that lets you track which services are sending emails on your behalf. This is crucial for maintaining email security and ensuring your domain isn’t being spoofed.

Cloudflare DMARC Management interface showing configuration options

Navigate to the Email section in Cloudflare and enable DMARC Management. Cloudflare will automatically add the necessary DMARC DNS records. The default policy is set to “Quarantine”, which tells receiving servers to treat suspicious emails cautiously whilst you monitor the reports.

DMARC policy dashboard showing quarantine settings and SPF/DKIM status

After about 24 hours, you’ll start seeing reports on which sources are sending emails on your behalf. This helps you verify that SMTP2GO is properly configured and that no unauthorised services are using your domain.

While this feature is new, it is a lot better than trying to manually figure out this on your own. It’s amazing how much we get for free with Cloudflare.

Wrapping Up

The whole setup took me about 30 minutes from start to finish, including DNS propagation time. While a paid service like Google Workspace and Fastmail would be a much simpler affair to set this up, I can’t see much value for email volumes that are very low.

And as long as I don’t need to send more than 1000 emails a month, this approach gets me a professional email setup without monthly fees, whilst maintaining proper email authentication that keeps your messages out of spam folders. For personal use, this setup works brilliantly.

Let me know if this works for you.



If this post has been useful, support me by buying me a latte or two 🙂
Buy Me A Coffee
Share this:

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.