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

# WhatsApp Campaigns

> Send outbound WhatsApp blasts using approved Meta templates. Pick a template, map its variables to your audience CSV, schedule the send, and watch delivery and reply rates land in the agent's Chat Conversations inbox.

<Note>
  WhatsApp Campaigns is for **Text and Hybrid agents only**. Voice-only agents don't see this sidebar item. The page lives at `/agents/{agentId}/whatsapp-campaigns`.
</Note>

## When to use this

This is the surface for one-off WhatsApp blasts to lists of customers: order-shipped notifications, appointment reminders, end-of-month promos, abandoned-cart nudges, retention pushes. Every message uses a WhatsApp Business template that Meta has already approved.

The page does not replace your agent's normal inbound flow, it complements it. The agent still answers customers who write in. This is the **outbound** lane.

## Sub-tabs

Three sub-tabs collapse-in under the **WhatsApp Campaigns** sidebar item, behind a chevron toggle:

| Sub-tab       | What's in it                                     |
| ------------- | ------------------------------------------------ |
| **Campaigns** | Active and historical campaigns                  |
| **Archived**  | Campaigns you've archived                        |
| **Deleted**   | Soft-deleted campaigns. Recoverable for 30 days. |

## Campaigns table

The main table of campaigns. Columns:

| Column       | What it shows                                                            |
| ------------ | ------------------------------------------------------------------------ |
| **Name**     | The campaign name you chose                                              |
| **Template** | The approved Meta template the campaign sends                            |
| **Audience** | Segment label + count (e.g. *VIP customers, 1,247*)                      |
| **Status**   | One of: **Draft**, **Scheduled**, **Sending**, **Completed**, **Failed** |
| **Sent**     | How many messages went out (with percent of audience)                    |
| **Read**     | How many were opened (delivery + read receipt)                           |
| **Replied**  | How many recipients responded                                            |
| **Created**  | When the campaign was created                                            |

Click any row to open the detail drawer for that campaign.

### Status chips

| Status        | Color         | Meaning                                      |
| ------------- | ------------- | -------------------------------------------- |
| **Draft**     | Muted         | Saved but not yet scheduled                  |
| **Scheduled** | Blue          | Scheduled to send at a future time           |
| **Sending**   | Amber + pulse | Currently delivering                         |
| **Completed** | Green         | Send finished                                |
| **Failed**    | Red           | Something went wrong, see drawer for details |

### Toolbar

Above the table:

* **Search box** , matches campaign name and template name. Capped at 120 chars.
* **Status filter** , multi-select pills.
* **+ New Campaign** button on the end.

### Bulk actions

Tick rows in the table to enter bulk mode. Bulk actions: **Pause** (only on Sending campaigns), **Archive** (with confirm), **Delete** (red confirm).

## Detail drawer

Click any campaign row to slide a drawer in from the end edge.

### Header

* Campaign name
* Status pill
* Template name in monospace
* Created and Last updated timestamps

### Progress section

Real-time progress bar with counts: **Sent / Audience size**, **Delivered**, **Read**, **Replied**, **Failed**. Each metric has a percentage. The progress bar is live for **Sending** campaigns, frozen for **Completed**.

### Recipients table

A paginated table of every recipient with their delivery state:

| Column           | Content                                                          |
| ---------------- | ---------------------------------------------------------------- |
| Phone            | The recipient's phone number                                     |
| Status           | Pending / Sent / Delivered / Read / Failed                       |
| Mapped variables | Each template variable's resolved value for that recipient       |
| Reply            | First reply preview, with a button to open the full conversation |

### Replies stream

A scrollable card showing the recent replies as they come in. Each reply has a **View Conversation** button that deep-links into [Chat Conversations](/en/Systems/AI-Agents/Manage-Agent/Chat-Conversations) with the conversation pre-selected.

### Footer actions

* **Pause** , for Sending campaigns only
* **Duplicate** , clones the campaign as a new Draft
* **Archive** , confirmation, moves to Archived
* **Delete** , red confirmation, moves to Deleted

## Create a campaign

Click **+ New Campaign** to open the multi-step wizard. Five steps:

