Supabase Custom SMTP and Email Configuration Guide

Editorial Note: We may earn a commission when you visit links on our website.
Supabase Custom SMTP and Email Configuration Guide

Supabase is an open-source backend platform for building web and mobile apps. It gives you a PostgreSQL database, authentication, storage, and auto-generated APIs in one place. Many developers pick it as an alternative to Google’s Firebase.

The catch is that Supabase’s built-in email service is meant for testing, not production. It’s slow, capped, and only reaches your own team. To send real email to real users, you’ll want to connect your own SMTP provider.

This guide shows you how to set up custom SMTP in Supabase, step by step. We’ll use SendLayer as the SMTP provider.

Why Supabase’s Built-In Email Service Isn’t Enough

Every Supabase project ships with a built-in email sender. It’s handy for a quick demo. It’s not built for production, and Supabase says so in its own docs.

Here’s what holds it back:

  • Only 2 emails per hour. That’s the default limit across your whole project. Sign-ups, password resets, and invites all share it. A handful of users can exhaust it fast.
  • It only emails your team. The built-in service delivers to pre-authorized addresses only. Real customers won’t receive anything.
  • No delivery guarantee. There’s no SLA on uptime or inbox placement. Your emails might arrive late, or not at all.
  • Auth emails only. It sends transactional auth messages, not marketing or product email.

Custom SMTP fixes all of this. You bring your own provider, lift the recipient limit, and take control of deliverability.

Which Emails Does Supabase Send?

Supabase Auth sends a message for each key account action. Knowing them helps you test your setup and edit the right templates. The main ones are:

  • Confirm sign up: verifies a new user’s email address.
  • Reset password: lets a user set a new password.
  • Change email address: confirms a user’s new address.
  • Invite user: invites someone to create an account.
  • Reauthentication: verifies identity before a sensitive action.

All of these are transactional. They need to arrive fast, which is exactly what custom SMTP delivers.

Built-In vs. Custom SMTP

Built-in serviceCustom SMTP (SendLayer)
Hourly limit2 emails/hour30/hour default, adjustable
RecipientsYour team onlyAnyone
DeliverabilityNo SLAMonitored IPs, domain authentication
Sender addressFixedYour own domain
Best forLocal testingProduction apps

What You Need Before You Start

You’ll need two things:

  • A Supabase project. Create one free at supabase.com if you don’t have one yet.
  • An SMTP provider. Any provider with SMTP credentials works. We recommend a service built for transactional email, like SendLayer.
Supabase homepage

Supabase works with any SMTP host. Here’s how a few popular options compare:

ProviderSMTP hostPortNotes
SendLayersmtp.sendlayer.net587200 free emails, built-in domain authentication
Resendsmtp.resend.com465Developer-focused
SendGridsmtp.sendgrid.net587Large free-tier history
Mailgunsmtp.mailgun.org587Pay-as-you-go
Amazon SESemail-smtp.us-east-1.amazonaws.com587Low cost at scale

Note: For a detailed comparison, see our review of the best email API providers.

We’ll use SendLayer for the rest of this guide. It’s designed for developers, with an SMTP relay for quick setup and an API for more control. You also get detailed analytics and built-in domain reputation protection.

  • 200 Free Emails
  • Easy Setup
  • 5 Star Support

How to Get Your SendLayer SMTP Credentials

Before you touch Supabase, grab your SMTP details from SendLayer.

Log in to your SendLayer dashboard. Go to Settings » SMTP Credentials. You’ll see everything you need on this page.

SendLayer SMTP Credentials

Copy these four values:

  • Host: smtp.sendlayer.net
  • Port: 587
  • Username: shown in your dashboard
  • Password: shown in your dashboard

Keep this tab open. You’ll paste these into Supabase in a minute.

Authenticate Your Domain First

Deliverability starts with domain authentication. Without it, mailbox providers may reject your email or flag it as spam.

SendLayer walks you through this when you add a domain. It generates your SPF, DKIM, and DMARC records for you. You add them to your DNS, then SendLayer verifies them.

Each record plays a role:

  • SPF tells mailbox providers which servers may send for your domain.
  • DKIM signs your emails so they can’t be tampered with in transit.
  • DMARC ties SPF and DKIM together and sets a policy for failures.

Make sure your domain shows as verified before you send. The sender address you use in Supabase must match your authenticated domain.

How to Configure Custom SMTP in Supabase

Supabase updated its dashboard, so the SMTP settings moved. Here’s the current path.

Step 1: Open Authentication

From your project dashboard, click Authentication in the left sidebar.

Open Authentication in the Supabase left sidebar

Step 2: Open the Emails settings

In the Authentication menu, find the NOTIFICATIONS section. Then click Emails to access the SMTP settings.

Click Emails under the Notifications section in Supabase

Step 3: Go to SMTP Settings

The Emails page has two tabs: Templates and SMTP Settings. On the Templates tab, you’ll see a prompt to set up custom SMTP. Click Set up SMTP to open the settings.

Click Set up SMTP on the Supabase Emails page

Step 4: Enter your sender details.

Toggle Enable Custom SMTP on. Then enter your sender email and sender name. These show as the “from” details on every email you send.

