Consolidate Email Providers: Mailboxes + API on One Host (2026)
Three email bills, three DNS surfaces. Here's how to collapse them.
Three email bills, three DNS surfaces. Here's how to collapse them.
Last month I helped a friend audit his SaaS infrastructure. Three-person team, one product, reasonably lean. Then we got to email — and the sprawl of providers he was juggling to consolidate email providers onto one domain host.
Google Workspace for the team mailboxes. SendGrid for transactional (password resets, receipts, the usual). Mailchimp for the newsletter. And some random SMTP relay his developer set up for the contact form because "it was faster than figuring out SendGrid's template system."
Four providers. Four bills. Four sets of DNS records crammed into one SPF statement that was dangerously close to the 10-lookup limit.
"This is insane," I said.
"I know," he said. "But migrating sounds worse."
It's not. And I'm going to walk you through it.
A single provider handling your team mailboxes (IMAP/SMTP, unified inbox, the works) and your application's transactional email (REST API, delivery webhooks, message logs). One DNS surface. One SPF include. One bill.
We're the JustEmails team — JustEmails is built by Velocity Digital Labs, the same team behind JustAnalytics for privacy-first web analytics and ClickzProtect for ad fraud protection. We built JustEmails specifically because this consolidation problem kept coming up. Agencies with 20 client domains paying per-user Workspace fees and per-email SendGrid fees. SaaS founders juggling three dashboards to debug why a password reset didn't arrive.
The solution isn't complicated. It just requires doing things in the right order.
Before you start:
smtp, sendgrid, postmark, your current provider's SDK name)And honestly? A Saturday afternoon. This isn't a 15-minute job, but it's not a week either.
Before you consolidate, you need to know what you're consolidating. Pull up your DNS records and find every email-related entry:
MX records — These tell the world where to deliver mail for your domain. You probably have 3-5 pointing at Google or Microsoft.
SPF record — One TXT record starting with v=spf1. Count the include: statements. Each one is a DNS lookup. You get 10 total before SPF breaks.
DKIM records — Look for _domainkey in the record name. You might have multiple if you've added transactional providers over time.
DMARC record — Should be at _dmarc.yourdomain.com. Check where aggregate reports (rua) are going.
Now list your providers:
| What | Provider | Monthly cost | DNS includes |
|---|---|---|---|
| Team mailboxes | Google Workspace | $14/user × 3 = $42 | _spf.google.com |
| Transactional | SendGrid | $19.95 (Essentials) | sendgrid.net |
| Contact form | Random SMTP | $0 (using personal Gmail) | (probably missing) |
| Newsletter | Mailchimp | $13 (free tier expired) | servers.mcsv.net |
That's $75/month for a three-person team's email. And three SPF includes eating into your lookup budget.
(Side note: that contact form running through personal Gmail? That's a deliverability time bomb. The From: address doesn't match the sending domain. It'll get spam-foldered eventually.)
Here's the counterintuitive move: don't start with mailboxes. Start with transactional.
Why? Three reasons:
Lower risk. If a transactional email fails, you see it immediately in your logs. If a mailbox migration goes wrong, mail vanishes into the void and you don't know for hours.
Faster feedback loop. You can test the API with a single password reset before switching your whole app.
Simpler rollback. Changing an API endpoint in code is a one-line fix. Unwinding a mailbox migration involves DNS propagation and IMAP syncing.
In JustEmails, transactional email is built in — 1,000 sends/month included in the base $49/year plan. If you need more, add $25/year per 10,000/month tier.
The API is REST-based with idempotency keys (so you can safely retry without sending duplicates) and webhook delivery notifications.
Here's a basic send:
curl -X POST https://api.justemails.app/v1/send \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"from": "noreply@yourdomain.com",
"to": "user@example.com",
"subject": "Your password reset link",
"html": "<p>Click <a href=\"https://...\">here</a> to reset.</p>",
"idempotency_key": "pwd-reset-user123-1718150400"
}'
The idempotency key matters. If your app retries on timeout, you won't accidentally send three password reset emails. I've debugged that exact issue on other platforms — it's not fun explaining to users why they got spammed by their own app.
Find every place in your codebase that calls your current transactional provider. Common patterns:
# Python/SendGrid
import sendgrid
# Node/Postmark
const postmark = require('postmark')
# Ruby/SES
ses = Aws::SES::Client.new
Replace with HTTP calls to the JustEmails API. Or if you prefer, use SMTP relay — same credentials as your mailboxes, port 587, STARTTLS.
Run your test suite. Send yourself a password reset. Check the message logs in JustEmails. Once it's working, deploy.
Don't delete your SendGrid account yet. Keep it around for 30 days in case something weird surfaces. We'll clean up DNS later. If you're also running analytics, check out JustAnalytics — same VDL ecosystem, same philosophy of simplicity over sprawl.
Now the mailboxes. This is the bigger lift, but honestly? We've done it enough times that the steps are predictable. The scary part is mostly in your head.
Log into JustEmails, add your domain (verify with a TXT record), and create mailboxes matching your current setup. sarah@yourdomain.com stays sarah@yourdomain.com.
JustEmails gives you unlimited mailboxes on the $49/year plan. No per-user fees. If you're coming from Workspace where you're paying $7-$18 per user per month, this is where the math gets interesting.
Use imapsync to copy mail from Google/Microsoft/Zoho to JustEmails. The full walkthrough is in our Google Workspace migration guide, but the short version:
imapsync \
--host1 imap.gmail.com --port1 993 --ssl1 \
--user1 "sarah@yourdomain.com" --password1 "google-app-password" \
--host2 mail.justemails.app --port2 993 --ssl2 \
--user2 "sarah@yourdomain.com" --password2 "justemails-password" \
--gmail1 --automap --exclude "^\[Gmail\]/All Mail$"
Run this for each mailbox. First sync takes hours for large mailboxes. Let it run overnight.
Once mail is synced, you're ready for the MX cutover. But first — lower your MX TTL to 300 seconds and wait 24 hours. Skipping this is how you lose mail to caching.
Then:
ASPMX.L.GOOGLE.COM family, or whatever your current provider uses)include:spf.justemails.app — remove the old provider's includeWait for propagation. Test with an external email. Run imapsync again to catch any mail that landed at the old provider during the gap. (Yes, you'll be anxious. Yes, it'll probably be fine. No, I can't promise no mail gets lost — DNS propagation is not a precise science.)
Our DMARC enforcement guide covers tightening your policy after the dust settles.
Your team's mail apps need new server settings:
IMAP: mail.justemails.app, port 993, SSL/TLS
SMTP: mail.justemails.app, port 587, STARTTLS
Budget 15 minutes per person. Some will figure it out. Others will call you. (You know who they are.)
I'll admit — this is the part I dread. Not because it's hard, but because explaining IMAP vs SMTP to someone who just wants their email to work is its own special form of suffering.
After 30 days with no issues:
SPF permerror after migration
You probably have two SPF records. There can only be one. Merge them:
# Wrong (two records)
v=spf1 include:_spf.google.com ~all
v=spf1 include:spf.justemails.app ~all
# Right (one record)
v=spf1 include:spf.justemails.app ~all
Transactional emails going to spam
Check that your From: domain matches the authenticated domain. If you're sending from noreply@yourdomain.com, make sure JustEmails has yourdomain.com verified with DKIM. Mixing domains triggers spam filters.
Mail client won't connect
Double-check the port. IMAP is 993 (SSL), not 143. SMTP is 587 (STARTTLS), not 25 or 465. Old tutorials sometimes list outdated ports.
imapsync hangs on large mailboxes
Google rate-limits IMAP connections. Add --maxbytespersecond 100000000 to throttle slightly, or run overnight when rate limits are less aggressive.
Look, Google doesn't make this easy. They want you staying on Workspace. The rate limits, the app password hoops, the confusing "less secure apps" settings — it's friction by design. Accept it. Work around it. Move on.
Before consolidation (our friend's setup):
| Provider | Monthly | Annual |
|---|---|---|
| Google Workspace (3 users) | $42 | $504 |
| SendGrid Essentials | $19.95 | $239 |
| Mailchimp | $13 | $156 |
| Random SMTP | $0 | $0 |
| Total | $74.95 | $899 |
After consolidation:
| Provider | Annual |
|---|---|
| JustEmails ($49 base + $25 for extra transactional tier) | $74 |
| Total | $74 |
That's $825/year back in his pocket. And one login instead of four.
Could he have kept the old setup? Sure. Does email consolidation solve world hunger? No. But $825 buys a lot of coffee, and fewer dashboards means fewer places for things to break at 2am.
Is it worth a Saturday afternoon? Yeah. It is.
If you're managing multiple domains — agency life, portfolio companies, side projects — the consolidation math gets even better. All your domains on one $49/year plan, all your transactional email in one API, all your DNS in one SPF include. Check our flat-fee vs. per-mailbox pricing breakdown to see the numbers for larger setups.
Yes, if the provider offers both mailbox hosting and a transactional email API. JustEmails includes 1,000 transactional API emails/month in the base $49/year plan, with additional 10K/month tiers at $25/year each. You get IMAP/SMTP mailboxes for your team and a REST API for your app — same domain, same DNS surface, same bill.
Migrate transactional email first. It's lower risk because failures are immediately visible in your app logs, and you can test with a single endpoint before switching everything. Mailbox migration involves user retraining and client reconfiguration, so it's better to tackle that once your transactional flow is proven.
Not if you configure SPF, DKIM, and DMARC correctly. The risk with multiple providers is SPF record bloat — you're only allowed 10 DNS lookups per SPF check. Consolidating to one provider with one include statement actually improves your SPF situation. Monitor DMARC aggregate reports for the first week after any DNS change.
It varies wildly. A password reset here, a receipt there — most early-stage SaaS apps send under 5,000/month. The 1,000/month included in JustEmails covers basic use. If you're sending onboarding sequences or high-volume notifications, stack $25/year tiers until you hit your ceiling. At $25 per 10K/month, you'd pay $75/year for 30,000 monthly sends — still cheaper than SendGrid's growth plans.
Unlimited custom domain email hosting for $49/year flat — unlimited domains, unlimited mailboxes, 10 GB storage, full IMAP/SMTP. Built for agencies, freelancers, and anyone managing email across more than one domain.