Supabase Auth Custom SMTP Comparison - Evaluating All 6 Services from the Official Docs
Supabase Auth is a BaaS that supports email verification, magic links, OTP, and more. However, its default SMTP server has strict sending limits that make it unusable in production.
The Supabase documentation lists the following 6 email services under “How to set up a custom SMTP server?”:
This post compares all 6 services by free tier, SMTP configuration, and ease of setup to help you pick the right one.
Default SMTP Limitations
First, why custom SMTP is required. Supabase’s default SMTP has the following limitations:
| Limitation | Details |
|---|---|
| Recipient restriction | Pre-authorized addresses only (organization team members) |
| Rate limit | Limited messages per hour (subject to change without notice) |
| Production use | Not recommended (intended for development and testing) |
Even basic functionality like sending confirmation emails during sign-up won’t work with the default SMTP. If you’re using Supabase Auth in production, configuring a custom SMTP provider is mandatory.
Free Tier Comparison
Here’s how the 6 services compare on their free tiers:
| Service | Free Tier (Monthly) | Daily Limit | Free Tier Duration | Cheapest Paid Plan |
|---|---|---|---|---|
| Resend | 3,000 emails | 100 | Unlimited | $20/mo (50,000 emails) |
| AWS SES | 3,000 emails | None | 12 months | $0.10/1,000 emails (pay-as-you-go) |
| Postmark | 100 emails | None | Unlimited | $15/mo (10,000 emails) |
| Twilio SendGrid | 100 emails/day (trial) | 100 | 60-day trial | From $19.95/mo |
| ZeptoMail | 10,000 emails (one-time) | None | Credit expires in 6 months | $2.50/10,000 emails (pay-as-you-go) |
| Brevo | ~9,000 emails | 300 | Unlimited | $9/mo (5,000 emails) |
Free Tier Analysis
Brevo offers the most generous free tier by daily volume. At 300 emails per day, it can handle auth emails for mid-sized services. That translates to roughly 9,000 emails per month.
Permanent free tiers are available from Resend, Postmark, and Brevo. AWS SES expires after 12 months, and SendGrid only offers a 60-day trial. ZeptoMail gives a one-time credit of 10,000 emails, but it’s pay-as-you-go after that.
Postmark’s 100 emails per month is too low for production use. It’s practical only for testing or hobby projects.
SMTP Configuration Comparison
Here are the SMTP settings for each service, which you’ll enter in the Supabase dashboard under “SMTP Settings”:
| Service | Host | Port | Username | Password |
|---|---|---|---|---|
| Resend | smtp.resend.com | 465 | resend | API key |
| AWS SES | email-smtp.{region}.amazonaws.com | 465 / 587 | SMTP username (generated via IAM) | SMTP password (generated via IAM) |
| Postmark | smtp.postmarkapp.com | 587 | Server API token | Server API token |
| SendGrid | smtp.sendgrid.net | 587 | apikey | API key |
| ZeptoMail | smtp.zeptomail.com | 465 / 587 | emailapikey | SMTP password (generated in dashboard) |
| Brevo | smtp-relay.brevo.com | 587 | Account email address | SMTP key (generated in dashboard) |
Ease of Setup
Resend and SendGrid have the simplest setup. Generate an API key, paste it as the password, and you’re done. The username is a fixed value (resend / apikey), so there’s nothing to figure out. Resend also provides a dedicated Supabase integration guide.
AWS SES requires the most steps. You need to create an IAM user, generate SMTP credentials, verify your domain in SES, and request sandbox removal. Straightforward if you’re familiar with AWS, but a higher barrier for newcomers.
ZeptoMail and Brevo fall in the middle. You need to generate SMTP keys in their dashboards, but the process isn’t particularly complex.
Recommendations by Use Case
Personal projects or small-scale services: Resend
- Free tier (3,000 emails/month) is sufficient
- Simplest setup experience
- Setup instructions in the Supabase documentation
- Dedicated Supabase integration guide from Resend
- Developer-friendly documentation and dashboard
Maximizing the free tier: Brevo
- 300 emails/day (~9,000/month) is the largest free tier among all 6 services
- Permanent free tier with no expiration
- Marketing email features also available
Already using AWS: AWS SES
- Seamless integration with the AWS ecosystem
- Pay-as-you-go pricing ($0.10/1,000 emails) keeps costs low at scale
- Low cost even after the 12-month free tier expires
- CloudWatch metrics for monitoring
Prioritizing deliverability: Postmark
- Specializes in transactional email with strong deliverability
- Free tier is only 100 emails/month, so expect to use a paid plan ($15/month and up)
Custom SMTP Setup Steps
Regardless of which service you choose, the setup flow is the same.
1. Create an Account
Sign up for the email service you’ve chosen.
2. Add and Verify Your Domain
Register your sending domain with the service and add DNS records (SPF, DKIM, DMARC) to your domain’s DNS settings. DNS propagation can take anywhere from a few minutes to 72 hours. If you’re using a DNS service like Cloudflare, it typically resolves within minutes.
3. Get SMTP Credentials
Generate SMTP credentials (API key or SMTP password) in the service’s dashboard. Refer to the “SMTP Configuration Comparison” table above for the specific values.
4. Configure Custom SMTP in Supabase
Enable custom SMTP in the Supabase dashboard and enter the credentials:
- Open your project
- Select “Authentication” from the left sidebar
- In the “SMTP Settings” section, toggle “Enable Custom SMTP” on
- Enter the Host, Port, Username, and Password (values vary by service)
- Set the Sender email to an address on your verified domain (e.g.,
noreply@example.com) - Click “Save”
5. Adjust Rate Limits
Right after configuring custom SMTP, Supabase applies a default rate limit of 30 messages per hour. You can adjust this in the “Rate Limits” settings page in the Supabase dashboard.
Set the rate limit within your service’s free tier daily cap to avoid delivery failures.
6. Verify the Setup
- Go to “Authentication” > “Users” in the Supabase dashboard
- Click “Add User” > “Send Invitation” and send a test email
- Verify that the email arrives
You can also check delivery logs in your email service’s dashboard.
Things to Watch Out For
Know Your Free Tier Limits
Each service has its own free tier limits. Exceeding them will cause email delivery failures, preventing users from completing sign-up or password reset flows. Pay attention during traffic spikes such as right after launch or during promotions.
Maintain Domain Reputation
If the DNS records for your sending domain (SPF, DKIM, DMARC) are misconfigured or removed, your emails may be flagged as spam. Don’t delete the DNS records you set up during domain verification.
Summary
Supabase Auth’s default SMTP is limited to development and testing. Custom SMTP is required for production use.
Among the 6 services listed in the official docs, Resend offers the best balance of free tier and ease of setup. It comes with 3,000 emails per month on a permanent free tier, and has comprehensive Supabase integration documentation.
If you want the largest free tier, Brevo (300 emails/day, ~9,000/month) is the best choice. If you’re already on AWS, AWS SES (pay-as-you-go at $0.10/1,000 emails) is the most cost-effective option at scale.
| Priority | Recommendation |
|---|---|
| Ease of setup | Resend |
| Largest free tier | Brevo |
| Cost at scale | AWS SES |
| Deliverability | Postmark |
Setup takes about 30 minutes to an hour regardless of which service you choose. If you plan to use Supabase Auth in production, configure custom SMTP early in your project.
References
- Supabase Auth documentation
- Supabase custom SMTP setup guide
- Supabase production checklist
- Resend
- Resend Supabase SMTP integration guide
- Resend pricing
- AWS SES pricing
- AWS SES SMTP guide
- Postmark SMTP guide
- Postmark pricing
- SendGrid SMTP guide
- SendGrid pricing
- ZeptoMail SMTP guide
- ZeptoMail pricing
- Brevo pricing
That’s all for comparing custom SMTP options for Supabase Auth. From the gemba.