How to Send Email from Multiple Domains (Without Paying Per Domain)
Most email APIs charge extra for multiple sending domains. Here's how to manage multiple domains with one API key and one bill — and why it matters for developers.
If you're a developer or agency managing multiple projects, you've probably hit this problem: you need to send email from noreply@app-one.com and noreply@app-two.com, and your email provider wants you to pay for each domain separately.
This is how most email APIs work. Here's why it doesn't have to be this way.
The problem: Most email APIs limit domains per plan or charge extra for additional domains.
The fix: SendPigeon includes multiple domains in every plan — 10 on Starter ($7/mo), 20 on Growth, 50 on Pro. One API key, one bill, all your projects.
The multi-domain problem
Say you're building SaaS products, freelancing, or running an agency. You have:
- app-one.com — needs password resets, welcome emails, invoices
- app-two.com — needs order confirmations, shipping updates
- client-project.com — needs contact form notifications
Each project needs its own sending domain for proper email authentication (SPF, DKIM, DMARC). You can't send From: noreply@app-one.com through a domain verified for app-two.com without deliverability issues.
So you need three verified domains. How do the major email APIs handle this?
How other providers handle multiple domains
Resend
Resend includes 1 domain on the free plan. The Pro plan ($20/month) includes 10 domains. Need more? The Scale plan ($90/month) jumps to 1,000 domains.
SendGrid
SendGrid lets you add multiple domains, but their Essentials plan starts at $19.95/month and includes basic features. Domain management becomes more complex at scale.
Postmark
Postmark uses "servers" as the organizational unit. Each server can have its own domain. Their pricing is per email volume, but managing multiple servers adds complexity.
Mailgun
Mailgun lets you add multiple domains, but pricing starts at $35/month for the Foundation plan. The free tier is limited to a sandbox domain.
Amazon SES
SES lets you verify as many domains as you want. But SES is a raw API — you need to build your own dashboard, handle bounces/complaints, and manage suppression lists yourself.
The SendPigeon approach
SendPigeon includes multiple domains in every paid plan:
| Plan | Price | Emails/month | Domains |
|---|---|---|---|
| Free | $0/mo | 1,000 | 1 |
| Starter | $7/mo | 10,000 | 10 |
| Growth | $15/mo | 30,000 | 20 |
| Pro | $29/mo | 100,000 | 50 |
You pay for email volume, not domains. Adding a new project is free — just verify the domain and start sending.
How it works
1. Add your domains
In the SendPigeon dashboard, add each sending domain. You'll get DNS records to add for SPF, DKIM, and DMARC.
2. Use one API key
All domains share the same API key. Send from any verified domain:
import { SendPigeon } from "sendpigeon";
const client = new SendPigeon(process.env.SENDPIGEON_API_KEY!);
// Project 1
await client.send({
from: "noreply@app-one.com",
to: "user@example.com",
subject: "Welcome to App One",
html: "<h1>Welcome!</h1>",
});
// Project 2
await client.send({
from: "noreply@app-two.com",
to: "user@example.com",
subject: "Your order is confirmed",
html: "<h1>Order Confirmed</h1>",
});
// Client project
await client.send({
from: "noreply@client-project.com",
to: "admin@client-project.com",
subject: "New contact form submission",
html: "<p>Message from a visitor...</p>",
});
3. Track everything in one dashboard
All emails from all domains show up in the same dashboard. Filter by domain, search by recipient, and see delivery status across all your projects in one place.
When you need separate API keys
Sometimes you want isolation between projects — different API keys so a compromised key only affects one project. SendPigeon supports this too:
- Create multiple API keys in the dashboard
- Each key can send from any verified domain
- Revoke a key without affecting other projects
Email authentication per domain
Each domain needs its own email authentication records. This isn't optional — without SPF, DKIM, and DMARC, your emails land in spam.
When you add a domain in SendPigeon, you'll get the exact DNS records to add:
- SPF — Authorizes SendPigeon to send on behalf of your domain
- DKIM — Cryptographically signs your emails
- DMARC — Tells receiving servers what to do with unauthenticated emails
See our email authentication guide for step-by-step setup instructions, or use our email authentication checker to verify your setup.
Common setups
Indie hacker with multiple side projects
You're shipping fast and have 3-5 projects, each on their own domain. The Starter plan ($7/mo) gives you 10 domains and 10,000 emails — enough for all of them combined.
Agency managing client projects
You handle email for multiple clients. Each client has their own domain. The Growth plan ($15/mo) gives you 20 domains. Clients get proper email authentication, you get one bill.
Company with multiple products
Your company runs several products under different brands. Each product has its own domain for transactional email. The Pro plan ($29/mo) gives you 50 domains and 100,000 emails.
Getting started
Sign up
Create a free account at sendpigeon.dev/signup. The free plan includes 1 domain and 1,000 emails to get started.
Add your domains
Go to Domains in the dashboard and add each sending domain. Follow the DNS setup instructions.
Install the SDK
npm install sendpigeon
Available for TypeScript/Node.js, Python, Go, and PHP.
Send from any domain
Use the from field to specify which domain to send from. That's it.
Related
- Email Authentication Setup Guide — SPF, DKIM, DMARC for your domains
- Email Deliverability Checklist — Make sure emails reach the inbox
- Framework Guides — Integration guides for Next.js, Hono, Django, and more
- SendPigeon vs Resend — Detailed comparison including domain pricing
- SendPigeon vs SendGrid — Detailed comparison