Guide
Supabase sign-up works but no confirmation email
Updated
Supabase recommends configuring a custom SMTP server in your Authentication settings for production use, because the built-in email service is for demonstration only. If a Send Email Hook is enabled, it handles email sending instead of SMTP.
Fixed in your code, then tested live. Check my app free
Why it happens
This applies to apps made with AI app builders that use Supabase Auth for sign-up. The signup confirmation flow needs an SMTP server to send emails. The default service is for demonstration only, with tight limits and no delivery promise, and a Send Email Hook, when enabled, takes over sending from SMTP.
Possible causes
- The project still uses the built-in email service, which only sends to addresses that are part of the project's team.
- The built-in service has a low rate limit, currently 2 messages per hour, so further messages are not sent.
- A custom SMTP server is not configured, so production addresses fail with Email address not authorized.
- A Send Email Hook is enabled, so the hook handles email sending and SMTP is not used.
- The custom SMTP provider is misconfigured, which shows up as handover errors in the Auth logs.
- The email provider blocks delivery, for example because of past bounced-back emails or a suppression list.
- The recipient's email server blocks or quarantines the message, or it lands in spam.
Official fix steps
- Check your project's Auth logs for errors that can occur when handing over to the email provider. (supabase.com)
- If the handover looks fine, check the email provider's logs for delivery issues such as blocks or suppression. (supabase.com)
- Ask the recipient to check with their email server admin whether your email domain is blocked or quarantined. (supabase.com)
- Configure a custom SMTP server in the Authentication settings page for production use. (supabase.com)
- Obtain the SMTP server host, port, user, password and a default From address from your email sending service. (supabase.com)
- Set up DKIM, DMARC and SPF with your email sending service to improve deliverability. (supabase.com)
You can't see it yourself
You're signed in, your customers aren't. Your own account already exists and is allowed in, and your own address may be on the project's team, so a message to you can arrive while a new customer's does not. A preview or your own device does not show what a stranger's first sign-up sends.
What to do next
App broke after you published it? Our AI agent fixes it in your code, then tests your live app again so you see the result yourself. The first check is free.
Fixed in your code, then tested live. Check my app free
Related: Supabase confirmation email not sending: the fix · Error sending confirmation email in Supabase: the fix · Supabase magic-link emails not delivered to your users
Sources
VibeFix's free check can show this on your live app: our AI agent tries your live app like a new user and shows you what breaks. On request, it reviews your code independently (VibeFix isn't part of any app builder), fixes it in your code and re-checks it live.
Last checked: 6 November 2026, against the sources listed above.
VibeFix is independent. Lovable, Bolt, Replit, Base44, v0 and Supabase are trademarks of their owners.
Want it fixed?
Our AI agent fixes it in your code and tests your live app again. See pricing.
It starts with a free check that confirms the problem on your live app, no account needed.