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

# Creating a campaign

> The campaign builder step by step — channel, content, audience, schedule and launch — plus the errors you may hit and how to fix each one.

Click **New campaign** on the [campaigns](/campaigns/overview) page and the builder opens. It has five steps, and a numbered indicator across the top shows where you are:

**1 Channel → 2 Content → 3 Audience → 4 Schedule → 5 Review & Launch**

You can go **Back** at any point. Nothing is saved until you leave step 4, and nothing is sent until you press **Launch** on step 5.

## Step 1 — Channel

Give the campaign a **Campaign name** — this is for you, not the recipients. "May promotion" is the placeholder for a reason: name it so you recognise it in the report list months later.

Then pick a channel. Only channels that are currently **Active** appear. With none connected you will see "No active channels. Please connect a channel first." — see [Channels](/channels/overview).

<Warning>
  The channel locks once the campaign has been saved: "The channel can't be changed after the campaign has been saved. Cancel and start a new campaign to send from a different channel."

  Saving happens when you click **Next** on step 4. Up to that point you can change your mind freely; after it, sending the same message on another channel means building a new campaign.
</Warning>

Choosing a WhatsApp channel switches the next step to templates. Every other channel gets a plain text message.

## Step 2 — Content

<Frame caption="The content step, with the message body and the contact parameters you can insert.">
  <img src="https://mintcdn.com/haconsultancy/8jQZZfLAZM_xjJe7/images/campaigns/builder-message.png?fit=max&auto=format&n=8jQZZfLAZM_xjJe7&q=85&s=2a0071f79016c7295528404d46303e86" alt="The campaign builder content step showing a message text area and chips for inserting contact parameters" width="2880" height="1800" data-path="images/campaigns/builder-message.png" />
</Frame>

### Text channels

Write your message in the **Message text** box. Above it is a row of parameter chips:

> Insert a contact parameter — it's replaced per recipient when sending:

| Chip           | Inserts          | Filled with             |
| -------------- | ---------------- | ----------------------- |
| **Full name**  | `{{name}}`       | The contact's full name |
| **First name** | `{{first_name}}` | Their first name        |
| **Email**      | `{{email}}`      | Their email address     |
| **Phone**      | `{{phone}}`      | Their phone number      |
| **Country**    | `{{country}}`    | Their country           |

Click a chip and it drops the parameter in at your cursor. A character counter runs under the box.

<Tip>
  Personalise with **First name** rather than **Full name** — "Hi Sara" reads better than "Hi Sara Al-Amin". Spot-check a few contacts first: a parameter with nothing behind it leaves an awkward gap in the message.
</Tip>

### WhatsApp

WhatsApp campaigns use a template, and the step opens with the reason:

> WhatsApp requires an approved message template for outbound campaigns. Pick one below.

<Steps>
  <Step title="Choose a template">
    The **Template** dropdown lists only templates Meta has **approved**, shown as `name · language · category`. Its body appears below as a **Preview**.
  </Step>

  <Step title="Upload the header media, if the template has one">
    Templates with an image, video or document header show a required upload. The file you upload is used for **every** recipient, so pick something that works for the whole audience.
  </Step>

  <Step title="Map the variables">
    Under **Map variables to contact fields**, every `{{1}}`, `{{2}}` and so on in the template body gets a dropdown: **Contact name**, **First name**, **Email**, **Phone**, **Country** or **Gender**. "Each recipient gets these filled from their contact record at send time."
  </Step>
</Steps>

You cannot move on until a template is chosen, any required header media is uploaded, and **every** variable is mapped. That last rule is not fussiness — Meta rejects a send with an unmapped parameter, so an unmapped variable would mean the whole campaign failing on delivery.

If the dropdown is empty:

* "No approved templates on this channel. Create one in Settings → Channels → Templates." — you need a template approved first. See [WhatsApp](/channels/whatsapp).
* "Could not load templates for this channel." — the channel connection is not answering. Check it under [Managing channels](/channels/managing-channels).

## Step 3 — Audience

<Frame caption="The audience step: conditions that narrow who receives the campaign.">
  <img src="https://mintcdn.com/haconsultancy/8jQZZfLAZM_xjJe7/images/campaigns/builder-audience.png?fit=max&auto=format&n=8jQZZfLAZM_xjJe7&q=85&s=91ba93ee8c1500c70fefc7fa35d74dd8" alt="The campaign builder audience step showing condition rows for country, tag and age" width="2880" height="1800" data-path="images/campaigns/builder-audience.png" />
</Frame>

The step opens with its own explanation:

