Updated 2026-10-08

How to Set Up Custom SMTP for Supabase Auth

In the Supabase dashboard, open Authentication, go to the Emails section and the SMTP Settings tab, turn on Enable Custom SMTP, then enter Sender email on your domain, Host smtp.bulko.io, Port number 587 and your Bulko SMTP username and password. Supabase then sends sign-up confirmations, magic links, invites and password resets through that server instead of its limited built-in sender.

Hostsmtp.bulko.io
Port587 · 465 · 2525
EncryptionSTARTTLS · SSL
Loginfrom dashboard

Supabase SMTP settings

FieldValue
Enable Custom SMTPOn
Sender emailAn address on your domain, for example [email protected]
Sender nameYour app or company name
Hostsmtp.bulko.io
Port number587 (465 and 2525 also work)
Minimum interval between emailsKeep the default or a low value such as 60 seconds
UsernameYour Bulko username, for example smtp_xxxxxxxxxxxxxxxx
PasswordYour Bulko SMTP password from Dashboard > SMTP Access

Step-by-step setup

  1. Buy an SMTP package on the Bulko SMTP Relay page. The username and password appear in Dashboard > SMTP Access and are emailed after payment.
  2. Verify the domain you will send from in Sending Domains and publish the DKIM TXT record (selector bk1) and the bnc.yourdomain.com CNAME. Supabase recommends SPF, DKIM and DMARC for auth email, and verification lets all three align.
  3. Open your project in the Supabase dashboard and go to Authentication. In the Emails section (under Notifications in the sidebar), open the SMTP Settings tab. Older dashboards showed this block under Project Settings.
  4. Turn on Enable Custom SMTP. Fill in Sender email with an address on your verified domain and Sender name with your product name.
  5. Under the SMTP provider settings, enter Host smtp.bulko.io, Port number 587, Username and Password. Supabase negotiates encryption on its own, so there is no separate TLS switch. Use 465 or 2525 only if 587 does not work for you.
  6. Check Minimum interval between emails. It is the minimum time Supabase waits between email requests, which limits spam; keep it low (for example 60 seconds) so users can quickly request a new link.
  7. Click Save. Then open Authentication > Rate Limits: after you enable custom SMTP, Supabase starts with a low limit of 30 emails per hour. Raise the email sent value to match your expected sign-up volume, staying within Bulko's 2,000 emails per day per SMTP account.

To change the wording of the messages, edit the templates in Authentication > Emails > Templates. The templates are independent of the SMTP server, so your existing confirmation and magic link templates keep working. If you manage projects as code, the Supabase Management API exposes the same settings (snippet below).

Supabase Management API: configure custom SMTP

# Set custom SMTP for a Supabase project via the Management API
# Get a personal access token at https://supabase.com/dashboard/account/tokens
export SUPABASE_ACCESS_TOKEN="your-access-token"
export PROJECT_REF="your-project-ref"

curl -X PATCH "https://api.supabase.com/v1/projects/$PROJECT_REF/config/auth" \
  -H "Authorization: Bearer $SUPABASE_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "external_email_enabled": true,
    "smtp_admin_email": "[email protected]",
    "smtp_sender_name": "Your App",
    "smtp_host": "smtp.bulko.io",
    "smtp_port": "587",
    "smtp_user": "smtp_xxxxxxxxxxxxxxxx",
    "smtp_pass": "your-bulko-smtp-password"
  }'

Send a test email

The quickest test is Authentication > Users > Add user > Send invitation to an inbox you can read, or a sign-up or password reset from your app. The invite or confirmation email should arrive from your Sender email within a minute. If nothing arrives, open the Auth logs in the dashboard (Logs section, Auth) and look for the SMTP error, for example 535 for a login problem or 554 5.7.1 for a filtered message. Open the received email, view the original headers and confirm SPF and DKIM pass.

Troubleshooting

ProblemFix
Error sending confirmation email or invite emailSupabase could not deliver through the SMTP server. Check the Auth logs for the exact SMTP reply and verify Host smtp.bulko.io, the port and the credentials.
535 Authentication failed in the Auth logsThe Username or Password is wrong. Paste them again from Dashboard > SMTP Access; the username looks like smtp_xxxxxxxxxxxxxxxx, not your Sender email. More causes: bulko.io/en/smtp-errors/535/.
Connection or TLS handshake errorsUse port 587 first. If a different port is required, 465 is implicit TLS and 2525 is STARTTLS. Port 25 is not offered for submission.
email rate limit exceededThis is Supabase's own rate limit, not the SMTP server. Raise the email limit in Authentication > Rate Limits, which starts at 30 per hour after custom SMTP is enabled.
554 5.7.1 message rejectedBulko's content filter flagged the message. Make sure your templates do not contain misleading links or brand impersonation, and that links point to your own domain.
Confirmation emails land in spamSend from a verified domain, keep auth and marketing mail on different From addresses as Supabase suggests, and use a custom domain for auth links where possible. Check SPF with the Bulko SPF checker.

FAQ

Why do I need custom SMTP in Supabase?

The built-in email sender is meant for testing, is heavily rate-limited and only sends to addresses of your project team. A production app needs its own SMTP server for sign-ups, magic links and password resets.

Which port should Supabase use?

Port 587 is the standard choice. Bulko also accepts 465 with implicit TLS and 2525 with STARTTLS.

What does Minimum interval between emails mean?

It is the minimum time that must pass between email requests, which protects against spam and abuse. The hourly volume limit is a separate setting in Authentication > Rate Limits.

Can I send marketing email from Supabase through the same SMTP?

Supabase Auth only sends auth emails. You can use the same Bulko account from your backend for other mail, but Supabase advises separate From addresses or domains for auth and marketing.

How much does it cost?

Bulko SMTP is pay-as-you-go: $5 for 5,000 emails, $15 for 20,000, $30 for 50,000 or $60 for 150,000, one-time payment with no expiry. The default limit is 2,000 emails per day per SMTP account.

Get SMTP credentials for Supabase

One-time payment by card or crypto, no subscription. Unused emails never expire. 2,000 emails per day per SMTP account.

SMTP Relay 5K: $5 · 5000SMTP Relay 20K: $15 · 20000SMTP Relay 50K: $30 · 50000SMTP Relay 150K: $60 · 150000
See SMTP relay plans

What you can send: Acceptable Use Policy.