---
title: "Move off SendGrid SMTP after the free plan ended"
description: "SendGrid retired its free plan. Point the same SMTP client at Unitpost — host, username unitpost, API key as password — without rewriting your app."
url: https://www.unitpost.com/blog/concepts/move-off-sendgrid-smtp
section: Blog
updated: 2026-08-28
---
# Move off SendGrid SMTP after the free plan ended

SendGrid's free plan is gone (60-day trial at 100/day, then paid). If you were sending over SMTP, you do not need a new library. Change host to smtp.unitpost.com, username to unitpost, password to a Unitpost API key with emails:send, and send from a domain you verify. Nodemailer, PHPMailer, Django, and Laravel keep working. Cut over after DKIM/SPF on the new side pass.

## Move off SendGrid SMTP after the free plan ended

> SendGrid retired its free plan. Point the same SMTP client at Unitpost — host, username unitpost, API key as password — without rewriting your app.

SendGrid retired the free plan in 2025. If SMTP was how you sent, the app does not have to change — the relay does.

### Swap the connection

Same values as every Unitpost SMTP guide:

- Host `smtp.unitpost.com`
- Port 587 STARTTLS (not 25)
- Username `unitpost`
- Password = API key with `emails:send`
- From = an address on a domain you verify in Unitpost

Walkthroughs: Nodemailer (/guides/smtp/nodemailer), PHPMailer (/guides/smtp/php), Django (/guides/smtp/django), Laravel (/guides/smtp/laravel), hub at /guides/smtp (/guides/smtp).

### Verify before you cut DNS traffic

Add the domain in Unitpost, wait until DKIM/SPF checks pass (SPF for us is on `unitpost.yourdomain.com`, not an apex `include:spf.unitpost.com`), send one test, then change production SMTP settings. Comparison and “choose them if” live on /alternatives/sendgrid (/alternatives/sendgrid).

### HTTP API users

If you called SendGrid's REST API rather than SMTP, keep SMTP as the fast path for many apps, or use Migration Assistant with a read-only SendGrid key to preview contacts, templates, and suppressions. Domain DKIM keys will be new. Webhook signing secrets will be new.

## FAQ

### Do I have to rewrite my SendGrid SDK code?

Not if you were on SMTP. Keep Nodemailer / PHPMailer / your mailer. Only the connection settings change. If you used SendGrid's HTTP API, the Migration Assistant imports contacts, templates, and suppressions; sending code still needs an API swap.

### Will SendGrid keep sending while I set up Unitpost?

Yes. Verify the domain on Unitpost first, send a test, then switch the SMTP host. Nothing in Migration Assistant turns SendGrid off.

### Is Unitpost cheaper at every volume?

No. At high volume SendGrid's discounts can win, and we don't pretend otherwise. The reason to move is the rest of the bill: transactional and marketing in one product, unlimited contacts (not priced per contact), a permanent 5,000/month free tier, and SMTP plus the REST API and MCP on the same send gate — without rewriting Nodemailer/PHPMailer.

## Related

- [How to let an AI agent send email safely](https://www.unitpost.com/blog/agents/send-email-from-ai-agent): The concrete controls that make agent-initiated email safe: scoped credentials, a verified-domain gate, idempotency, approval before send, and an audit trail.
- [How to fix an SPF record that isn't found](https://www.unitpost.com/blog/troubleshooting/spf-record-not-found): Why an SPF lookup returns nothing even after you've added the record, and how to diagnose it: propagation, wrong host, quoting, and the one-SPF-record rule.
- [Transactional vs marketing email: what's the difference?](https://www.unitpost.com/blog/concepts/transactional-vs-marketing-email): The practical distinction between transactional and marketing email — consent, unsubscribe obligations, reputation risk — and when one tool for both is the right call.
