SMTP for Supabase
The confirmation email never arrived. The user gave up.
The email service built into Supabase Auth is made for testing: a very low hourly limit and, by default, only your own team receives it. Switch to a production SMTP in the Supabase dashboard, without changing a line of code.
3,000 emails a month free. No card to start.
Why the Auth email does not arrive
2 emails per hour
The built-in service sends 2 emails per hour for the whole project. One sign-up and one password reset use it up, and the next person gets over_email_send_rate_limit.
Only your team receives
Without custom SMTP, Supabase only sends to the members of your organization. Everyone else gets email_address_not_authorized.
No delivery guarantee
Supabase itself says the built-in service is not meant for production and has no delivery SLA.
Spam without authentication
Even with custom SMTP, a sender without SPF, DKIM and DMARC lands in spam. Couryo only sends from a verified domain.
Numbers from the Supabase Auth documentation (custom SMTP and rate limits pages), checked on October 20, 2026. They can change.
The fields to paste
In the Supabase dashboard: Authentication > Emails > SMTP Settings, turn on Enable Custom SMTP and fill in:
| Field | Value | Note |
|---|---|---|
| Host | smtp.couryo.com | |
| Port number | 587STARTTLS. Or 465 (TLS) or 2525 (STARTTLS, when 587 is blocked). | STARTTLS. Or 465 (TLS) or 2525 (STARTTLS, when 587 is blocked). |
| Username | couryoAlways this word, for every account. | Always this word, for every account. |
| Password | ck_live_...A Couryo API key with the send scope. A ck_test_ key captures the email in the panel and delivers nothing. | A Couryo API key with the send scope. A ck_test_ key captures the email in the panel and delivers nothing. |
| Sender email | no-reply@auth.yourapp.comAn address on a domain verified in Couryo. | An address on a domain verified in Couryo. |
| Sender name | Your appThe name people see in the inbox. | The name people see in the inbox. |
Save, then open Authentication > Rate Limits and raise the emails per hour. When custom SMTP is saved, Supabase starts it at 30 per hour; this is the step most people forget.
Three steps, no code change
- 1
Verify the sending domain
In Couryo, under Domains, add the domain (an auth subdomain such as auth.yourapp.com keeps sign-in apart from marketing). Each DNS record shows its status live, with Cloudflare in one click.
- 2
Create the SMTP key
In the panel, Keys > Connect to Supabase creates a key with the send scope only and shows every field with a copy button. The full key is shown once.
- 3
Paste, save and test
Paste the fields in Supabase, raise the rate limit and sign up a test user. The email shows up in Couryo's timeline: accepted, sent, delivered, with the receiving server's answer in plain words.
What it costs
Auth emails are transactional: they go out on any plan, including Free.
Free
$0 forever
- 3,000 emails a month
- Up to 100 a day
- 1 verified domain
- Timeline of every email
Pro
$19 a month
- 50,000 emails a month
- 10 domains
- 30-day logs
- Cancel in one click
Frequently asked questions
- What is the Supabase Auth email limit?
- With the built-in service, 2 emails per hour for the whole project, and only to members of your organization. With custom SMTP, it starts at 30 per hour and you change it under Authentication > Rate Limits. There is also a 60-second window per user between requests (Supabase docs, checked on October 20, 2026).
- Which SMTP settings do I use in Supabase?
- Host smtp.couryo.com, port 587 (STARTTLS), 465 (TLS) or 2525, username couryo, password = a Couryo API key with the send scope, and a sender email on a domain verified in Couryo.
- I turned on custom SMTP and still get email rate limit exceeded. Why?
- Almost always because the emails per hour stayed at the starting value. Raise it under Authentication > Rate Limits. If it only happens when the same person asks twice in a row, it is the 60-second window per user, which is on purpose.
- Can I test the sign-up flow without sending real email?
- Yes. Use a ck_test_ key as the SMTP password: Couryo captures the confirmation email and shows it in the panel with the link, and delivers nothing.
- How much does it cost?
- The Free plan has 3,000 emails a month, up to 100 a day, and is free forever. Pro is $19 a month for 50,000 emails.
- Does a new Couryo account send right away?
- A new account starts in a sandbox that only sends to the account's own addresses. With the domain verified, it moves up by itself to a level that sends to anyone; the limits of each level are on the Limits and levels page of the docs.
Make the next sign-up email arrive
3,000 emails a month free. No card to start.