> ## 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.

# Broadcasts

> Send one email to a saved contacts view through your own Postmark server: write it with tokens, preview it as any recipient, test it on yourself, and send to the exact number you confirm. Early access.

A broadcast is one email to many people at your customers: everyone who owns an account renewing this quarter, every admin of an Enterprise account, every champion who hasn't been seen in a month. You choose who from the [Contacts list](https://docs.zudo.so/contacts/list.md), write the email once with tokens that fill in each person's details, and Zudo sends each person their own copy through your [Postmark](https://docs.zudo.so/integrations/postmark.md) server.

Broadcasts are in **early access**. **Broadcasts** appears in the main navigation once they've been turned on for you, and only an owner or admin of your organization can write or send one. Contact us to turn them on.

> [!NOTE]
>
> Broadcasts need a [Postmark connection](https://docs.zudo.so/integrations/postmark.md) with a Broadcasts stream and a verified sender. Set
> that up first.

## Choosing who it goes to

A broadcast goes to a **contacts view**: a [saved view](https://docs.zudo.so/accounts/saved-views.md) of the Contacts list, or everyone on it. Build the view on the Contacts list first, with its filters judged account by account, so "Owner" with "Account Segment is in Enterprise" means the Owners of Enterprise accounts.

The composer counts the audience as it stands, and says who it leaves out:

* **One email per address.** Two contact records with the same email address get one email.
* **Nobody without an email address.**
* **Nobody who unsubscribed, hard-bounced or marked an earlier broadcast as spam**, as Postmark's suppression list for your broadcast stream says.

Each person's account details come from an account they matched the view on: the customer those accounts roll up to, if there is one, otherwise the one with the highest MRR.

## Writing it

Write the subject and message in plain text. A blank line starts a new paragraph, line breaks are kept, and links become clickable. Nothing you type is read as HTML.

**Insert** adds a token where the cursor is:

| Token | Fills in |
| - | - |
| `{{contact.first_name}}` | The first word of the person's name |
| `{{contact.name}}`, `{{contact.email}}` | Their full name and address |
| `{{account.name}}`, `{{account.mrr}}` | Their account's name and MRR |
| `{{account.csm}}` | The account's CSM |
| `{{trait.<path>}}` | Any account trait, as playbooks write them |
| `{{date.today}}` | Today's date |

Not everyone has every value, so give a token a fallback after a bar: `{{contact.first_name | there}}` says "Hi there" to someone with no name on record.

Postmark adds an unsubscribe link to every broadcast, and runs the unsubscribe list for you.

The draft saves as you type.

## Previewing and testing

**Preview** shows the email exactly as one person in the audience will get it, From and Reply-To included. Pick anyone from the audience to see their copy.

**Send a test** sends that person's copy to you, or to an address at one of your organization's own domains. It never goes to a customer. A test:

* goes through your Postmark connection's test stream, with **\[Test]** in front of the subject;
* doesn't count as sending to you, if you're also in the audience;
* is the first real check that Postmark accepts your From address. If it doesn't, the test says why.

## Sending

**Review and send** shows the exact number of people it will go to, and the button says it: **Send to 117 people**. If the audience has changed since you opened the dialog, Zudo refuses and shows the new number rather than sending to anyone you didn't see counted.

Once confirmed, the broadcast can't be edited. Zudo sends it in batches of up to 500 and the page follows along:

* **Progress**: how many have been handled and how many are still to go.
* **Delivered, opened, clicked and bounced**, as Postmark reports them. Opens are counted when an email app loads images, so the real number is usually higher. An out-of-office or other automatic reply isn't counted as a bounce: the email arrived.
* **Each recipient**, with what happened to their email.

**Cancel send** stops the batches that haven't gone. Batches already handed to Postmark still arrive.

### When something goes wrong

* If Postmark **refuses a batch outright**, for example because the From address isn't verified, nothing in it was sent. The broadcast **pauses** with Postmark's reason. Fix it, then **Resume**.
* If Zudo **can't tell whether Postmark took a batch**, because the connection dropped or Postmark didn't answer in time, it sends nothing more until it knows. A few minutes later it asks Postmark which of those emails it has, and sends only the ones it doesn't. Nobody gets the same broadcast twice.
* An address Postmark has suppressed is **skipped**, and an address it refuses is **failed**, each with the reason.

## After it's sent

Everyone Broadcasts are turned on for sees what was sent, not only owners and admins:

* **On the account's timeline.** Each broadcast that reached someone on the account shows once, with the people it reached there and how far each copy got: sent, delivered, opened, clicked, bounced or marked as spam. Choose **Broadcasts** in the timeline's filter bar to see only these. A parent account shows what reached the people on the accounts inside it, each person labeled with their account. Owners and admins can click through to the broadcast's page.
* **In a person's panel** on the Contacts list. The **Email** section says whether a broadcast would reach them, since when it wouldn't, and lists the broadcasts they received.
* **On the Contacts list and an account's Contacts tab.** Anyone a broadcast won't reach has a label beside them, and on the Contacts list **Email Status** is a filter.

Only copies Postmark accepted count. Someone left out because Postmark had them suppressed, or whose email failed, received nothing, so they show on the broadcast's own page but not on a timeline.

### Email status

A person's email status comes from the copy Zudo keeps of your broadcast stream's [suppression list](https://docs.zudo.so/integrations/postmark.md#unsubscribes-and-bounces):

| Status | Means |
| - | - |
| **Subscribed** | They have an email address and aren't on the list. The next broadcast that picks them reaches them. |
| **Unsubscribed** | They used the unsubscribe link in a broadcast. |
| **Bounced** | Their address hard-bounced, so Postmark won't send to it again. |
| **Marked as spam** | They reported a broadcast as spam. |
| **Suppressed in Postmark** | Someone removed the address in Postmark itself. |

Someone with no email address has no status, so **Email Status is not Unsubscribed** includes them. Add **Email is set** to leave them out. Reactivating an address in Postmark makes it Subscribed again.

## Replies

Replies go to the Reply-To address on your [Postmark connection](https://docs.zudo.so/integrations/postmark.md), or to the From address if there isn't one. Use an inbox Zudo already reads through [Gmail](https://docs.zudo.so/integrations/gmail.md) or [Help Scout](https://docs.zudo.so/integrations/helpscout.md), and replies come back as conversations on the customer's account.

## What isn't here yet

* Broadcasts can't be scheduled for later, or sent through the API.


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