> ## Documentation Index
> Fetch the complete documentation index at: https://docs.zudo.so/llms.txt
> Use this file to discover all available pages before exploring further.

# Postmark

> Connect your own Postmark server for broadcasts to send through. Zudo keeps a copy of its suppression list and hears about deliveries, bounces, opens and clicks. Early access.

Postmark is the email service [broadcasts](https://docs.zudo.so/broadcasts/overview.md) send through: one email to a saved contacts view, from your own Postmark server and your own From address. You connect a server, choose its streams and the From and Reply-To addresses, and Zudo sets up the webhooks it needs.

Postmark is in **early access**, together with broadcasts. The Postmark option only appears under **Settings → Connections → Add Connection** once broadcasts have been turned on for you. Contact us to turn them on.

Once it's connected, write and send broadcasts from **Broadcasts** in the main navigation. See [Broadcasts](https://docs.zudo.so/broadcasts/overview.md).

## Before you connect

In Postmark:

1. **Use a server only Zudo sends from**, or create one. A server token can send on every stream of its server, so a dedicated server keeps broadcasts apart from your product's own email.
2. **Create a Broadcasts stream** on that server, if it doesn't have one. Broadcasts send only on Broadcasts streams, because those are the streams where Postmark adds an unsubscribe link and the `List-Unsubscribe` header, and runs the unsubscribe list for you.
3. Optionally, **create a second Broadcasts stream for test sends**, so tests stay out of the real stream's numbers and suppression list.
4. **Verify the address you'll send from**, as a sender signature or a whole domain.
5. Copy the server's **Server API token** from its **API Tokens** tab. Zudo never needs your account token.

## Connecting

Go to **Settings → Connections**, add a connection and pick **Postmark**. Paste the server token and choose **Check**. Zudo shows which server the token reaches, then asks for:

| Setting | Required | What it does |
| - | - | - |
| **Broadcast stream** | Yes | Every broadcast goes out on it. Only the server's Broadcasts streams are offered. |
| **Test stream** | No | Where test sends go. Defaults to the broadcast stream. |
| **From name** | Yes | Who the email is from, such as "Acme Customer Success". |
| **From address** | Yes | Must be a sender signature or a domain verified in Postmark. |
| **Reply-To** | No | Where replies go. A shared inbox Zudo already reads through Gmail or Help Scout brings them back. |

Zudo can't see your sender signatures with a server token, so it can't check the From address when you connect. Postmark refuses an unverified one when a message is sent, so the first [test send](https://docs.zudo.so/broadcasts/overview.md#previewing-and-testing) is where you'll find out.

Only an owner or admin with broadcasts turned on can connect Postmark, and an organization can have one Postmark connection.

A **sandbox** server connects, and the settings say so: Postmark accepts mail sent through it and never delivers it.

## What Zudo sets up on the server

When you connect, Zudo registers a webhook on each stream it uses:

* **The broadcast stream** reports deliveries, bounces, spam complaints, first opens, clicks and changes to its suppression list.
* **A separate test stream** reports only deliveries and bounces, so a tester hears when a test didn't arrive. Nothing on it changes the suppression list Zudo keeps.

Postmark doesn't sign its webhooks, so each one carries a password Zudo generates, and Postmark sends it back on every call. Postmark also tests each webhook as it's registered. If it can't reach Zudo, nothing is saved and the error says why.

Changing either stream later moves the webhooks with it: Zudo registers the new ones before it removes the old ones, so a failure leaves the connection as it was.

## Unsubscribes and bounces

Postmark runs the unsubscribe list. On a Broadcasts stream it adds the unsubscribe link to every message and stops sending to anyone who used it. It does the same for hard bounces and spam complaints, and for any address you suppress yourself in Postmark.

Zudo keeps a copy of the broadcast stream's list. It loads the whole list when you connect, or when you choose a different broadcast stream, and Postmark tells it about every change after that, including when an address is reactivated. That copy is what lets a broadcast leave suppressed addresses out before it counts its recipients, and what each person's [email status](https://docs.zudo.so/broadcasts/overview.md#email-status) on the Contacts list reads. Postmark's list is still the one that's enforced.

## Changing and disconnecting

Open the connection under **Settings → Connections** to see the server, streams and addresses. **Edit settings** changes them, for an owner or admin with broadcasts turned on.

**Disconnect** removes the token and Zudo's webhooks from the server, and the copy of its suppression list. Broadcasts already sent keep their record. Postmark keeps its own suppression list, and reconnecting the same server loads it again.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.