notifly
IntegrationsEmail providerUpdated

Postmark delivery, Notifly workflows around it.

Postmark keeps doing what you picked it for. You connect a Postmark server with its own token, and every email step in your Notifly workflows is sent by that server, from your sender addresses, on your Postmark plan.

Notifly adds the parts Postmark leaves to your code: one trigger across email, in-app, SMS, push and chat; digest, delay and throttle steps; subscriber preferences checked before each send; and an activity feed that records what Postmark answered.

What you need from Postmark

These are the fields the dashboard asks for when you connect Postmark, quoted from the create form.

FieldRequiredStoredNotes
API KeyRequiredEncrypted at rest
From email addressRequiredAs enteredUse the same email address you used to authenticate your delivery provider
Sender nameRequiredAs entered
  • API Key. A Server API token. Notifly creates Postmark's ServerClient with it, so the server that token belongs to is the one that sends.
  • From email address. The From of every email this integration sends, unless a trigger overrides it with overrides.providers.postmark.from.

Connect Postmark in the dashboard

  1. Sign in at app.notifly.io, open Integration Store in the sidebar and choose Connect Provider.
  2. In the Connect Integration sheet, open the E-Mail tab (or search across channels), find Postmark and choose Connect.
  3. Pick the environment the integration belongs to. Development and Production keep separate integrations, so you can point each at a different Postmark account or key.
  4. Fill in Delivery Provider Credentials with the fields in the table above, then choose Create Integration.
  5. A new integration starts switched on as both Active Integration and Primary Integration, so email steps in that environment send through Postmark by default. If the environment already has a primary email integration, the dashboard asks before replacing it.

Trigger a Postmark email from your code

Your backend triggers a workflow; Notifly renders the email step and sends it through Postmark. The subscriber is created or updated from to on the way.

Node.js · @notiflyio/api@0.1.26
// npm install @notiflyio/api@0.1.26
import { Notifly } from "@notiflyio/api";

const notifly = new Notifly({ security: { secretKey: process.env.NOTIFLY_SECRET_KEY } });

await notifly.trigger({
  workflowId: "invoice-ready",
  to: { subscriberId: "user_123", email: "ada@example.com" },
  payload: { invoiceUrl: "https://example.com/invoices/1042" },
  overrides: {
    // Postmark takes PascalCase fields: these arrive as MessageStream and Tag.
    providers: { postmark: { messageStream: "outbound", tag: "invoice-ready" } },
  },
});

Prefer plain HTTP? The same trigger is POST https://api.notifly.io/v1/events/trigger with an Authorization: ApiKey header and a body of { "name", "to", "payload" }.

What reaches Postmark

  • Postmark's own field names. Provider overrides are converted to PascalCase, so messageStream, tag or trackOpens on a trigger land as MessageStream, Tag and TrackOpens.
  • Recipients and headers. Cc and bcc go out as comma-separated lists, reply-to as ReplyTo, and custom headers as Postmark's Name/Value list.
  • Attachments. Base64-encoded with their MIME type and content id, so images referenced by cid: render inline.
  • Per step, if you need it. overrides.steps.<stepId>.providers.postmark applies to one email step and wins over the workflow-wide value.

What Notifly adds on top of Postmark

Workflows around the send

One trigger runs a workflow: this provider’s step can sit beside in-app, email, SMS, push and chat steps, behind digest, delay and throttle steps.

Subscriber preferences, enforced at send

Before each step runs, the subscriber’s workflow and channel preferences are checked; an opted-out step is skipped and the reason is recorded.

An in-app Inbox next to it

The same workflow can write to the Notifly Inbox, a real-time in-app feed you embed with the React component or the JavaScript SDK.

Per-trigger provider parameters

Anything the trigger passes under overrides.providers.<provider id> is merged into the request Notifly sends to the provider, per workflow or per step.

Activity you can debug

Every message gets execution details in the activity feed, including the response or error the provider returned.

Secrets encrypted at rest

API keys, tokens and service accounts are stored encrypted with AES-256; new and re-saved credentials use authenticated AES-256-GCM. The table above marks which of this provider’s fields that covers.

Several accounts, one primary

Connect more than one account on this channel. The primary integration is the default; another active integration takes the send when its conditions match the subscriber or the tenant in the trigger’s context.

Go deeper in the docs

Frequently asked questions

Which Postmark token goes in the API Key field?

A Server API token from the Postmark server you want to send from. Notifly authenticates as that server with Postmark's official ServerClient, so an Account API token is the wrong kind of token here. The value is stored encrypted at rest.

Can I choose the Postmark message stream per notification?

Yes. Pass overrides.providers.postmark.messageStream on the trigger. Notifly converts Postmark overrides to Postmark's PascalCase, so the value reaches Postmark as MessageStream. Without it the request carries no MessageStream and Postmark applies its own default for the server.

Can I tag Postmark messages?

Yes, with overrides.providers.postmark.tag on the trigger, which arrives as Postmark's Tag field. Put it under overrides.steps.<stepId>.providers.postmark instead to tag only one email step of the workflow.

Do custom headers, cc and attachments work with Postmark?

Yes. Custom headers are sent as Postmark's Name/Value header list, cc and bcc as comma-separated recipient lists, reply-to as ReplyTo, and attachments are base64-encoded with their content id, so inline images keep rendering.

Where do I see why Postmark refused an email?

In the Notifly activity feed. When Postmark rejects a send, the email step records a provider error carrying the error Postmark returned, next to the rest of that workflow run.

Bring your provider account. Keep your sender reputation.

One POST /v1/events/trigger — email, SMS, push, in-app, and chat. 10,000 events a month, free.

Get started freeSee pricing