They killed my account with no warning
Developer email has a pattern: silent suspensions, unappealable bans, and free tiers that vanish once they cost the vendor money. Why it happens, and the one protection that outlives any provider going bad: you own the domain, so moving is a DNS change, not a migration.
I didn’t set out to write an angry post. But every time I read the switching research, the actual threads where developers describe why they left a provider, the same story shows up ahead of pricing, ahead of features, ahead of deliverability. It’s the silent cut. What follows is why that pattern exists, and why it still isn’t the catastrophe it feels like in the moment: with email, unlike almost any SaaS you build on, the thing that actually matters was never the vendor’s to take.
The pattern
Go read the forums and the story writes itself. A developer on Hacker News describes being a paying customer for four years, then getting frozen in the middle of a live event, at the worst possible moment, with no warning. A GitHub issue from a different provider: an account banned before the user had sent a single message. Ask why, and the answer is a wall. Mailgun’s own support language became a meme for it: they were “unable to disclose specific reasons.” You can’t fix a violation nobody will name. You can’t appeal a decision with no stated basis.
The mechanics are understandable, which is what makes them insidious. Email providers live and die by IP and domain reputation. One spammer who slips through can get a shared IP blocklisted and tank deliverability for every other customer on it. So the fraud-and-abuse systems are tuned to shoot first: automated risk scores, hair-trigger suspensions, and humans looped in only if you make enough noise. The provider’s incentive is to protect the pool, and you are a rounding error in that math. Rational for them. Devastating if it’s your production inbox.
The free-tier bait-and-switch
The second half of the pattern is the free tier that exists to acquire you and then disappears once you’re load-bearing.
SendGrid retired its free plan in 2025, the on-ramp a generation of side projects were built on, gone. Twilio’s changelog quietly retired free plans across the board. Resend’s free tier caps you at 100 emails a day, which sounds fine until the 101st signup of a good day silently doesn’t get their confirmation email. Mandrill got folded into Mailchimp and stopped being a standalone product; the developers who’d wired it into their apps got a migration, not a choice, and the community even had a hashtag for it. A recurring dev.to comment sums up the resignation: this is the business model. Get people to build on the free tier, wait until switching is painful, then move the line.
I don’t think most of these companies are run by villains. I think they’re run by spreadsheets. A free tier is a customer-acquisition cost, and the moment a CFO decides the acquisition isn’t paying back, the line moves. The problem is that “the line moved” for them means “my product broke” for the developer who trusted the number on the pricing page.
The part they can’t revoke: your domain
Here’s the thing the horror stories obscure: with email, unlike most SaaS, you are never truly locked in. Your identity is your domain, and your domain lives at a registrar you control, not at the email vendor. The provider is just where your MX record currently points. Switching providers is a DNS change: repoint MX for inbound, republish SPF and DKIM for outbound, and your address, support@yourapp.com, does not change. There is no data to migrate because the thing that matters, the name senders reach you at, was never theirs.
That is the protection that survives any provider deciding you’re a rounding error. Compare it to a platform where your identity is an account ID on their infrastructure: there, leaving means exporting whatever they let you export and rebuilding somewhere else. Email’s portability is a genuine architectural advantage, and it’s worth structuring your setup to keep it. Stacked out, the layers look like this, and only the bottom one is rentable:
So, provider-agnostic, protect yourself the boring way:
How this shaped MailKite (which we build)
The portability above is the real insurance, and it works whatever you pick. But the suspensions and vanishing tiers still cost people real outages, so when we built MailKite, we tried to remove the specific mechanics that cause them:
- A human reviews before any cut. Automated systems can flag. They don’t get to unilaterally kill a live account. If something looks wrong, the first step is a person and a message to you, not a suspension you discover when your mail stops. Abuse still gets stopped; it just isn’t stopped by a silent robot with no appeal.
- No hard cutoff. The free tier is 3,000 messages a month, inbound and outbound sharing one quota, with a 100 emails/day cap (in + out combined). Hit it and you get a clear error — your signups don’t silently vanish. Past the monthly number it’s $0.50 per 1,000 messages, metered and on the pricing page.
- A soft-pause, not a hard wall. Blow past a limit and you get a warning and a path back, not an instant cutoff that drops mail on the floor. The failure mode is “you get an email,” not “your users get silence.”
None of that is charity, and none of it should be the reason you trust us. Promises are just claims, and the whole point of this post is that claims on a pricing page move. So don’t treat the commitments as your safety net; treat the domain as it. Keep it somewhere you control, keep your DNS portable, and you can walk away from us the same afternoon you’d want to, exactly as you could from anyone else. That’s the bet worth making as a customer: the vendor worth using is the one that stays useful precisely because you could leave.
If you’ve been burned by a silent suspension or a vanishing free tier, I’d like to hear the story, and especially from the other side: the people running abuse desks trying to stop real spammers without nuking real customers. That trade-off is genuinely hard, and I don’t think anyone has it solved.
Whatever you build on, own the domain and keep the DNS portable. That’s the exit that survives any provider going bad. If you want to try the shape described here, point a domain at MailKite.
Related: Receiving email is the part nobody warns you about on the inbound wedge, and You can’t prompt your way out of prompt injection on the security side.