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

# Create a Campaign

> Send an approved template to a group of contacts — manually, by group, or by filter.

This guide walks you through creating a standard campaign from start to finish.

<Note>
  Before you start, make sure you have at least one **Meta-approved template** and a list of **opted-in contacts**. See [Create a Template](/templates/create-template) and [Import Contacts](/contacts/import-csv) if you haven't done these yet.
</Note>

## Open the create-campaign screen

From the left sidebar, go to **Campaigns → All Campaigns**, then click **New Campaign**.

## Step 1 — Pick a template

<Steps>
  <Step title="Choose your template">
    Start typing in the template dropdown, or browse the list. Only templates in **Approved** status can be used.
  </Step>

  <Step title="Review the template preview">
    A live preview appears on the right showing exactly how the message will look on WhatsApp, including header media and buttons.
  </Step>

  <Step title="Fill in variables (if any)">
    If your template has placeholders like `{{1}}` or `{{name}}`, you'll see a field for each one. You can either:

    * Enter a static value that applies to every recipient, or
    * Map the variable to a **contact field** (like first name, custom field, etc.) so each recipient gets a personalised value.
  </Step>
</Steps>

<Tip>
  Mapping to a contact field is the single biggest win for engagement. A message starting with "Hi Alex" outperforms "Hi customer" by a wide margin.
</Tip>

## Step 2 — Select recipients

You have four ways to choose who receives the campaign:

<Tabs>
  <Tab title="All contacts">
    Send to every opted-in contact in your workspace. Use with care — this can be a large send and consumes messaging tier quickly.
  </Tab>

  <Tab title="Groups">
    Pick one or more **contact groups** you've already built. This is the most common method.
  </Tab>

  <Tab title="Filtered">
    Build an ad-hoc segment using filters: group, status, source, custom field, opt-in date, etc. Xobito shows a live recipient count as you adjust filters.
  </Tab>

  <Tab title="Manual selection">
    Tick individual contacts from the contacts list. Best for small, targeted sends.
  </Tab>
</Tabs>

<Warning>
  Xobito automatically excludes unsubscribed contacts, invalid numbers, and contacts marked **Blocked by WhatsApp** from the final recipient list. The count you see on screen is always the **effective** count.
</Warning>

## Step 3 — Preview your message

Before sending, click **Preview** to see the fully-rendered message for a sample of your recipients. Variable substitution is applied so you can verify that names, order numbers, or dates look correct.

<Check>Always send a test to your own number first — you'll catch typos or formatting issues before thousands of people see them.</Check>

## Step 4 — Check the estimated cost

Xobito shows an estimate based on:

* The number of recipients
* The template category (marketing, utility)
* The per-country conversation price from Meta

<Note>
  This is an **estimate**. Final charges are reconciled against Meta's invoices and may vary slightly based on delivery outcomes.
</Note>

## Step 5 — Send now or schedule

<Tabs>
  <Tab title="Send now">
    Click **Send**. The campaign moves to **Sending** status within a few seconds. Xobito paces delivery to stay within Meta's rate limits.
  </Tab>

  <Tab title="Schedule for later">
    Toggle **Schedule**, pick a date and time in your workspace timezone, and click **Schedule**. See [Schedule a Campaign](/campaigns/schedule-campaign) for details on managing scheduled sends.
  </Tab>
</Tabs>

<Note>
  Campaigns dispatch via the `SendCampaignMessageJob` queue worker. Large campaigns enqueue every recipient atomically and process in the background — you can safely close the browser tab once the campaign has been submitted; sending continues on the server.
</Note>

## After you send

The campaign appears in **Campaigns → All Campaigns** with a live status indicator. Click it to open the **details page** where you can watch delivered / read / failed counts update in real time.

See [Track Performance](/campaigns/track-performance) for a full breakdown of the metrics available.

## Common issues

<AccordionGroup>
  <Accordion title="My template isn't in the dropdown">
    Templates only appear when they're in **Approved** status. Check **Templates → All Templates** — if it's still **Pending**, wait for Meta. If it's **Rejected**, edit and resubmit.
  </Accordion>

  <Accordion title="The recipient count is smaller than expected">
    Xobito excludes opted-out, invalid, and duplicate numbers. Open the group or filter and check the **Excluded** tab for the breakdown.
  </Accordion>

  <Accordion title="The cost estimate seems high">
    Marketing templates cost more than utility or service conversations, and some countries have higher per-conversation rates. Switching from a marketing to a utility template (if your content qualifies) is usually the easiest saving.
  </Accordion>

  <Accordion title="Variable preview shows '{{1}}' instead of a value">
    This means the variable isn't mapped to a contact field or a static value. Go back to Step 1 and fill in every variable before sending.
  </Accordion>
</AccordionGroup>

## Next

<CardGroup cols={2}>
  <Card title="CSV campaign" icon="file-csv" href="/campaigns/csv-campaign">
    Upload a spreadsheet with per-row variables.
  </Card>

  <Card title="Schedule a campaign" icon="clock" href="/campaigns/schedule-campaign">
    Queue a send for a later date and time.
  </Card>
</CardGroup>
