Emails

Send transactional email and configure DNS so your messages land in inboxes (not spam).

Last updated December 18, 2025

At a glance

What you get
  • Transactional sends
  • Deliverability checklist
  • Optional inbound webhooks
You'll configure
  • Provider API key
  • Sending domain
  • DKIM/DMARC/SPF DNS records

Quickstart

1
Add email provider API key

Add your provider API key to .env.local (RESEND_API_KEY, MAILGUN_API_KEY, etc.).

2
Verify sending domain

Set up a subdomain (e.g., mg.yourdomain.com) and verify it in your provider dashboard.

3
Configure DNS records

Add DKIM, DMARC, and SPF records to your subdomain to avoid spam folders.

4
Test email sending

Trigger a transactional email (e.g., welcome email on signup) and verify it arrives in inbox.

Providers

Pick an option below. Each provider has a short guide so you can implement without digging through docs.

Resend
Coming soon
Expand

Simple transactional email provider with a great developer experience.

Mailgun
Coming soon
Expand

Robust sending + optional inbound email processing capabilities.

Inbound webhooks
Coming soon
Expand

Receive and forward inbound email events to your app endpoint.

DNS (DKIM/DMARC/SPF)
Available
Expand

Deliverability essentials—set these on a subdomain for best results.

Code

Copy/paste-friendly code blocks. Designed to get you working quickly without digging through long docs.

.env.local (email provider)

Example env vars (provider-specific).

# Email
EMAIL_PROVIDER_API_KEY="your-provider-api-key"
EMAIL_FROM="Your App <no-reply@mg.yourdomain.com>"
Deliverability checklist

Use a subdomain and configure DKIM/DMARC/SPF before you send.

$ # DNS
$ # DKIM + SPF + DMARC
$ # verify domain in provider dashboard