<Steps>
  <Step title="Pick a template">
    A list of every approved WhatsApp Business template on your account. Each template card shows the template name, language, category (Marketing / Utility / Authentication), preview of the body text, and the list of variables it expects.

    Only templates that Meta has explicitly approved can be sent. Pending or rejected templates are excluded.
  </Step>

  <Step title="Map variables">
    The template's variables (e.g. `{{1}}` `{{customer_name}}`, `{{order_id}}`) are listed as input fields. For each variable you can:

    * Map to a column in your audience CSV.
    * Pick from saved segments' columns.
    * Hardcode a single value used for everyone.
  </Step>

  <Step title="Choose audience">
    Two ways to pick recipients:

    * **Upload CSV** , drop a `.csv` file with a `phone` column plus any variable columns you mapped in step 2. Bilingual sample CSVs are linked under the upload zone for reference.
    * **Saved segment** , pick from segments you've defined elsewhere in Wittify.

    The audience size shows live as you upload. Phone numbers are validated for E.164 format, invalid rows are flagged.
  </Step>

  <Step title="Schedule">
    * **Send now** , the campaign starts as soon as you confirm in step 5.
    * **Schedule for later** , pick a date and time. The time is relative to the recipient's timezone (when known) or your account's default timezone.
  </Step>

  <Step title="Review and launch">
    A preview card shows the rendered template against the first row of the audience. Confirm the variables resolved correctly, click **Launch Campaign**.

    A toast reads *Campaign scheduled* (if you picked a future time) or *Campaign launched* (if Send now). The campaign joins the table with its initial status.
  </Step>
</Steps>

## Replies route to Chat Conversations

When a recipient replies to a campaign message, the conversation opens in [Chat Conversations](/en/Systems/AI-Agents/Manage-Agent/Chat-Conversations) under the WhatsApp tab. The agent picks up the thread automatically using the same prompt and knowledge base it uses for inbound traffic. There's nothing to wire here, just open the conversation in the inbox.

## Compliance and limits

* Only **approved Meta templates** can be sent. Free-form messages are not allowed by Meta outside the 24-hour customer service window.
* The agent honors **STOP** / opt-out keywords automatically. A recipient who replies STOP gets removed from future campaign audiences.
* Audience CSV uses **UTF-8 with BOM** for Arabic compatibility, same rules as the [Knowledge Base](/en/Systems/AI-Agents/Wizard/Knowledge-Base) CSVs.
* Meta's pacing rules apply, large campaigns are spread across hours per Meta's per-account limits.

## Common questions

<AccordionGroup>
  <Accordion title="My template doesn't appear in the picker.">
    Two checks: (1) it's approved by Meta (Pending and Rejected templates don't show), (2) it's in the same WABA you connected in [Deployment](/en/Systems/AI-Agents/Wizard/Deployment). Templates are scoped to the WhatsApp Business Account.
  </Accordion>

  <Accordion title="My audience CSV upload says '5 invalid phone numbers'.">
    The phone column must be in E.164 format (e.g. `+966500000000`). Edit the rows in your spreadsheet and re-upload. Invalid rows are skipped on launch, they don't stop the rest of the campaign.
  </Accordion>

  <Accordion title="A recipient replied but the conversation didn't show up in Chat Conversations.">
    Two checks: (1) WhatsApp is connected in Deployment with the same number you sent the campaign from, (2) the agent is **Active**. If both are true, the conversation should appear within seconds. If it doesn't, refresh the inbox.
  </Accordion>

  <Accordion title="Can I edit a Scheduled campaign?">
    Yes. Open its drawer, click **Edit**, you'll re-enter the wizard with all your settings preserved. Save to return to Scheduled. You can't edit a Sending or Completed campaign.
  </Accordion>

  <Accordion title="The Sending status froze at 60%.">
    Meta paces large campaigns to protect inboxes. The campaign hasn't failed, it's spreading the send across the platform's allowed window. Check back in an hour or two.
  </Accordion>
</AccordionGroup>

## Next

<CardGroup cols={2}>
  <Card title="Outbound Voice Campaigns" icon="phone-arrow-up-right" href="/en/Systems/AI-Agents/Manage-Agent/Outbound-Voice-Campaigns">
    The voice equivalent for voice + hybrid agents.
  </Card>

  <Card title="Chat Conversations" icon="messages" href="/en/Systems/AI-Agents/Manage-Agent/Chat-Conversations">
    Where campaign replies land.
  </Card>
</CardGroup>
