# Postmark

Source: https://catalystgroup.gg/docs/email-delivery/mailer-postmark/
Updated: 2026-10-19 · By Duane Garner

Connect CRM-NG SMTP to Postmark with a Server API Token, a verified sender, and the right message stream.

This guide shows you how to send your WordPress email through Postmark, a transactional email service known for fast, reliable delivery. It suits sites whose mail matters: password resets, receipts, booking confirmations. Postmark offers a free developer allowance for testing; check its site for current limits.

 

The **Postmark** mailer sends through Postmark's API with a **Server API Token**. Postmark organises mail into servers and message streams, and it keeps transactional mail strictly apart from bulk mail.

 

## Before you start

 
- A Postmark account (sign up at `https://postmarkapp.com/`). New accounts start in test mode and need approval before sending to any address.
- A domain you control, with access to its DNS records.
- Administrator access to your WordPress site.

 

## Step 1: Verify your sender or domain

 
1. Sign in to Postmark
  Go to `https://account.postmarkapp.com/` and sign in.
2. Open Sender Signatures
  Open **Sender Signatures** from the top menu.
3. Add your domain
  Choose **Add Domain or Signature**, then add your domain (recommended) or a single address.
4. Publish the records
  For a domain, Postmark shows a DKIM TXT record and a Return-Path CNAME record. Add them at your DNS provider and press **Verify** next to each one.
5. Request approval
  While in test mode you can only send to addresses on your own domain. Look for the prompt to request account approval, describe your site, and wait for Postmark to approve it.

 

## Step 2: Get the Server API Token

 
1. Open your server
  Open **Servers** and choose the server for this site, or create one named after the site.
2. Open API Tokens
  Inside the server, open the **API Tokens** tab (the plugin's **Get Server API Token** link goes to `https://account.postmarkapp.com/api_tokens`).
3. Copy the token
  Copy the **Server API token**. Do not use the Account API token: it manages your account and cannot send mail.

 

## Step 3: Connect in CRM-NG SMTP

 
1. Choose the mailer
  In WordPress, open **CRM-NG SMTP → Settings → General** and set **Mailer** to **Postmark**.
2. Paste the token
  Paste the token into **Server API Token**.
3. Set the stream
  Leave **Message Stream ID** empty to use the default transactional stream, or enter a stream ID as described below.
4. Set the sender
  Set **From Email** to an address on your verified domain (or the exact address you verified) and set **From Name**. Tick **Force From Email** so other plugins cannot use an unverified address.
5. Save
  Press **Save Settings**.

 

## Message stream

 

A message stream is a lane inside a Postmark server. Each server starts with a transactional stream whose ID is `outbound` (shown as "Default Transactional Stream"), and you can add more streams, including broadcast streams for newsletters.

 
- **Leave Message Stream ID empty** for normal website mail. CRM-NG SMTP then sends through the default transactional stream.
- **Enter a stream ID** when you want website mail in its own lane, for example to keep form notices apart from shop receipts in Postmark's reports. Find the ID on the stream's settings page in Postmark; it is the short code, not the display name.
- **Use a broadcast stream only for bulk mail** such as newsletters. Postmark does not allow bulk mail on transactional streams, and sending it there can get your account restricted.

 

If the stream ID does not exist on the server that owns your token, Postmark refuses the message.

 

## Send a test email

 

Open **CRM-NG SMTP → Tools → Email Test**, enter your address in **Send To**, and press **Send Email**. In Postmark, open the server and the stream's **Activity** tab to see the message. See [Sending a test email](https://catalystgroup.gg/docs/email-delivery/send-a-test-email/).

 

The domain check on the test page looks for `spf.mtasv.net` in your SPF record. Postmark's custom Return-Path record takes care of SPF alignment, so a passing DKIM and Return-Path in Postmark matter most. See [Adding DNS records](https://catalystgroup.gg/docs/email-delivery/dns-records/).

 

## Troubleshooting

 
- The token is wrong, or you used the Account token: [401 Unauthorized or Forbidden](https://catalystgroup.gg/docs/email-delivery/error-401-unauthorized-or-forbidden/) and [Invalid API key](https://catalystgroup.gg/docs/email-delivery/error-invalid-api-key/)
- The recipient bounced or complained before (Postmark calls this an inactive recipient): [Email address in suppression list](https://catalystgroup.gg/docs/email-delivery/error-email-in-suppression-list/)
- The From Email has no sender signature: [553 Sender address rejected](https://catalystgroup.gg/docs/email-delivery/error-553-sender-address-rejected/)
- The account is still in test mode, or has reached its limit: [Email sending limit reached](https://catalystgroup.gg/docs/email-delivery/error-email-sending-limit/)
- Mail arrives in spam: [Emails landing in spam](https://catalystgroup.gg/docs/email-delivery/emails-landing-in-spam/)

 

## Related

 
- [Choosing a mail service](https://catalystgroup.gg/docs/email-delivery/choose-a-mailer/)
- [Adding DNS records: SPF, DKIM and DMARC](https://catalystgroup.gg/docs/email-delivery/dns-records/)
- [Delivery and bounce webhooks](https://catalystgroup.gg/docs/email-delivery/delivery-webhooks/)
- [Sender name, address and the Force settings](https://catalystgroup.gg/docs/email-delivery/sender-name-and-address/)
- [Debug events](https://catalystgroup.gg/docs/email-delivery/debug-events/)
