Mailer Autoconfirm
I've been struggling to figure out how to send emails with the SMTP using Resend. Even after integrating, doing all checks the emails still get sent from Supabase address. It seems it has to be with various issues but one I cannot seem to resolve is that mailer_autoconfirm=TRUE, I have tried setting it to FALSE via the API but have failed and nowhere to be changed in the dashboard. My stack is with Flutter + Supabase + RESEND.
Any ideas how to solve this?




88 Replies
Did you set the Sender details > Sender email on this page https://supabase.com/dashboard/project/_/auth/smtp?
Thanks for replying @silentworks yes I did. I used RESENDs integration to fill those out.
Everytime a new user gets created the Confirmed at timestamp gets filled out before even the OTP confirmation happens, which is why I think my mailer_autonconfirmation = TRUE.


How are they signing up?
The createUser admin call does not use this setting.
We're using supabase.auth.signUp() in our Flutter app and also have tried: supabase.auth.signInWithOtp()
Both still send an email from Supabase Server

I was checking free vs paid tiers and although it says free includes SMTP, it says you cannot remove Supabase branding from emails. Could this be causing it?

Thanks for your help @garyaustin
OK, sort of confusing what your issue is... is it auto confirm or the email from address?
Try the dashboard invite link.
I get from invite link with a custom SMTP on Free with the sender email filled in.

The branding is referring to the footer of the email body which states it's sent by Supabase, not the from address. I'm on a free plan and like Gary mine shows the domain I've setup my SMTP server with.
The main issue is the email address for sure, cannot find a way to use the SMTP. (I think the mailer_autoconfirm is secodary)
And you're 100% sure it's the same project you are sending the emails from? have you tried what Gary suggested and send an invite email from the dashboard of that project?
Send an invite using this feature in the dashboard and see if the email is still showing the Supabase one instead of your custom SMTP email.
Any chance you have two projects and signup is going to a different one?
I just tested that and the email took a while, and still came in with the Supabase email address.

Nope I only have one project in my account.
Is there a way to check logs of email sending to see if there was an issue to send with the SMTP?
Normally if there is an issue you would get an error in the auth logs. Also is there any events happening in your Resend side of things?
From their logs that is https://resend.com/logs
Good point! No event or logs happened on the Resend side. So there is an issue with the integration.
I would suggest disabling custom SMTP and then re-enabling it again.
If that doesn't work, try restarting the Supabase project from the Dashboard https://supabase.com/dashboard/project/_/settings/general
Will try that and keep you posted, thanks!
It is odd because unless something changed very recently it does not fall back to the built in. It errors out if things are wrong.
Yeah I remember this being the standard behaviour too.
Yep, see logs. No errors, it shows the email got sent and the mail from is the Supabase address although my SMTP is turn.

What email does it show on the
/invite
log below the mail.send
log? I just tested this and I don't get a mail.send
log in my auth logs.
Gary can you confirm if you get the mail.send
in your auth logs?No send
So that's either a resend specific thing or you have a custom auth hook setup or something of the sort.
I think that is a sign of the hook....
It logs the hook I seem to recall in a quick test.
you mean there?

email.send I believe is the email auth hook being called.
https://supabase.com/docs/guides/auth/auth-hooks/send-email-hook
Which you would have added for something
It could be bypassing the SMTP settings all together and that hook has the code doing the sending in it.
Mmm interesting! So there is a hook that is bypassing the sending through SMTP... strange don't recall setting any hooks.
If you didn't set one then I think It may be your email template failing. Can you simplify your email template for the
invite
email and try again. I'm just looking at the code and it seems when the template fails there is a fallback to the default template, but I don't remember if this affected the from email address too.Dont think that is the issue because I used the template already in Supabase.
I don't think a failing template does it either.
And the only hook I implemented was with RevenueCat but it does not touch the auth flows.
Gary this is where I found that event https://github.com/supabase/auth/blob/4c944431558aaca3c945c472dc5a27077f6dfa75/internal/mailer/mailme.go#L105
Check the auth hook settings.
Somehow it doesn't fire on my project but I'm probably on an old version of the auth service.
I can't verify and it is just a vague memory of that firing and I did test the auth hook at one time.... But it could also be from helping a user with a bad template I guess.
Actually scrap that I'm on the latest version.
https://supabase.com/dashboard/project/_/auth/hooks
Check there.
No hooks!

