How we're using email on a custom domain for $0/mo
Google has announced yet another price increase for Google Workspace. Here's what we've done to avoid paying anything at all.
TLDR: Gmail + Cloudflare + Custom Google Account. Curious? Keep reading.
I'm a big fan of Google products, and especially Google Sheets. And Google Workspace is a fantastic suite of products too.
However, their pricing strategies? Not my favorite.
Here's why:
At first glance, Google Workspace seems like a steal at $6/mo.
Email on a custom domain, plus essential tools for startups, all for just $6/user/mo, right?
Wrong.
After signing up, users find themselves automatically enrolled in the priciest $20 plan trial.
1) what?
Sure, it's a free 14-day trial, and no payment is required yet. But there's no option to choose a different plan until credit card details are added, the onboarding is completed, and the billing page in the Google Workspace admin console is located to downgrade to the $6/mo plan.
Not cool, Google.
This tactic, known as a "reverse trial" was popularized by Elena Verna. For those interested, a detailed explanation is available on the Amplitude blog. This is just one example, but the message is clear:
Google is pushing hard to maximize revenue from its users.
Well, I totally get it, it’s smart. But if Google is trying to get as much as possible – then our startup, as a consumer, will aim to spend as little as possible.
Let the best plan win. :)
The Plan
This approach might be unconventional and may not be suitable for larger organizations. Let's be honest - it won't work for larger organizations at all.
However, for us, a small startup team, the trade-offs are acceptable. Plus, it's $0/mo. ;)
There aren't many alternatives out there, especially following the news of Notion acquiring Skiff and shutting it down, and especially not as good as Google. And certainly, there’s not enough information on how to get all that working for free (trust me, I did some research).
Throughout this guide, imagine the process from the perspective of Max, a user from Example Inc., with the domain example.com.
Step 1 - The Mailbox
First up, we need a mailbox for business mail. Yes, we want to have a custom domain email, etc., but we still need to store the emails somewhere, right?
So, we need a mailbox.
At our startup, we simply use our personal Gmail accounts because it's simpler. However, creating a new, regular, free Gmail account is also an option.
In any case, the exact email address doesn't matter since it won't be shared with anyone; for now, we just need a space to store our emails.
Whenever I refer to the private Gmail inbox in the steps below, I’ll be using the max.example@gmail.com mailbox.
Step 2 - The Incoming Mail
Time to dive in and get our custom domain up and running.
The goal here is simple: make sure any email sent to max@example.com lands in the mailbox max.example@gmail.com.
Lucky for us, Cloudflare offers a fantastic feature called Email Routing. It lets users add aliases to existing email addresses for free, which is exactly what's needed.
Here's the plan:
First, ensure the domain's DNS records are under Cloudflare's control. No need to move the domain from its current registrar; it's okay if it stays on Namecheap or any other platform. However, DNS management must be handed over to Cloudflare. This means adding the domain to Cloudflare as a site. It's easy to do, and here's a guide to help.
Next, log into the Cloudflare dashboard, pick the account and domain (site).
Navigate to Email > Email Routing and hit Get started.
In the Custom address field, type the custom email address desired (like max@example.com).
For the Destination address, input the full email address where emails should be forwarded (like max.example@gmail.com).
Tip: If multiple destination addresses are linked to one custom email address (rule), Email Routing will only recognize the latest rule. To prevent issues, avoid linking multiple destination addresses to one custom address.
Click Create and continue.
Cloudflare will send a verification email to the provided Destination address. This email address must be verified to move forward.
In the verification email from Cloudflare, click Verify email address > Go to Email Routing to activate Email Routing.
The Destination address should now display Verified under Status. Click Continue.
Cloudflare will automatically add the necessary MX and TXT records to the DNS records for Email Routing to function. This automatic step is only required the first time Email Routing is set up. It ensures the correct records are in place in the zone. Click Add records and finish.
Remember, Cloudflare's dashboard labels might change over time, so it's wise to check the original Cloudflare Email Routing documentation for the latest instructions.
All set. It might take up to 48 hours for the changes to take effect, but typically, it starts working within minutes.
To confirm everything is set up correctly, send an email to max@example.com and check the inbox of max.example@gmail.com. The email should appear there.
A quick tip.
When testing Email Routing, avoid sending test emails from the mailbox the alias is pointing to.
For instance, if the setup is max@example.com → max.example@gmail.com, don't send the test email from max.example@gmail.com to max@example.com.
Gmail might not show it due to deduplication. Instead, use a different mailbox for sending the test email.
Step 3 - The Outgoing Mail
Feeling the excitement?
Good, because we're diving deep into the heart of setting up a free Google Workspace alternative using Google's infrastructure itself, with a bit of Cloudflare magic.
This step is all about teaching the max.example@gmail.com Gmail inbox to send emails not just from its own address but also as max@example.com. It's a clever trick that I learned from a friend that Google might not be too keen on sharing on its billboards!
First, head over to the Gmail account settings. Open the max.example@gmail.com inbox, hit the Settings icon at the top right, and click on “See all settings”.
Jump to the “Accounts and Import” tab.
Look for the “Send email as” section and click on “Add another email address”. A popup should appear.
In this popup, type in the name recipients will see. Stick with something professional since it'll show up in every email sent.
For the email field, input the custom domain email address, like max@example.com.
Make sure to uncheck “Treat as alias”, then hit the button to move forward.
Set the SMTP server to smtp.gmail.com and the port to 587.
The username should be the part of the Gmail address before the @. So, if it's max.example@gmail.com, just use max.example.
Now, the password part gets interesting. Normally, the Gmail password would go here, but there's a twist (thanks to Google's tight security regarding its own products). The steps would be different depending on whether you have Two-factor authentication (2FA) enabled on your account or not.
Without 2FA: Visit https://myaccount.google.com/lesssecureapps and enable access for “less secure apps”. Then, use the Gmail password in the still-open Gmail popup.
With 2FA: Head to https://myaccount.google.com/apppasswords, create a new “App password” named “Gmail” or something similar. Copy the provided code and use it as the password in the Gmail popup.
After navigating through these steps, a field asking for a confirmation code should appear. Check the inbox for an email containing this code. Copy it into the popup field to finalize the setup.
In Gmail settings under “Accounts and Import” → “Send mail as”, and in the “When replying to a message:” section, choose “Reply from the same address the message was sent to”, for convenience.
And that's it! Congratulations on setting it up! Now, emails can be received at max@example.com and sent from max@example.com:
Remember, when sending emails through Gmail, pick the right email address from the dropdown.
Apple Mail users, setting this up is just as straightforward (link).
(Bonus) Step 4 - Google Workspace Apps
Managed to set up emails with custom domains at no cost?
Awesome!
But, there's more to Google than just email. Thinking about Google Drive, Google Calendar, Google Meet?
Or, the top pick, Google Sheets?
And, what if you want to be invited to collaborate on a shared doc, as max@example.com?
Here's the easy step-by-step to get all that too:
Select "Use another account."
Hit "Create an account," then choose "For my personal use."
Fill in the personal details (First/Last name, etc.)
Opt for "Use your existing mail":
Enter the max@example.com email address to continue.
Tip: If this option doesn’t appear, make sure you aren’t trying to create a Gmail account instead. The flows are very similar. Make sure you’re using the https://accounts.google.com/AddSession link to kick off the Google Account creation process.
And that's it!
You now have full access to all Google products, leveraging that sleek new custom domain email, all still at $0/mo.
Why?
Now, you might think:
"$20 per user each month is too much trouble."
And you'd probablybe right. For some, it's no big deal.
But in our startup, we come from a background of bootstrapping B2B SaaS businesses, where every dollar counts. That's why being careful with our spending isn't just a habit—it's a core part of our culture.
So, why pay when we can get the same thing for free?
Next steps:
As Hirvesh pointed out on Twitter - you absolutely must not forget about your SPF/DKIM records, to make sure emails don’t get lost! Here’s the official guide on how to enable them.
As Matthew found out, sometimes, immediately after following the steps and creating your Gmail-less Google account, visiting calendar.google.com results in a redirect to one of your other Google accounts. No sweat! To fix that, open an incognito window (with no other Google accounts connected, obviously, since it’s incognito) and log in to calendar.google.com just once. Then, feel free to close the incognito tab, as the problem should be resolved.
Great guide, thanks. Got confused with that last step when google acc is created - is the end result gmail + gcal under one account OR mail (inbox) is under max.example@gmail.com and calendar under Gmail-less acc?
Re Step 4: Did this work for you for Google Calendar? I followed your instructions, but everytime I visit calendar.google.com, it reverts back to a normal gmail account.