# 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](/docs/guides/email/sending-email) and [direct SMTP](/docs/guides/email/smtp): your verified domain, DKIM signing, IP pools, suppressions, tracking, events, and the [Email log](/docs/guides/email/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](/docs/guides/email/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**](https://bird.com/dashboard/w/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:

| Setting  | Value                                                  |
| -------- | ------------------------------------------------------ |
| Host     | `eu1.smtp.bird.com` (EU) or `us1.smtp.bird.com` (US)   |
| Port     | `465` for implicit TLS, or `587` / `2525` for STARTTLS |
| Username | `bird`                                                 |
| Password | your Bird API key (`bk_…`)                             |
| Sender   | an 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](/docs/guides/email/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:

```bash
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](/docs/guides/email/email-log) to see its delivery status, or inspect [events](/docs/guides/email/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

- [Send email over SMTP](/docs/guides/email/smtp): ports, TLS, per-key send defaults, and idempotency.
- [Sending domains](/docs/guides/email/sending-domains): verify the domain you'll send from.
- [Deliverability](/docs/guides/email/deliverability): DKIM, SPF, and DMARC for auth mail that lands in the inbox.
- [Email log](/docs/guides/email/email-log): find a message by the ID SMTP returned.