Why teams migrate from Postmark
Postmark is a solid transactional email service with excellent deliverability. But teams outgrow it for a few common reasons:
- Postmark is transactional-only — you need a second provider for marketing and campaign emails
- Pricing starts at $15/month for 10,000 emails — RelayPost starts at $5/month for the same volume
- No free tier for testing or low-volume projects
- Message streams add complexity when you just want to send email
RelayPost handles both transactional and campaign email in one platform, with simpler pricing and a free tier for getting started.
Feature comparison
| Feature | Postmark | RelayPost |
|---|---|---|
| Transactional email | ✅ | ✅ |
| Campaign/marketing email | ❌ | ✅ |
| REST API | ✅ | ✅ |
| SMTP relay | ✅ | ✅ |
| Webhooks | ✅ | ✅ |
| DKIM signing | Automatic | Automatic |
| Free tier | None (trial only) | 1,000 emails/month |
| 10K emails/month | $15/month | $5/month |
| 100K emails/month | $100/month | $25/month |
| Dedicated IPs | Available | Pro plan |
| Team members | Unlimited | Unlimited |
Migration steps
Step 1: Create your RelayPost account
Sign up at relaypost.dev/register. Create an organization and complete the onboarding flow. This takes about 2 minutes.
Step 2: Add and verify your domain
Add your sending domain in the RelayPost dashboard. You'll get SPF, DKIM, and DMARC records to add to your DNS. If you're already using Postmark, you'll update the existing records.
Update your SPF record:
# Before (Postmark)
v=spf1 include:spf.mtasv.net ~all
# After (RelayPost)
v=spf1 include:relaypost.dev ~all
# During migration (both)
v=spf1 include:spf.mtasv.net include:relaypost.dev ~all Step 3: Generate API credentials
In your RelayPost dashboard, go to Settings → API Keys to create a REST API key. For SMTP, go to Settings → SMTP Credentials.
Step 4: Update your application code
Replace Postmark API calls with RelayPost equivalents. The API structure is similar — here's the mapping:
API mapping: Postmark → RelayPost
| Action | Postmark | RelayPost |
|---|---|---|
| Send email | POST /email | POST /api/v1/emails/send |
| Send batch | POST /email/batch | POST /api/v1/emails/batch |
| Get email status | GET /messages/{id} | GET /api/v1/emails/{id} |
| List suppressions | GET /message-streams/{stream}/suppressions | GET /api/v1/suppressions |
| Add suppression | POST /message-streams/{stream}/suppressions | POST /api/v1/suppressions |
| List domains | GET /domains | GET /api/v1/domains |
Code example: sending email
Postmark (before)
const response = await fetch(
"https://api.postmarkapp.com/email",
{
method: "POST",
headers: {
"X-Postmark-Server-Token": "your-token",
"Content-Type": "application/json",
},
body: JSON.stringify({
From: "[email protected]",
To: "[email protected]",
Subject: "Welcome",
HtmlBody: "<p>Welcome aboard!</p>",
}),
}
); RelayPost (after)
const response = await fetch(
"https://api.relaypost.dev/v1/emails/send",
{
method: "POST",
headers: {
"Authorization": "Bearer your-api-key",
"Content-Type": "application/json",
},
body: JSON.stringify({
from: "[email protected]",
to: "[email protected]",
subject: "Welcome",
html: "<p>Welcome aboard!</p>",
}),
}
); Key differences: RelayPost uses lowercase field names, standard Bearer token auth, and a versioned API path.
SMTP migration
If you're using Postmark's SMTP interface, update your SMTP settings:
| Setting | Postmark | RelayPost |
|---|---|---|
| Host | smtp.postmarkapp.com | smtp.relaypost.dev |
| Port | 587 (STARTTLS) or 25 | 587 (STARTTLS) or 465 (TLS) |
| Username | Postmark server token | Your SMTP username |
| Password | Postmark server token | Your SMTP password |
| Encryption | STARTTLS | STARTTLS or TLS |
Webhook migration
Postmark and RelayPost both support webhooks for delivery events. Update your webhook URL in the RelayPost dashboard and adjust your handler for the new payload format:
| Event | Postmark type | RelayPost type |
|---|---|---|
| Delivered | Delivery | delivery |
| Bounced | Bounce | bounce |
| Spam complaint | SpamComplaint | complaint |
| Opened | Open | open |
| Link clicked | Click | click |
Migration checklist
- ☐ Create RelayPost account and organization
- ☐ Add sending domain and verify DNS records
- ☐ Generate API key and/or SMTP credentials
- ☐ Update application code (API calls or SMTP config)
- ☐ Update webhook endpoints and payload handlers
- ☐ Test email sending in staging environment
- ☐ Verify delivery, bounce, and open tracking works
- ☐ Update SPF record (add RelayPost include)
- ☐ Update DKIM records for your domain
- ☐ Deploy to production
- ☐ Monitor delivery metrics for 48 hours
- ☐ Remove Postmark SPF include after confirming everything works
- ☐ Cancel Postmark subscription
Frequently asked questions
How long does it take to migrate from Postmark?
Most migrations take 1-2 hours for the code changes and DNS updates. DNS propagation can take up to 48 hours, but typically completes within 30 minutes. You can run both services in parallel during the transition.
Can I use RelayPost for both transactional and marketing email?
Yes. Unlike Postmark which is transactional-only, RelayPost handles both transactional and campaign email in a single platform. This eliminates the need for a separate marketing email provider.
Will my deliverability change after migrating?
RelayPost uses Amazon SES infrastructure with automatic DKIM signing and dedicated IP options. Deliverability depends on your domain reputation, which travels with you. Warm up gradually if switching to a new sending IP.
Does RelayPost support Postmark's message streams?
RelayPost doesn't use the message streams concept. Instead, you can separate transactional and campaign traffic using different API keys or SMTP credentials, each with their own tracking and analytics.
Is RelayPost cheaper than Postmark?
For most volumes, yes. Postmark starts at $15/month for 10,000 emails. RelayPost offers 1,000 emails free, then $5/month for 10,000 emails and $25/month for 100,000 emails. No per-email overage charges on paid plans.
Ready to migrate?
Free tier includes 1,000 emails per month. Run both services in parallel during your transition.
Create free account