Integrating Postmark with Supabase via SMTP
Supabase's default email service limits you to just 3 emails per hour! Fine for testing, but not great when you need reliable authentication emails in production. With Postmark, you get fast, dependable delivery for password resets, signup confirmations, and all your authentication emails.
This guide will walk you through connecting Postmark to Supabase using SMTP credentials.
Before you start
You'll need a verified domain or sender signature in Postmark before you can send authentication emails through Supabase. If you haven't set this up yet, check out our guide on adding sender signatures.
Step 1: Get your Postmark SMTP credentials
First, you'll grab your SMTP credentials from Postmark:
- Log into your Postmark account and select the Server you want to use
- Click on the Default Transactional Stream (or whichever message stream you'd like to use for authentication emails)
- Navigate to the Settings tab
- Scroll down to the SMTP section
- Click Generate an SMTP token
You'll see two values appear:
- Access Key (this is your SMTP username)
- Secret Key (this is your SMTP password)
Important: The Secret Key only displays once. Copy it somewhere safe—if you lose it, you'll need to generate a new token.
Step 2: Configure SMTP settings in Supabase
Now let's connect Postmark to your Supabase project:
- Open your Supabase project dashboard
- Navigate to Authentication in the sidebar
- Select SMTP Settings
- Toggle on Enable Custom SMTP
Enter your Postmark credentials:
- Sender email: Your verified Postmark sender address (like hello@yourdomain.com)
- Sender name: The name you want to appear in the "From" field (like Your App Name)
- Host: smtp.postmarkapp.com
- Port number: 587
- Username: Your Access Key from Step 1
- Password: Your Secret Key from Step 1
- Minimum interval between emails being sent: Leave as default or adjust based on your needs
Click Save when you're done.
Step 3: Test your integration
Time to make sure everything's working:
- In your Supabase dashboard, go to Authentication > Users
- Click Add user > Create new user
- Enter a test email address and password
- Click Create user
Supabase will send a signup confirmation email through Postmark. You should receive it within seconds—that's Postmark's delivery speed in action.
You can also verify the email was sent by checking your Postmark Activity feed, where you'll see details like delivery time, open tracking, and more.
Monitoring your authentication emails
Once you're up and running, all your Supabase authentication emails (password resets, email confirmations, magic links) will flow through Postmark automatically.
Here's what you can track in your Postmark dashboard:
- Delivery metrics: See exactly when emails were delivered, opened, and clicked
- Bounce handling: Get notified immediately if an email bounces so you can take action
- Spam reports: Monitor any spam complaints to maintain your sender reputation
- Activity search: Filter and search your email activity by recipient, subject, or date
To dive deeper into your email performance, check out the Message Streams section in your Postmark account.
Troubleshooting
Emails aren't sending?
- Double-check that your sender email address matches a verified sender signature or domain in Postmark
- Make sure you copied both the Access Key and Secret Key correctly (the Secret Key is case-sensitive)
- Verify that port 587 is open on your network
Still having issues?
Reach out to our support team, we're here to help! You can contact us directly through the Postmark app or email us at support@postmarkapp.com.
Why separate authentication from marketing emails?
Quick tip: Supabase authentication emails are transactional by nature—they're triggered by user actions and contain time-sensitive information. If you also send marketing or bulk emails, it's a good idea to use separate message streams (or even separate services) to protect your authentication email deliverability.
Postmark makes this easy with Message Streams, which let you separate transactional from broadcast email so each type maintains its own sending reputation.
Related resources: