Home / Compare / Migrate from Postmark

Migrate from Postmark to RelayPost

A practical migration guide with API mapping, code examples, and a checklist. Most teams complete the switch in under 2 hours.

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

FeaturePostmarkRelayPost
Transactional email
Campaign/marketing email
REST API
SMTP relay
Webhooks
DKIM signingAutomaticAutomatic
Free tierNone (trial only)1,000 emails/month
10K emails/month$15/month$5/month
100K emails/month$100/month$25/month
Dedicated IPsAvailablePro plan
Team membersUnlimitedUnlimited

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

ActionPostmarkRelayPost
Send emailPOST /emailPOST /api/v1/emails/send
Send batchPOST /email/batchPOST /api/v1/emails/batch
Get email statusGET /messages/{id}GET /api/v1/emails/{id}
List suppressionsGET /message-streams/{stream}/suppressionsGET /api/v1/suppressions
Add suppressionPOST /message-streams/{stream}/suppressionsPOST /api/v1/suppressions
List domainsGET /domainsGET /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:

SettingPostmarkRelayPost
Hostsmtp.postmarkapp.comsmtp.relaypost.dev
Port587 (STARTTLS) or 25587 (STARTTLS) or 465 (TLS)
UsernamePostmark server tokenYour SMTP username
PasswordPostmark server tokenYour SMTP password
EncryptionSTARTTLSSTARTTLS 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:

EventPostmark typeRelayPost type
DeliveredDeliverydelivery
BouncedBouncebounce
Spam complaintSpamComplaintcomplaint
OpenedOpenopen
Link clickedClickclick

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