> All active contacts on the selected channel receive this campaign. Add conditions below to narrow the audience — they are AND-combined.

Leave it empty and every contact with an address on the channel is included. Add conditions and each one narrows the set further — **all** of them must be true for a contact to be included.

| Field                     | Operators          | Example                                      |
| ------------------------- | ------------------ | -------------------------------------------- |
| **Name / email contains** | contains           | Everyone whose name or email contains `acme` |
| **Country (ISO-2)**       | equals, not equals | Country equals `SA`                          |
| **Age**                   | at least, at most  | Age at least 25                              |
| **Tag**                   | has tag            | Has tag **VIP**                              |
| **Opted out**             | is                 | Opted out is false                           |

<Note>
  Several **Tag** conditions combine with AND, not OR: "has tag VIP" plus "has tag Riyadh" means contacts carrying **both** tags. To reach either group, either send two campaigns or add a single tag that covers them.
</Note>

Opted-out contacts are excluded whatever you set here — an **Opted out is false** condition changes nothing, and setting it to true still sends to nobody.

You can always continue from this step; the audience is only counted on the last one.

## Step 4 — Schedule

<Frame caption="The schedule step, with the optional send time and the sending rate.">
  <img src="https://mintcdn.com/haconsultancy/8jQZZfLAZM_xjJe7/images/campaigns/builder-schedule.png?fit=max&auto=format&n=8jQZZfLAZM_xjJe7&q=85&s=b5694dc705997f3bac285423f7235551" alt="The campaign builder schedule step showing a date and time picker and a throttle field" width="2880" height="1800" data-path="images/campaigns/builder-schedule.png" />
</Frame>

**Scheduled for (optional, your local time)** — pick a date and time to send later:

> Leave empty to send immediately when you launch. Times are in your device's local time zone.

A time in the past is refused with "Pick a time in the future."

**Throttle (messages / minute)** — how fast the campaign sends. The default is **60**, and it accepts anything from 1 to 1000.

<Tip>
  The throttle is not only about provider limits — it is about your team. A campaign that lands 3,000 messages in a minute produces replies faster than anyone can read them. Slowing it to 60 a minute spreads the replies over an hour.
</Tip>

Clicking **Next** here saves the campaign as a draft. Going **Back** and forward again updates that same draft rather than creating another, so you will not end up with duplicates. Leaving the builder with unsaved changes prompts you first.

## Step 5 — Review & Launch

The last step summarises everything: **Name**, **Channel**, **Content**, **Schedule** ("Send immediately" when you left it blank), **Throttle**, and **Estimated audience** — a count of the contacts who currently match.

Read the audience number before anything else. It is the single best check that your filters and channel addresses are what you think they are.

If it comes out at zero:

> No contacts match the current filter. Launching now will send to nobody.

**Launch** stays disabled until you tick **Launch anyway, even though nobody will receive it**. Usually the right move is to go back and find out why — most often the contacts have no address on the chosen channel.

Two buttons finish the builder:

* **Save as draft** — stores it and takes you to its report. Launch it later from there or from the list.
* **Launch** — confirms first: "This will message \~N contacts in '\<name>'. This can't be undone once sending starts."

A scheduled campaign moves to **Scheduled** and waits. An unscheduled one starts **Sending** straight away.

## Errors you may hit at launch

Callivox checks the campaign again at launch, because things can change between building it and sending it.

| What you see               | What it means                                                                                                   | How to fix it                                                                           |
| -------------------------- | --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- |
| Campaign already launched  | It has already been sent or is sending.                                                                         | Open the report to see how it is going. To send again, build a new campaign.            |
| Channel not active         | The channel was disconnected or broke since you built the campaign.                                             | Reconnect it under [Managing channels](/channels/managing-channels), then launch again. |
| WhatsApp requires template | The campaign is on WhatsApp but is not set to send a template.                                                  | Go back to **Content** and pick an approved template.                                   |
| Audience empty             | Nobody matches — usually because no contact has an address on this channel, or everyone matching has opted out. | Loosen the conditions, or add channel addresses to the contacts.                        |
| Voice agent required       | A voice campaign has no voice agent assigned.                                                                   | Assign one — see [Voice agents](/voice-agents/overview).                                |

## Next steps

<CardGroup cols={2}>
  <Card title="Campaign reports" icon="chart-simple" href="/campaigns/campaign-reports">
    Watch it send, and read what happened.
  </Card>

  <Card title="Managing contacts" icon="address-book" href="/contacts/managing-contacts">
    Tags, channel addresses and opt-out — the three things an audience depends on.
  </Card>
</CardGroup>
