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

# Broadcasts

> Reach your contacts on the channels they already use, in bulk or one event at a time

Your customers reached out to you through WhatsApp, Instagram, or your website. Broadcasts let you reach back out on the same channels. Send a product announcement to a whole segment, or fire a one-time passcode the instant someone signs in. Both run on the same templates, channels, and personalization.

<Frame>
  <img src="https://mintcdn.com/invent/Si8CtKN6BSzw7_Wo/assets/guides/broadcasts-overview.png?fit=max&auto=format&n=Si8CtKN6BSzw7_Wo&q=85&s=5455678697d0c59dd583497d3e1c7185" alt="Broadcasts dashboard listing broadcasts in a table" style={{ maxHeight: '400px' }} width="2560" height="1092" data-path="assets/guides/broadcasts-overview.png" />
</Frame>

## Two ways to broadcast

Every broadcast is one of two types, chosen when you create it and fixed afterwards.

| | Marketing | Transactional |
| - | - | - |
| **Best for** | Announcements, updates, offers, newsletters | OTPs, receipts, confirmations, password resets |
| **Who receives it** | A segment or all contacts, chosen up front | One recipient, named on each trigger |
| **When it sends** | Now or scheduled for later | The moment your backend calls the endpoint |
| **How it is sent** | One send to many people | One API call per message |
| **Unsubscribes** | Respected; unsubscribed contacts are excluded | Not applied; the trigger is rejected only if the contact is blocked or the address is on the [suppression list](/guides/audience/suppression) as Bounced, Marked as spam, Legal request or Added manually |
| **Lifecycle** | Draft to Scheduled to Sent | Draft to Active, then triggered many times |

<CardGroup cols={2}>
  <Card title="Marketing Broadcasts" icon="bullhorn" href="/guides/broadcasts/marketing">
    Send one message to a group at once, immediately or scheduled
  </Card>

  <Card title="Transactional Broadcasts" icon="bolt" href="/guides/broadcasts/transactional">
    Trigger a single message through the API when an event happens
  </Card>
</CardGroup>

## The Broadcasts dashboard

The Broadcasts page lists every broadcast in a table:

