Supabase Auth emails without SMTP: use the Send Email Hook with Notify

Route Supabase Auth password reset, magic link, and confirm-signup mail through Notify — no Custom SMTP, no SMTP relay from Notify.

Supabase Auth can send password reset, magic link, signup confirm, invite, and email-change messages. The default path uses Supabase’s own mail infrastructure. If you want your brand, your domain, and one transactional API across the rest of your app, wire Auth through Notify.

Notify is HTTPS-only (POST /api/email/send). It does not offer SMTP relay, so Supabase Custom SMTP (host, port, username, password) cannot target Notify directly.

The supported pattern is Supabase’s Send Email Hook: Auth POSTs a signed payload to your Edge Function; the function verifies the signature and calls Notify.

When to use this doc vs the recipe

You need…Start here
Why Hook vs SMTP, what gets covered, prerequisitesThis page
Deployable Edge Function, secrets, dashboard hook steps, smoke testRecipe: Supabase Auth → Notify
Non-Auth email from Supabase Edge (cron, triggers you invoke)Send email from Supabase Edge

The recipe is the implementation source of truth — this page is the decision guide and checklist so you do not duplicate setup in two places.

What the hook sends

With the hook enabled, Supabase Auth delegates delivery for actions such as:

  • recovery — password reset
  • magiclink — passwordless sign-in
  • signup — confirm email
  • invite, email_change, reauthentication — account lifecycle mail

Your Edge Function maps email_action_type to a subject and builds HTML (link with token_hash for verify URL, optional OTP display). Notify delivers from a from address on a verified Notify domain.

Checklist

  1. Notify: API key, verified domain, account out of sandbox-only for production from
  2. Supabase: Edge Functions enabled; secrets NOTIFY_API_KEY, SEND_EMAIL_HOOK_SECRET, optional NOTIFY_FROM
  3. Function: verify webhook with Standard Webhooks; fetch Notify with html body
  4. Dashboard: Authentication → Hooks → Send Email → HTTPS URL of your function
  5. Test: trigger reset or signup; confirm in Notify logs

Full code and deploy flags (--no-verify-jwt): Recipe: Supabase Auth → Notify.

Why not Custom SMTP?

PathWorks with Notify?
Supabase Custom SMTPNo — Notify has no SMTP endpoint
Send Email Hook → Edge Function → Notify HTTPYes

After Auth mail works