Supabase custom SMTP
Set up custom SMTP in Supabase to send Auth emails — confirmations, magic links, password resets — through eusend, and fix the errors that come up on the way.
Supabase's built-in email service is meant only for testing: it sends 2 messages an hour, and only to addresses on your project's team. In production you must bring your own SMTP provider for auth emails (confirmations, magic links, password resets, invites). Pointing Supabase at eusend gives you DKIM-signed delivery on your own domain, with every auth email visible in your eusend dashboard.
Connect in one click
If you would rather not copy anything by hand, connect Supabase from Settings → Integrations in the eusend dashboard. You authorize eusend against your Supabase organization, pick the project and a verified sending domain, and we write the SMTP settings into that project's auth config for you — along with a raised auth-email rate limit.
The key we create for the connection can only send from the domain you chose, and disconnecting revokes exactly that key and clears the SMTP block again.
The manual setup below stays supported, and is the right choice if you would rather not grant write access to your project's auth configuration.
Connection values
| Parameter | Type | Description |
|---|---|---|
Hostrequired | smtp.eusend.dev | The submission server. |
Portrequired | 465 | Implicit TLS. STARTTLS (587) is not supported. |
Usernamerequired | eusend | The literal string "eusend". |
Passwordrequired | eu_live_… | Any eusend API key. |
Sender emailrequired | no-reply@yourdomain.com | Must be a verified domain. |
Setup
Open SMTP settings
In the Supabase dashboard go to Authentication → Emails → SMTP Settings and toggle on Enable Custom SMTP.
Enter the connection
Host: smtp.eusend.dev
Port: 465
Username: eusend
Password: <an eusend API key, eu_live_…>
Sender email: no-reply@yourdomain.com (must be a verified domain)
Sender name: Your AppSave.
Send a test email
Use Supabase's Send test email button — it exercises the whole path end to end. A delivered test confirms your key and sender domain are correct.
The sender email must be an address on a domain you have verified in eusend.
An unverified sender domain and a wrong username or key both come back as a 535 — the response
text says which.
Adjust the rate limit
Supabase caps auth email throughput separately from your SMTP provider, and starts a project with custom SMTP at 30 emails an hour. Under Authentication → Rate Limits, raise "Rate limit for sending emails" to match your expected sign-up volume — otherwise Supabase, not eusend, becomes the bottleneck. eusend's own sending limits still apply on top.
Customizing the email templates
Auth emails are generated and sent by Supabase itself; eusend is only the transport. Customize the templates under Authentication → Emails → Templates in Supabase. Everything eusend adds — DKIM, tracking, suppression — is applied to whatever Supabase hands off.
Troubleshooting
| Symptom | Cause and fix |
|---|---|
Error sending confirmation email, Error sending magic link email or Error sending recovery email | Supabase could not hand the message to SMTP. Open Logs → Auth in Supabase for the SMTP response: a 535 is credentials or an unverified sender domain (see below), a timeout is a wrong host or port. |
535 in the Auth log | Read the response text. Invalid credentials means the username is not the literal eusend or the API key is wrong. A message naming a domain means the From address is on a domain you have not verified. In Supabase the key goes in Password and the address in Sender email. |
Email address not authorized | Supabase is still using its built-in service, which only sends to your team's addresses. Enable Custom SMTP is off or the settings were not saved. |
email rate limit exceeded | Supabase's own limit, not eusend's — 30 an hour until you raise it under Authentication → Rate Limits. |
| Test email never arrives | Port is 587 or 25. eusend only accepts implicit TLS on 465. With an eu_test_ key the send is accepted and shown in your eusend dashboard but never delivered. |
535 Too many failed attempts or 421 Connection rejected | Repeated failed logins block your IP address for up to an hour. Fix the credentials, then wait before retrying. |
See the SMTP overview for the full status-code table.
WordPress SMTP
Send reliable WordPress email — password resets, WooCommerce receipts, form notifications — through eusend's SMTP relay using WP Mail SMTP or FluentSMTP.
Django SMTP
Configure Django's email backend to send through eusend over SMTP — password resets, notifications, and any send_mail call, DKIM-signed and tracked.