# WhatsApp broadcasts (/docs/whatsapp/broadcasts)

> Send an approved WhatsApp template to a list of contacts, review the cost before launch, and let the agent answer the replies.

A broadcast sends one approved [template](/docs/whatsapp/templates) to many contacts, from a CSV or your CRM. The agent can answer the replies.

Plans include 1,000 (Jump Starter), 2,000 (Early Deployers) or 10,000 (Growth) broadcast messages a month.

## Before you start [#before-you-start]

* A [connected](/docs/whatsapp/import-number) number with an approved template.
* For replies, an agent under **Answered by** on the number card.
* Enough wallet balance.

## Create a broadcast [#create-a-broadcast]

  
    ### Start a broadcast [#start-a-broadcast]

    In the sidebar, open **WhatsApp broadcasts** and click **New broadcast**.
  

  
    ### Choose where contacts come from [#choose-where-contacts-come-from]

    Pick **Upload a CSV** or **Receive contacts by webhook** (from your CRM or app). For webhooks, **Send as contacts arrive** messages each one right away; leave it off to review first.
  

  
    ### Name it and pick the number [#name-it-and-pick-the-number]

    Enter a **Broadcast name** and pick the **WhatsApp number**.
  

  
    ### Pick the template [#pick-the-template]

    Pick an approved template. If it has a media header, add the file.
  

  
    ### Choose the mode [#choose-the-mode]

    * **Broadcast only**: no agent replies.
    * **Broadcast + AI replies**: the number's agent answers replies.
  

  
    ### Create it [#create-it]

    Click **Create broadcast**. It opens as a draft.
  

## Add contacts [#add-contacts]

To add more later, open **More actions** (three dots) and click **Add contacts**.

  
    ### Prepare the file [#prepare-the-file]

    Include a `phone_number` column with the country code (for example `+919876543210`), plus a column for each template value, such as `name`.
  

  
    ### Upload the file [#upload-the-file]

    Click **Choose a CSV file** and pick your file.
  

  
    ### Map the template variables [#map-the-template-variables]

    Set each variable to **Dynamic** (a column from your file) or **Static** (the same for everyone).
  

  
    ### Import [#import]

    Click **Import contacts**.
  

For webhooks, **Webhook integration** shows the endpoint, request format and a sample cURL.

## Review and launch [#review-and-launch]

1. Check the contact count. Invalid numbers and duplicates are left out (**See them**).
2. Check **Estimated cost**, **Balance after**, and **Sends today** (your [messaging limit](/docs/whatsapp/how-it-works#quality-rating-and-messaging-limits)).
3. Optional: **Send test** to your own number.
4. Click **Launch**.

Contacts over today's messaging limit wait until it resets.

## Follow progress and replies [#follow-progress-and-replies]

The broadcast shows **Delivered**, **Read**, **Replied** and **Failed**. Click one to filter the list.

* Click a contact to open their chat.
* Replies also appear in the number's [chat inbox](/docs/whatsapp/inbox) under **Campaign replies**.
* **Handled by your team**: skipped because your team had taken over their chat.
* **Opted out**: see [Opt-outs](/docs/whatsapp/how-it-works#opt-outs).

## Pause, resume, and finish [#pause-resume-and-finish]

* **Pause** and **Resume** anytime.
* **Out of balance:** it pauses. Top up and it resumes.
* **Number stopped sending:** it pauses and resumes on its own once the number works again.
* **Monthly allowance used:** it pauses and resumes on the 1st, or right away if you upgrade. Only messages that went out count.
* Webhook broadcasts stay open. When done, **More actions → Mark as completed**.