| Column | Description |
| - | - |
| **Name** | The name you gave the broadcast, with a type icon and the type below it |
| **Channels** | A badge per channel configured, each with its integration icon |
| **Status** | Current state (see [Broadcast statuses](#broadcast-statuses)) |
| **Recipients** | The total, above a bar split by delivery state. Hover it for the exact count per state |
| **Last Activity** | When the broadcast was last sent, or last edited if it has not sent yet |

Above the table, a search box filters by name and a set of chips filters by type: **All**, **Marketing**, or **Transactional**. Both are reflected in the URL, so a filtered view can be bookmarked or shared.

Each row has a three-dot menu to duplicate or delete the broadcast.

Alongside the list, the Broadcasts area has a **WhatsApp Templates** view for building and managing your templates (see [WhatsApp](/guides/broadcasts/channels/whatsapp#whatsapp-templates)) and an **Analytics** view for delivery reporting. Opening a single broadcast gives it its own **Overview** and **Recipients** tabs, plus an **Analytics** tab once it has left Draft.

## Creating a broadcast

<Steps>
  <Step title="Click + Create Broadcast">
    Use the **+ Create Broadcast** button in the top-right corner.
  </Step>

  <Step title="Name it">
    Give the broadcast a descriptive name, for example "Black Friday Sale" or "Login OTP".
  </Step>

  <Step title="Choose the type">
    Pick **Marketing** or **Transactional**. This sets how the broadcast sends and cannot be changed later.

    * **Marketing**: send to a group at once, now or scheduled for later.
    * **Transactional**: send via API, one message the moment something happens.
  </Step>
</Steps>

<Frame>
  <img src="https://mintcdn.com/invent/93YCEq9LpObqT658/assets/guides/broadcasts-create-type.png?fit=max&auto=format&n=93YCEq9LpObqT658&q=85&s=7bcab490c6ec6b890a7543b9de6b20a4" alt="Create Broadcast dialog with a name field and a choice between Marketing and Transactional types" style={{ maxHeight: '400px' }} width="1172" height="1184" data-path="assets/guides/broadcasts-create-type.png" />
</Frame>

The broadcast opens in **Draft**. The sections you configure depend on the type: marketing broadcasts have an **Audience**, transactional broadcasts have a **Send** section. Both share **Channels** and **Variables**.

## Channels

Channels determine how your message is delivered. Every broadcast needs at least one, and you can add several to reach contacts across platforms in a single broadcast.

<Frame>
  <img src="https://mintcdn.com/invent/Si8CtKN6BSzw7_Wo/assets/guides/broadcast-channels.png?fit=max&auto=format&n=Si8CtKN6BSzw7_Wo&q=85&s=7217db3ccc41562eef8e0bea1e01652f" alt="Channels section of a broadcast" style={{ maxHeight: '400px' }} width="1560" height="254" data-path="assets/guides/broadcast-channels.png" />
</Frame>

### Available channels

| Channel | Description |
| - | - |
| **WhatsApp** | Send messages via approved WhatsApp Templates |

<Info>
  More broadcast channels are coming soon.
</Info>

Follow the channel guide to set up and configure it:

<CardGroup cols={2}>
  <Card title="WhatsApp" icon="whatsapp" iconType="brands" href="/guides/broadcasts/channels/whatsapp">
    Set up WhatsApp Templates and configure the channel
  </Card>
</CardGroup>

### Adding multiple channels

After your first channel, click **+ Add Channel** to add another. Each channel is configured independently with its own template and settings, so a single broadcast can reach contacts on several platforms at once.

<Frame>
  <img src="https://mintcdn.com/invent/Si8CtKN6BSzw7_Wo/assets/guides/broadcasts-channels-configured.png?fit=max&auto=format&n=Si8CtKN6BSzw7_Wo&q=85&s=5a9feaea8f985b0fac333158e4a8c690" alt="A broadcast with multiple channels configured" style={{ maxHeight: '400px' }} width="1536" height="490" data-path="assets/guides/broadcasts-channels-configured.png" />
</Frame>

### Editing a channel

After a channel is added you can:

* Click **Edit** to change the template, variables, or settings.
* Click **x** to remove the channel.

Editing reopens the full dialog with your previous settings, a **Remove channel** button, and **Save Changes**.

<Note>
  Channels can only be edited while the broadcast is in Draft.
</Note>

## Variables

Every field a channel exposes is a variable with a name: a WhatsApp template's placeholders (`body_1`, or `body_customer_name` on a named template), an email `subject` or `body`, an SMS `message`. Nothing has to be declared. Three rules cover it all:

| Rule | What it means |
| - | - |
| **A slot is a variable** | It exists because the template exists. The **Variables** section lists every slot with the channel it belongs to. |
| **What you see is the default** | A WhatsApp slot opens prefilled with the template's own sample value. Whatever is in the editor goes out. Change it there or straight from the **Default value** column. `{{name}}` in a slot means the contact's name. |
| **Override by name** | A send or an import that carries the name replaces the slot for that recipient. Leave it out and the default goes out. |

<Info>
  Pick a template and it is ready to send. Change a default only when you want a different one, and pass values only for the recipients that need their own. Email and SMS channels are not generally available yet; their slots apply once they ship.
</Info>

### Your own variables

Click **+ Add variable** to add a name of your own with a default, for example `coupon` with `SAVE10`. Use it in any channel as `{{coupon}}`, and pass it by name on a send or in an import when a recipient needs a different value. A variable no channel uses yet stays listed under **Not used**, ready for an API send that fills it.

<Frame>
  <img src="https://mintcdn.com/invent/CxeZuG7nryJt1Ywv/assets/guides/broadcasts-properties.png?fit=max&auto=format&n=CxeZuG7nryJt1Ywv&q=85&s=262c658c4fc9152538a33b69ae7789a8" alt="Variables card with the template slots, a custom variable and the contact variables" style={{ maxHeight: '400px' }} width="1560" height="844" data-path="assets/guides/broadcasts-properties.png" />
</Frame>

### Importing values

For marketing broadcasts, you can give each contact its own values from a spreadsheet. Name a column like a variable (`body_1`, `coupon`) and it fills it for every row. The **Import values** row sits at the bottom of the **Variables** section:

<Steps>
  <Step title="Click Import values">
    The import dialog opens with a file upload area.
  </Step>

  <Step title="Upload your file">
    Drag in a **.csv**, **.xlsx**, **.xls**, **.numbers**, or **.ods** file with a column to identify recipients (email or phone) and a column for each variable.

    <Tip>
      Click **Download sample CSV** for a correctly formatted template.
    </Tip>
  </Step>

  <Step title="Map the columns">
    Map each column from your file:

    * **Recipient identifier**: map at least one column to **Email** or **Phone** so Invent knows which contact each row belongs to.
    * **Slots**: a column whose header matches a slot name is matched for you. Every slot of every channel is offered, so an email `subject` and a WhatsApp `body_1` can come from the same file.
    * **Skip column**: anything unmatched is skipped.
  </Step>

  <Step title="Import">
    Click **Review**, then **Import**. A success message confirms how many values were imported.
  </Step>
</Steps>

<Frame>
  <img src="https://mintcdn.com/invent/CxeZuG7nryJt1Ywv/assets/guides/broadcasts-import-values.png?fit=max&auto=format&n=CxeZuG7nryJt1Ywv&q=85&s=3d6ba5eb4b7436cf3cfb65684f36932f" alt="Import values dialog matching columns to variables" style={{ maxHeight: '400px' }} width="1344" height="966" data-path="assets/guides/broadcasts-import-values.png" />
</Frame>

<Note>
  Transactional broadcasts do not import values up front. Their per-recipient values arrive with each [trigger](/guides/broadcasts/transactional#variables) instead.
</Note>

### Using variables in templates

Write a variable anywhere in a channel as `{{name}}`, with no spaces inside the braces:

```
Hi {{first_name}}, your order {{order_number}} ships tomorrow.
```

Typing `{{` opens a picker with the contact variables (`name`, `first_name`, `last_name`, and the channel identifier such as `phone` or `email`) and your own. A name you write that does not exist yet shows up in the **Variables** section as **Missing default**; give it a default there and it becomes a variable of the broadcast. The broadcast cannot be sent or activated while a variable it uses has no default.

Contact variables always win: a value named `name` can never override the contact's name. The older `{{properties.coupon}}` form keeps working.

## Broadcast statuses

| Status | Applies to | Description |
| - | - | - |
| **Draft** | Both | Being configured, not sent yet. All sections are editable. |
| **Scheduled** | Marketing | Queued to send at a future time, with a live countdown. |
| **Sending** | Marketing | Currently being delivered. Cannot be edited. |
| **Sent** | Marketing | Fully sent. Analytics and tracking are available. |
| **Active** | Transactional | The endpoint is open and sending when called. |
| **Paused** | Transactional | The endpoint is closed and new sends are rejected. Configuration is preserved. |
| **Cancelled** | Marketing | A legacy status kept for older broadcasts. Cancelling a send now returns the broadcast to Draft. |
| **Failed** | Marketing | Something went wrong during delivery. Fix the issue and re-send. |

## Duplicating a broadcast

To reuse a setup, open the three-dot menu on any broadcast and select **Duplicate**. This creates a copy in Draft with "(Copy)" appended. It keeps the audience (all contacts, segments, or imported contacts) or trigger, the channels, and every variable with its default. The per-recipient values from an import are not copied: import them again on the copy.

## Next steps

<CardGroup cols={2}>
  <Card title="Marketing Broadcasts" icon="bullhorn" href="/guides/broadcasts/marketing">
    Audience, scheduling, and analytics for bulk sends
  </Card>

  <Card title="Transactional Broadcasts" icon="bolt" href="/guides/broadcasts/transactional">
    API triggers, variables, and the live endpoint
  </Card>

  <Card title="WhatsApp" icon="whatsapp" iconType="brands" href="/guides/broadcasts/channels/whatsapp">
    Set up WhatsApp Templates and configure the channel
  </Card>

  <Card title="Audience" icon="users" href="/guides/audience">
    Manage contacts and build segments for targeting
  </Card>
</CardGroup>


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