Migrate from Postmark

Move from Postmark
to Nextmail.

Point the Postmark SDK at Nextmail and keep your code, or convert it to the Nextmail SDK. Message streams, templates and webhooks are mapped field by field.

The same email,
written both ways.

One message with a reply-to address and a tag, sent through Postmark and then through Nextmail.

Postmark
import * as postmark from 'postmark' const client = new postmark.ServerClient(process.env.POSTMARK_SERVER_TOKEN) const result = await client.sendEmail({  From: 'Acme <[email protected]>',  To: '[email protected]',  ReplyTo: '[email protected]',  Subject: 'Your invoice is ready',  HtmlBody: '<p>Thanks for your order.</p>',  Tag: 'invoice',  MessageStream: 'outbound',}) console.log(result.MessageID)
Nextmail code
import { init, nextmail } from '@nextmail/sdk' init({ apiKey: process.env.NEXTMAIL_API_KEY }) const email = await nextmail.emails.send({  from: 'Acme <[email protected]>',  to: '[email protected]',  replyTo: '[email protected]',  subject: 'Your invoice is ready',  html: '<p>Thanks for your order.</p>',  tags: { tag: 'invoice' },}) console.log(email.id)

Field by field,
what goes where.

Each option Postmark takes, and its place in Nextmail.

PostmarkNextmailNotes
From, To, Cc, Bccfrom, to, cc, bccLists instead of comma separated strings.
HtmlBody, TextBodyhtml, textPlain names for the two bodies.
ReplyToreplyToOne address per message.
Tag, MetadatatagsUp to 10 key and value pairs.
TrackOpens, TrackLinkstracking: { opens, clicks }Two switches on each message.
TemplateAlias, TemplateModeltemplate: { id, props }Recreate the template in Nextmail first.
Attachments[].Nameattachments[].filenameBase64 or bytes, 5 MB in total.
Headers: [{ Name, Value }]headers: { Name: Value }One object of names and values.
MessageStreambroadcasts.sendBroadcasts have a call of their own.
sendEmailBatchemails.sendBatchUp to 100 emails, each sent on its own.

Converter

Paste your Postmark code,
get it back on Nextmail.

Pick where the code comes from and its language. Recognised keys are removed in your browser, and nothing you paste is kept.

From Postmark
Your Postmark code
Nextmail code

Your Nextmail code appears here

Paste a file, or load an example, then convert.

0 of 12,000 charactersRecognised keys are removed before sending.

Beyond the code,
four more steps.

  1. 01

    Add your sending domain

    Add it in Nextmail and publish the DNS records it lists. Sending starts once the signing record answers.

  2. 02

    Create an API key

    Keys start with oe_live_ and carry only the scopes you give them.

  3. 03

    Move your webhooks

    Create an endpoint for the events listed below and check the X-OpenEmail-Signature header on every request.

  4. 04

    Bring the rest with one key

    In Migrations, choose From a provider and paste a Postmark server token. Suppressions, templates and webhooks come across, and server tokens arrive as a checklist.

Webhook events,
renamed.

Each Postmark event and the Nextmail event that replaces it. Every request carries one event, signed.

PostmarkNextmail
Deliveryemail.delivered
Bounceemail.bounced
SpamComplaintemail.complained
Openemail.opened
Clickemail.clicked
SubscriptionChangecontact.unsubscribed, contact.resubscribed, suppression.added, suppression.removed

Moving from Postmark,
answered.

Converted?
Create the key it reads.

A workspace takes a minute. Add your domain, create an API key and set NEXTMAIL_API_KEY.