Maybe I should test SENDGRID haha
K.
What do you recommend for SMTP email solutions?
I use sendinblue aka brevo
Make sure you look thru the details of that log entry or post the whole thing.
I use Brevo. But many use Resend.
I use Brevo. But many use Resend.
Which log entry? The mail.send or the /invite?
Mail.send as that is different than normal process
Did you try restarting the project by any chance?
Mail send logs:
{
"event_message": "{\"event\":\"mail.send\",\"level\":\"info\",\"mail_from\":\"noreply@mail.app.supabase.io\",\"mail_to\":\"XXXXXX@gmail.com\",\"mail_type\":\"invite\",\"msg\":\"mail.send\",\"time\":\"2025-08-05T23:48:35Z\"}",
"id": "63304844-3600-41de-b754-d5c34693d68d",
"metadata": [
{
"host": "db-mfqqfarcfnskvbvyqvze",
"component": null,
"_SYSTEMD_CGROUP": null,
"grant_type": null,
"request_id": null,
"mail_from": "noreply@mail.app.supabase.io",
"message": null,
"_SOURCE_REALTIME_TIMESTAMP": null,
"PRIORITY": null,
"_AUDIT_LOGINUID": null,
"panic": null,
"metering": null,
"UNIT": null,
"event": "mail.send",
"SYSLOG_FACILITY": null,
"msg": "mail.send",
"mail_type": "invite",
"EXECUTABLE": null,
"user_id": null,
"_CMDLINE": null,
"action": null,
"auth_event": [],
"level": "info",
"_PID": null,
"path": null,
"duration": null,
"_COMM": null,
"sso_provider_id": null,
"header": null,
"_MACHINE_ID": null,
"web3_domain": null,
"login_method": null,
"_STREAM_ID": null,
"source_type": null,
"_LINE_BREAK": null,
"web3_address": null,
"_EXE": null,
"_AUDIT_SESSION": null,
"_TRANSPORT": null,
"x_forwarded_proto": null,
"time": null,
"mail_to": "thebreathmanu@gmail.com",
"_GID": null,
"stack": null,
"x_forwarded_host": null,
"saml_entity_id": null,
"status": null,
"_UID": null,
"valid_until": null,
"web3_uri": null,
"method": null,
"CODE_FILE": null,
"remote_addr": null,
"provider": null,
"_SYSTEMD_UNIT": null,
"issuer": null,
"error": null,
"client_id": null,
"MESSAGE_ID": null,
"url": null,
"referer": null,
"_SYSTEMD_INVOCATION_ID": null,
"CODE_FUNC": null,
"_BOOT_ID": null,
"INVOCATION_ID": null,
"__MONOTONIC_TIMESTAMP": null,
"web3_chain": null,
"timestamp": null,
"__REALTIME_TIMESTAMP": null,
"immediate_login_after_signup": null,
"CODE_LINE": null,
"_SYSTEMD_SLICE": null,
"count": null,
"instance_id": null,
"args": [],
"SYSLOG_IDENTIFIER": null,
"metadata": [],
"_CAP_EFFECTIVE": null,
"factor_id": null,
"_SELINUX_CONTEXT": null,
"expires_in": null,
"version": null,
"project": null
}
],
"timestamp": 1754437715000000
}
On it!Nope it did not work! Restarted the project and re-integrated the SMTP and it did not work.

https://discord.com/channels/839993398554656828/1369623446530687066
Mainly for @silentworks as mail.send came up here... No resolution.
And still created these strange authhook log

I tested this on a newer project without custom SMTP and
mail.send
is in the logs. Maybe it only shows when your custom SMTP isn't enabled.https://discord.com/channels/839993398554656828/1331271275326214218
Another and their resolution was their account for their email provider was suspended.
I integrated SMTP using RESEND's UI so maybe I should do it manually.
So email.send is Supabase's email SMTP send endpoint maybe...

Did you complete all your DKIM, TXT and so on setup on your domain for resend?
Maybe there is a silent fallback if something on your sending server fails outside of credentials being wrong.
Are there cases where the custom provider fails with some message that then Supabase tries their own thing...
LOL
Great minds think alike.
Will definitely want a fix so it calls that an error, if so, or at least logs it as 'something went bad so I'm helping you out no more than 3 times an hour'.
I did and everything is checked!


