Documentation
Sign inGet started

Send Supabase Auth emails with Bird

Supabase Auth sends its transactional emails (signup confirmations, magic links, password resets, email-change and invite messages) through an SMTP server you configure. By default a project uses Supabase's built-in sender, which is rate-limited and meant only for early development. Pointing Supabase at your own SMTP is the recommended path for production, and Bird is a drop-in target: you change the SMTP connection settings and nothing else.
Mail sent this way goes through the same Bird pipeline as the email API and direct SMTP: your verified domain, DKIM signing, IP pools, suppressions, tracking, events, and the Email log. This works the same on Supabase's hosted platform and on a self-hosted stack, because the custom-SMTP fields are the integration point in both.

What you need first

  • A verified Bird sending domain. The address Supabase sends from must belong to a domain you have verified in this workspace. See Sending domains.
  • A Bird API key with the emails scope. SMTP authenticates with a normal Bird API key, so there is no separate SMTP password to manage. Create one on the API keys page. The key's region prefix (bk_eu1_…, bk_us1_…) selects which SMTP host you use.
  • A Supabase project with access to its Auth settings, either the hosted dashboard or a self-hosted environment.

Connection settings

Use the Bird SMTP host for your key's region, authenticate with the literal username bird, and put your API key in the password field:
SettingValue
Hosteu1.smtp.bird.com (EU) or us1.smtp.bird.com (US)
Port465 for implicit TLS, or 587 / 2525 for STARTTLS
Usernamebird
Passwordyour Bird API key (bk_…)
Senderan address on your verified Bird sending domain
The username is a fixed literal; the API key in the password field is what authenticates. For the full protocol details, ports, and per-key send defaults, see Send email over SMTP.

Configure it on Supabase's hosted platform

In the Supabase dashboard, open Project Settings → Authentication → SMTP Settings, enable Custom SMTP, and enter:
  • Sender email: an address on your verified Bird domain, for example auth@yourdomain.com.
  • Sender name: the display name recipients see.
  • Host: eu1.smtp.bird.com or us1.smtp.bird.com, matching your key's region.
  • Port: 465.
  • Username: bird.
  • Password: your Bird API key.
Save. Supabase stores these as free-form values and starts routing Auth emails through Bird immediately, so nothing has to change on Supabase's side for Bird to work.

Configure it on a self-hosted Supabase

Set the Auth (GoTrue) SMTP environment variables:
Przykład kodu
GOTRUE_SMTP_HOST="eu1.smtp.bird.com"     # or us1.smtp.bird.com
GOTRUE_SMTP_PORT="465"
GOTRUE_SMTP_USER="bird"
GOTRUE_SMTP_PASS="bk_eu1_your_api_key"
GOTRUE_SMTP_ADMIN_EMAIL="auth@yourdomain.com"   # on your verified Bird domain
GOTRUE_SMTP_SENDER_NAME="Your App"
Restart Auth so the new configuration is picked up. Every Auth email (confirmation, magic link, recovery, invite, email change) now sends through Bird.

Verify it works

Trigger an Auth email, for example by sending yourself a magic link or a password reset, and confirm it arrives. Then find the message by the em_… ID in the Email log to see its delivery status, or inspect events. A send that fails fast, such as an unverified From domain or a malformed address, surfaces as an SMTP error to Supabase at submission time.

Next steps