Supabase sender email and name fields

Your sender email must match the domain you authenticated with SendLayer.

Step 5: Enter your SMTP credentials

Now fill in the SMTP Provider Settings with the values you copied from SendLayer:

  • Host: smtp.sendlayer.net
  • Port number: 587
  • Username: paste from your SendLayer dashboard
  • Password: paste from your SendLayer dashboard
Supabase SMTP host, port, username, and password fields

You can also set a minimum interval between emails. Adjust it if your provider enforces a send rate.

Step 6: Save and confirm

Once you’re done adding your SMTP credentials, click Save. You’ll see a message confirming the settings were saved.

Supabase SMTP settings saved confirmation

That’s it. Supabase now sends every auth email through SendLayer.

How to Adjust Email Rate Limits

Enabling custom SMTP doesn’t remove rate limits. It raises the default to 30 emails per hour. You can change that number to fit your app.

Go to Authentication » Rate Limits. Here you can set the hourly limit for sending emails. You can also adjust limits for SMS, token refreshes, verifications, and sign-ins.

Supabase Rate Limits page showing the email send limit

Set the email limit to match what your SendLayer plan supports. That keeps Supabase and your provider in sync.

How to Customize Your Email Templates

Once custom SMTP is on, you can edit the emails Supabase sends. Go to Authentication » Emails and open the Templates tab.

Supabase Authentication email templates list

You’ll find a template for each auth email:

  • Confirm sign up
  • Invite user
  • Change email address
  • Reset password
  • Reauthentication

Click any template to edit its subject and body. You can view your changes as raw HTML or as a full preview.

Preview a Supabase email template

Keep the confirmation link variable in place when you edit. Removing it breaks the email.

How to Test Your Supabase Email Configuration

Always test before you rely on your setup. There are two easy ways.

Send a Test Invite

Go to Authentication » Users and click Add user.

Supabase Add user button

Choose Send invitation, enter an email address, and click Invite user.

Invite a new user in Supabase

Supabase sends the invite through SendLayer. Check the inbox to confirm it arrived.

Trigger an Email in Code

You can also fire a real auth email from your app. This magic-link example uses the Supabase JavaScript client:

const { error } = await supabase.auth.signInWithOtp({
  email: '[email protected]',
})

Run it, then check your inbox. A password reset works the same way:

const { error } = await supabase.auth.resetPasswordForEmail('[email protected]')

If the email lands, your SMTP setup works.

Troubleshooting Common Supabase SMTP Issues

Most SMTP problems come down to a few causes. Here’s how to fix them.

Emails aren’t arriving at all. Double-check your host, port, username, and password. One wrong character stops delivery. Confirm custom SMTP is toggled on and saved.

Emails land in spam. This usually means your domain isn’t authenticated. Verify your SPF, DKIM, and DMARC records in SendLayer. Send from your authenticated domain, not a free Gmail or Outlook address.

“Connection refused” or TLS errors. Use port 587 for SendLayer. If your host blocks it, try an alternate port your provider supports.

You hit the rate limit. Raise the email limit at Authentication » Rate Limits. Make sure it doesn’t exceed your SendLayer plan.

Magic links or confirmation links stop working. Some providers rewrite links for click tracking. That breaks Supabase’s single-use links. Turn off link tracking for these emails.

The built-in service still won’t email customers. That’s expected. The built-in sender only reaches your team. Switch to custom SMTP to email real users.

FAQs — Send Email in Supabase

These are answers to some of the top questions developers ask about setting up custom SMTP for email notifications in Supabase.

What is the default email rate limit in Supabase?

The built-in service sends 2 emails per hour, per project. That limit is shared across sign-ups, invites, magic links, and password resets.

Why aren’t my Supabase auth emails being delivered?

The built-in service only delivers to pre-authorized team addresses, and it has no SLA. To reach real users reliably, set up a custom SMTP with a provider like SendLayer.

Should I use port 587 or 465 for Supabase custom SMTP?

Both work. Port 587 uses STARTTLS, and port 465 uses implicit TLS. SendLayer uses port 587. For more information, see our guide explaining the available SMTP ports and when to use them.

Does enabling custom SMTP remove all rate limits?

No. Supabase applies a default limit of 30 emails per hour after you enable custom SMTP. You can adjust it at Authentication » Rate Limits.

Can I use Gmail SMTP with Supabase?

You can, but we don’t recommend it for production. Personal Gmail has strict daily limits and weak deliverability for app email. A transactional provider like SendLayer scales better.

And that’s it! Now you know how to set up Supabase custom SMTP.

Next, want to set up transactional email for another auth platform? Check out our guide to setting up and sending emails in Auth0.

  • 200 Free Emails
  • Easy Setup
  • 5 Star Support

Ready to send your emails in the fastest and most reliable way? Get started today with the most user-friendly and powerful SMTP email delivery service. SendLayer Business includes 5,000 emails a month with premium support.

author avatar
Rachel Adnyana
Rachel has been writing about WordPress for a decade and building websites for much longer. Alongside web development, she's fascinated with the art and science of SEO and digital marketing.