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

# WhatsApp campaigns

> A one-off campaign with Meta's own rules layered on top: a template is mandatory, and the free windows rarely help.

A WhatsApp campaign is a [one-off campaign](/campaigns/one-off) sent through a WhatsApp inbox — audience
and scheduling work the same way there. **Completion doesn't** — see below. What's also different is what
Meta lets you send, and what it costs.

<Info>
  **This runs behind an account-level feature flag, off by default.**  It also requires a WhatsApp inbox on the Cloud API
  provider specifically.
</Info>

## A template is not optional — in the dashboard

Free-form text only works inside the 24-hour service window described in [WhatsApp](/channels/whatsapp) — and a campaign, by definition, is you starting contact rather than replying inside one. So every WhatsApp campaign is meant to send a pre-approved **template**, chosen and filled in when you build the campaign. See [Message templates](/channels/templates) for submission and approval.

<Warning>
  **That requirement is enforced by the campaign form, not the backend.** Nothing server-side validates
  that template parameters are actually present. A campaign saved without them doesn't error — the send
  service skips every contact and marks the campaign `completed` having sent nothing at all, silently. If
  a WhatsApp campaign completes with a suspiciously low or zero send count, missing template params are
  the first thing to check.
</Warning>

## Completion lands after the whole audience, not as it starts

<Warning>
  **A WhatsApp campaign only flips from `active` to `completed` once every contact in the audience has
  been processed** — not the moment it starts, the way [SMS and Twilio SMS campaigns](/campaigns/one-off)
  do. If the run is interrupted partway through — a crash, a deploy, anything that stops the job mid-send
  — the campaign is left `active`. Tied's due-campaign scheduler runs every five minutes and doesn't
  distinguish "actively sending" from "never started," so it picks the same campaign back up and sends to
  the audience again, duplicating whatever already went out before the interruption.
</Warning>

## Category sets the price, not just the approval bar

The template's category — Marketing, Utility, or Authentication — determines how strict Meta's review is *and* what the message costs. Utility is free if the recipient happens to already be inside an open 24-hour service window when it arrives; Marketing and Authentication are chargeable regardless. Don't plan a campaign's economics around the free case — a broadcast to a label full of contacts is mostly reaching people outside any open window, which is the entire reason the send needs a template in the first place.

The 72-hour Free Entry Point window works the same way: it's opened by how a customer *reached you* — a Click-to-WhatsApp ad or a Page CTA — not by anything a campaign does on send. It's a lever for your acquisition flow, not for campaign cost directly.

For exact rates by category and country, see [WhatsApp channel fees](/pricing/channel-fees/whatsapp). Campaign sends are billed the same way as any other outbound WhatsApp template message — there's no separate campaign rate.

## Opt-in still has to match the category

The consent rule on the [Campaigns](/campaigns) overview applies at full strength here: someone who opted in for shipping updates has not opted in to a promotion. Sending a Marketing-category broadcast to an audience that only agreed to Utility-category messages is a fast way to damage your number's quality rating, independent of anything to do with cost.

## If a send fails

A delivery failure for one contact is logged and skipped — it doesn't stop the campaign or affect anyone else in the audience.

## Next

<CardGroup cols={2}>
  <Card title="WhatsApp" icon="message-square-more" href="/channels/whatsapp">
    The 24-hour and 72-hour windows this page assumes you've read.
  </Card>

  <Card title="Message templates" icon="file-text" href="/channels/templates">
    Categories, variables, and how approval works.
  </Card>

  <Card title="WhatsApp channel fees" icon="message-circle" href="/pricing/channel-fees/whatsapp">
    Exact rates by category and country.
  </Card>

  <Card title="One-off campaigns" icon="calendar-clock" href="/campaigns/one-off">
    Audience, scheduling, and completion — unchanged for WhatsApp.
  </Card>
</CardGroup>


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