Send email from Supabase with Loops
Loops connects to Supabase two ways: it sends your Supabase Auth emails (confirm signup, magic link, password reset) over Loops SMTP, and it triggers product and lifecycle email from your Supabase app through the Loops events API. Auth mail and marketing mail run off the same contact record, and the email design lives in Loops instead of your codebase.
Integrations
Send Supabase Auth emails over Loops SMTP
Point Supabase’s built-in auth emails at Loops SMTP so you design them in the Loops editor and see every send in your Loops account. The Supabase SMTP guide has the full walkthrough. The short version:
In Loops, go to Settings, then Supabase, and click Connect Supabase in the SMTP section. Authorize your Supabase organization, pick your project and an API key (the key is used as the SMTP password), then click Set up SMTP. Loops writes the credentials into your Supabase project for you.
Create the transactional emails in Loops. You need at least Confirm signup and Magic Link. Add data variables like confirmationUrl mapped to Supabase’s {{ .ConfirmationURL }}, then publish each one. A draft won’t send.
In Supabase, under Authentication, then Emails, paste each Loops email’s API-style payload into the template body and drop in the matching Supabase variables.
If you’d rather set it by hand, the SMTP credentials are host smtp.loops.so, port 587, username loops, and a Loops API key as the password.
Trigger lifecycle email from product events
For everything past authentication (trial started, plan upgraded, invite accepted) send a Loops event from a Supabase edge function or your server, and let a Loops workflow decide what goes out. Install the loops package and call sendEvent:
That posts to https://app.loops.so/api/v1/events/send. Keep the API key server-side. The eventName matches a workflow trigger in Loops, and eventProperties flow into the email as personalization. To sync users without writing code, the Supabase integration uses database webhooks on the auth.users table, so INSERT, UPDATE, and DELETE events create, update, and remove Loops contacts automatically.
What you get
Loops matches contacts by their Supabase user ID, so auth events and product events land on the same person instead of two disconnected lists. The subject, body, and design live in published Loops templates, so copy and layout changes ship from the editor instead of a code push. Every auth and lifecycle email goes out from your verified sending domain, and Loops records what was sent, when, and to whom.
Set it up
The fastest path is to let a coding agent wire it up. Run the Loops installer, then point Claude Code, Codex, or Cursor at your Supabase project:
The agent installs the CLI and the Loops skills. See Loops for agents and the agent quickstart for what it can do.
To do it manually, follow the Supabase SMTP guide for auth emails, the Supabase integration guide for user sync, and the send event reference for product events. For inbox placement, read transactional email best practices.
FAQ
Does this replace Supabase's built-in email?
Which Supabase features does it touch?
Is there a free tier?