export const mail = {
domain: "t3.chat",
boxes: ["support", "theo", "noreply"],
routes: {
support: ["theo"],
noreply: ["bounce"],
},
auth: { provider: "convex" },
};
Add email to your app like you add a database. Code first, config second, done.
Your mail.config.ts lives in your repo, deploys with your app, grows with your company.
From MVP to IPO, your mail.config.ts grows with you.
Day 1 founder workflow
You have an idea. You want it to feel real. Real companies have company email. You shouldn't pay $600/year for 5 mailboxes while figuring out if it works.
One command setup
npx hustlemail create t3.chat — creates mail.config.ts, configures DNS, generates DKIM keys. You're done.
Lives in your repo
mail.config.ts is version controlled, reviewed in PRs, deploys with git push. No more wrestling with dashboards.
Hosted free forever
Use our managed hosting at zero cost — or truly own the stack with self-hosted OSS.
Unlimited mailboxes
support@, founders@, investors@, noreply@ — create as many as you need. No per-seat pricing.
Real infrastructure
DKIM signing, SPF records, spam filtering. Your emails land in inboxes, not spam folders.
Auth is orthogonal
Start with mock users, swap in WorkOS/Clerk/Okta when you close your seed round. Config doesn't change.
export const mail = {
domain: "t3.chat",
boxes: ["support", "theo", "noreply"],
routes: {
support: ["theo"],
noreply: ["bounce"],
},
auth: { provider: "convex" },
};
From MVP to IPO
Your mail.config.ts grows with you. Same file, same patterns, from 2 founders to 500 employees.
Update routes, push, done. With Okta/WorkOS connected, new hires auto-appear in your users table.
Simple, honest pricing
Pay per domain, not per user. Every tier gets unlimited mailboxes, routes, and rules.
Free Forever
Bring your own API keys
- Unlimited mailboxes
- Unlimited domains
- Unlimited routes & rules
- BYO Resend (outbound)
- BYO OpenRouter (spam AI)
- BYO Convex (backend)
- BYO Uploadthing (files)
- Community support
Simple
Managed infrastructure
- Unlimited mailboxes
- Unlimited routes & rules
- Managed Convex instance
- Managed SMTP/IMAP
- Managed spam AI
- Managed Resend (outbound)
- Shared Resend IP pool †
- Email support
Managed
White glove service
- Everything in Simple
- Dedicated SMTP/IMAP
- Dedicated IP warming † (roadmap)
- 1TB file bandwidth/mo
- Migration assistance
- DNS config assistance
- mail.config.ts review
- Priority Slack support
Self-Hosted
Run it yourself
- Full source code
- SMTP ingress server
- IMAP proxy server
- Web mail client
- Spam eval pipeline
- CLI tooling
- Deploy anywhere
- Community support
† Outbound delivery note: Simple tier outbound is currently routed through Resend's shared IP infrastructure. Resend is a transactional email API — shared pools mean your deliverability can be affected by other senders on the same IPs. No inbox-placement guarantee is made for the Simple tier. Managed tier dedicated IP warming (Postfix/Haraka on isolated Fly.io machines with per-domain PTR records) is on the roadmap and not yet live. We will update this page when it ships. If guaranteed deliverability is critical today, contact us before signing up.
What's "Bring Your Own Keys"?
The Free Forever tier lets you own every dependency. You bring API keys from these providers (all have generous free tiers) and pay them directly. We charge nothing.
Email shouldn't be a business problem
It should be a configuration problem. Add email to your app like you add a database. Code first, config second, done.
Start Free Forever