> For the complete documentation index, see [llms.txt](https://docs.usepylon.com/pylon-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.usepylon.com/pylon-docs/broadcasts/create-a-broadcast.md).

# Create a Broadcast

## Create a Broadcast

A Broadcast lets you send a single message to many customers at once. You can send Broadcasts over two channels:

* **Channel** — posts to your customers' **Slack** channels (and **Microsoft Teams** channels, where connected).
* **Email** — sends an email to a list of contacts.

Every Broadcast is created through the same three-step flow — **Message → Audience → Review** — and when you're ready you can **Send now**, **Schedule for later**, or **Save as a draft**.

{% hint style="danger" %}
Always Send a Preview before sending a Broadcast to ensure correct formatting.
{% endhint %}

### Go to the Broadcast Page

Navigate to the [Broadcasts Page](https://app.usepylon.com/broadcast) and click the `Create` button at the top right.&#x20;

<figure><img src="/files/c7ZyIgY3wJIadXZAY9Zy" alt=""><figcaption></figcaption></figure>

### Set a Title

Every Broadcast has a **Title**. The title is only used to help you find the Broadcast later — it is never shown to recipients and is not part of the message.

***

## Create a Channel (Slack/Teams) Broadcast

Use a **Channel** Broadcast to post a message into your customers' Slack channels. If an account also has a connected Microsoft Teams channel, the message is delivered to both.

{% hint style="info" %}
Broadcasts only work with Teams **channels** (part of a Team workspace), not with Teams chats.
{% endhint %}

### Step 1 — Write your Message

Set **Send broadcast in** to **Channel**, then compose your message.

Slack message etiquette is very different from other mediums like Email. When writing your Broadcast, follow these tips:

1. Keep it short
2. Use emojis
3. Attach an image or link

Type your message into the text editor on the left, and see a live preview on the right. We support the following content types:

<table><thead><tr><th>Content</th><th width="256">Notes</th><th>Keyboard Shortcut</th></tr></thead><tbody><tr><td><strong>Bold</strong></td><td>Bold the text</td><td>⌘B</td></tr><tr><td><em>Italic</em></td><td>Italicize the text</td><td>⌘I</td></tr><tr><td><code>Code</code></td><td>Add code formatting</td><td></td></tr><tr><td><a href="https://usepylon.com/">Link</a></td><td>Add a link whose image can optionally be unfurled</td><td></td></tr><tr><td>Emoji 🙂</td><td>Add an emoji</td><td>🌐</td></tr><tr><td>Strikethrough</td><td>Strikethrough text</td><td></td></tr><tr><td>Header</td><td>Add a header</td><td></td></tr><tr><td>Subheader</td><td>Add a subheader</td><td></td></tr><tr><td>Image</td><td>Add an image</td><td></td></tr></tbody></table>

{% hint style="info" %}
Emojis can be added either as raw emojis like 🎉 or in raw string form like `:tada:`. Custom emojis are supported via the latter method like `:custom_emoji:`.
{% endhint %}

#### Personalize with Variables

Channel Broadcasts can insert per-account values so each channel receives a tailored message. Type `{{` in the editor to see the available variables, including:

| Variable                  | Inserts                                                                         |
| ------------------------- | ------------------------------------------------------------------------------- |
| `{{account.name}}`        | The account's name                                                              |
| `{{account.owner}}`       | The account owner                                                               |
| `{{slack.pylon.mention}}` | Tags the Pylon bot in the message — useful when broadcasting usage instructions |

Account **custom fields** are also available as variables.

{% hint style="warning" %}
Personalization variables are only available for **Channel** (Slack/Teams) Broadcasts. They are not available for Email Broadcasts.
{% endhint %}

#### Show or Hide Link Preview

When you send links on Slack, a link preview image is typically shown below your message. You can manually enable or disable this preview after adding a link.

<figure><img src="/files/BKmYUsIG3AVW6GfGnlgf" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/udaKqplRkHOKoqAK5fCf" alt=""><figcaption><p>The Link Preview is everything to the right of the grey bar under main message</p></figcaption></figure>

#### Choose Sender

You can choose to send the Broadcast either as yourself or as the company.

<figure><img src="/files/6ZGIwoD5OMEjLGet2LKf" alt=""><figcaption></figcaption></figure>

### Step 2 — Select your Audience

On the **Audience** step, choose which channels receive the Broadcast. A preview of the selected channels stays visible on the right.

You can build your audience in several ways:

* **Filter** — narrow the list by account filters (for example, account ownership or account tags). Tags can be set in Pylon on the [Accounts Page](https://app.usepylon.com/accounts) or synced from your CRM.
* **Select manually** — check individual channels and click **Add to Audience**.
* **Select all matching a filter** — add every channel that matches your current filter in one action.
* **Upload a CSV** — match accounts by `account_id`, external ID, or a custom field.

#### Deselect a Channel

There may be cases where you want to send to all channels matching a filter, except for a few. Filter to the set you want, then click a channel under the preview to remove it. You can also use **Clear all** or **Clear unhealthy** to quickly adjust the list.

{% hint style="info" %}
Pylon flags channels that may not receive the Broadcast (for example, where the Pylon bot isn't present) so you can address them before sending.
{% endhint %}

### Step 3 — Review and Send

See the Review and Send section below, which is shared by all Broadcasts.

***

## Create an Email Broadcast

Use an **Email** Broadcast to send a single email to a list of contacts.

{% hint style="info" %}
Email Broadcasts require a connected **Email App**, which provides the from-address. The email sender options only appear once an Email App is configured for your organization.
{% endhint %}

### Step 1 — Write your Message

Set **Send broadcast in** to **Email**, then fill in the email fields.

* **Subject** — required. This is the subject line recipients see.
* **Send broadcast from** — choose the Email App whose address the email is sent from.
* **Send as** — send as the company (the app's default sender name) or as yourself (your name).
* **Reply to** — where replies are routed: your email, the app's receiving email, or none.

Compose the email body in the rich-text editor. Email Broadcasts support formatting, bullet and numbered lists, inline images, and file attachments.

<figure><img src="/files/EgQ0GdCcGllqMPoHHnnt" alt=""><figcaption></figcaption></figure>

### Step 2 — Select your Audience

Email Broadcasts are sent to **individual contacts** (by email address), not to accounts or channels. On the **Audience** step you'll see a searchable table of contacts, showing their Account, Contact name, and Email. Only contacts that have an email address appear.

Build your recipient list in any of these ways:

* **Filter** — narrow the contacts list using contact filters.
* **Select manually** — check individual contacts and click **Add to Audience**.
* **Select all matching a filter** — add every contact that matches your current filter.
* **Upload a CSV** — add existing contacts by email, and optionally **create new contacts** that don't exist in Pylon yet.

<figure><img src="/files/HXUOXJinHDr1yVyElHQi" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}

#### Uploading recipients through CSV upload

Your CSV needs an **`email`** column (required). Include a **`name`** column too — it's required for any recipient who isn't already a contact in Pylon — and an optional **`accountID`** column.

When you upload, Pylon matches each email against your existing contacts (case-insensitive, including secondary emails):

* **Existing contacts** are added to the audience as-is.
* **Emails with no match** are shown as **New**. If the row has a name, Pylon creates a brand-new contact for it — but only when you **send or save** the broadcast, not at upload time.
* Rows **missing a name** or with an **invalid email** can't be added and are skipped.

New contacts are created with the name and email from your CSV and associated to an account by the `accountID` you provide, or inferred from the email's domain. If neither matches, the contact is created without an account. New contacts are **not** automatically invited to your customer portal.

The upload previews how many recipients are existing vs. new before you add them. Max file size is 25 MB.&#x20;

![](/files/ztfHU9fcrNhmCaAQLSC3)\
\
If your CSV includes many recipients who aren't yet contacts in Pylon, saving or sending the broadcast can be slow or time out, because Pylon creates a new contact for each one.

For large audiences, we recommend either:

* **Creating the contacts first** on the Contacts page, then building your audience from existing contacts, or
* **Splitting the CSV into smaller batches** and sending in groups.

Recipients who are already contacts in Pylon aren't affected by this.
{% endhint %}

### Step 3 — Review and Send

See the Review and Send section below, which is shared by all Broadcasts.

***

## Review and Send

The **Review** step is the final screen for every Broadcast. It shows your composed message alongside the resolved audience so you can confirm everything before it goes out.

### Send a Preview

Before sending, always send a preview to check formatting.

* For a **Channel** Broadcast, send the preview to yourself or to a specific channel.
* For an **Email** Broadcast, send the preview to yourself.

### Engagement Notifications (Channel Broadcasts)

For Channel Broadcasts, you can route engagement notifications (replies and reactions) to a Slack channel so your team can follow along.

<figure><img src="/files/3esKtkUUDyHETordGpSx" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/ZTrJZaaEzCiGCpbnLoOG" alt=""><figcaption></figcaption></figure>

### Send, Schedule, or Save

When your preview looks good, choose how to send:

* **Send Now** — sends the Broadcast immediately after a confirmation.
* **Schedule for later** — pick a date, time, and timezone. The Broadcast moves to your **Scheduled** tab and sends automatically.
* **Save Draft** — save your progress and finish later from the **Draft** tab.

{% hint style="info" %}
Congrats, you've sent a Broadcast!
{% endhint %}

***

## After Sending

### Track Engagement

Once a Broadcast is sent, Pylon tracks engagement automatically.

* **Channel (Slack/Teams)** — reactions, replies, link clicks, and an overall engagement rate, per message and per account.
* **Email** — the contacts that were emailed, grouped by account.

### Edit, Clone, or Delete

* **Edit** — you can edit the message of an already-sent Channel/Teams Broadcast; Pylon updates the messages that were posted.
* **Clone** — duplicate a Broadcast to use it as a starting point for a new one.
* **Delete** — remove a Broadcast.

***

## Example: Feature Launch Broadcast

<figure><img src="/files/IAXaTfPrdKBKyopr0LMr" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.usepylon.com/pylon-docs/broadcasts/create-a-broadcast.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