At this point, I would try another provider and see if that gets over this. Not sure how much more digging I'll do tonight and I know silentworks is past his bedtime.
At this point I would suggest you open a support request with Resend and hear what they say. In the time being if you have another domain you can setup custom SMTP on, I'd suggest trying Brevo and if that works then it's definitely a Resend issue.
Will do that!
Way past my bedtime for sure. It's 1:16am here.
Thanks for both of your help. @silentworks and @garyaustin you guys rock!
Will do!
Please follow up because if this is a SMTP "silent" failure we need to push for some more indication.
Let us know the outcome if you get some good results or hear back from Resend.
Stop!
LMAO
haha I promise! I will contact RESEND right now.
I have another theory that the settings aren't getting propagated to the config that Supabase Auth uses. @manu_angel I'm going to suggest you open an issue with Supabase support too. https://supabase.com/dashboard/support/new
I tried but I cant because I have a free account :/
Already sent them 2 support tickets and no response.
Free gets very delayed support but most things get looked at.

Ok will wait!
@garyaustin and @silentworks update on this! I reached out to Resend. Attached is their response.

I've switched my SMTP config to use Brevo!! And bad news is that it is still not working.
In this case something might be wrong with your instance and you will need Supabase support to get it resolved.
This is my config in Brevo -> Supabase (see attached images)
I have a few questions:
- What password should and input into Supabase? Should it be the one in the SMTP (screenshot above) config or if the one in the transactional emails (here https://app-smtp.brevo.com/real-time)
I've tried with both and none work though so I guess it does not matter.




Crazy! I am literally about to pay the 20USD premium to get support.
You can use either of the two keys from that brevo SMTP config page and they should work. Not the one from the transactional emails page.
Ok thanks!
Frustrating! Any other ideas I could test apart from waiting fro Supabase to reply back?
Below are my logs for an invite:
{
"event_message": "{\"event\":\"mail.send\",\"level\":\"info\",\"mail_from\":\"noreply@mail.app.supabase.io\",\"mail_to\":\"XXXXX@gmail.com\",\"mail_type\":\"invite\",\"msg\":\"mail.send\",\"time\":\"2025-08-08T17:32:58Z\"}",
"id": "f46ada93-61b8-4d33-84ed-3bf608d69d3e",
"metadata": [
{
"host": "db-mfqqfarcfnskvbvyqvze",
"component": null,
"_SYSTEMD_CGROUP": null,
"grant_type": null,
"request_id": null,
"mail_from": "noreply@mail.app.supabase.io",
"message": null,
"_SOURCE_REALTIME_TIMESTAMP": null,
"PRIORITY": null,
"_AUDIT_LOGINUID": null,
"panic": null,
"metering": null,
"UNIT": null,
"event": "mail.send",
"SYSLOG_FACILITY": null,
"msg": "mail.send",
"mail_type": "invite",
"EXECUTABLE": null,
"user_id": null,
"_CMDLINE": null,
"action": null,
"auth_event": [],
"level": "info",
"_PID": null,
"path": null,
"duration": null,
"_COMM": null,
"sso_provider_id": null,
"header": null,
"_MACHINE_ID": null,
"web3_domain": null,
"login_method": null,
"_STREAM_ID": null,
"source_type": null,
"_LINE_BREAK": null,
"web3_address": null,
"_EXE": null,
"_AUDIT_SESSION": null,
"_TRANSPORT": null,
"x_forwarded_proto": null,
"time": null,
"mail_to": "thebreathmanu@gmail.com",
"_GID": null,
"stack": null,
"x_forwarded_host": null,
"saml_entity_id": null,
"status": null,
"_UID": null,
"valid_until": null,
"web3_uri": null,
"method": null,
"CODE_FILE": null,
"remote_addr": null,
"provider": null,
"_SYSTEMD_UNIT": null,
"issuer": null,
"error": null,
"client_id": null,
"MESSAGE_ID": null,
"url": null,
"referer": null,
"_SYSTEMD_INVOCATION_ID": null,
"CODE_FUNC": null,
"_BOOT_ID": null,
"INVOCATION_ID": null,
"__MONOTONIC_TIMESTAMP": null,
"web3_chain": null,
"timestamp": null,
"__REALTIME_TIMESTAMP": null,
"immediate_login_after_signup": null,
"CODE_LINE": null,
"_SYSTEMD_SLICE": null,
"count": null,
"instance_id": null,
"args": [],
"SYSLOG_IDENTIFIER": null,
"metadata": [],
"_CAP_EFFECTIVE": null,
"factor_id": null,
"_SELINUX_CONTEXT": null,
"expires_in": null,
"version": null,
"project": null
}
],
"timestamp": 1754674378000000
}
Do you have anything else already setup in this project? or is it a new project?
That is for mail.send log
I've been working on this project for like 2 months now.
I could try spinning up a new project and testing if it works or not.
Oh ok, your only option is to wait on Supabase support.
Yes if you can then I'd suggest you do this
But migrating everything to the new project will be a pain in the ass haha