A campaign is always a template send, because most of the audience will be outside the 24-hour window. The page address (
/channels/whatsapp/broadcasts) and the public API (POST /v1/broadcasts) still use the older word broadcast. They mean the same thing.Starting a campaign
New campaign first asks How do you want to reach people? Nothing is created until you pick a row.
The wizard has five steps: Name → Template → Audience → Content → Review & send. The rail at the top shows a one-line summary of each step you have finished, and you can click back to any step you have reached.
Name
Give the campaign a name, up to 120 characters — only your team sees it. Suggestions such as “Diwali offer” fill it in with one click. Continue (or Enter) moves on.Template
Pick from your approved templates. Each card shows the name, Meta category, body and language. If the list is empty, create one first: Message templates. Changing the template later clears every value you filled in for the old one — variables, header media, button values, carousel cards. Those are keyed to one template’s shape, so carrying them across would send the wrong things.Audience
Re-target a campaign offers campaigns that actually went out (the latest 50) and three outcomes: Didn’t reply (reached, never wrote back), Didn’t open (delivered, never read) and Failed to deliver (a retry rather than a nudge). Nobody who already replied is included.
Build a filter
A filter is a set of rules — the same rules a dynamic segment uses: tag, phone number, source, name, email, company, when the contact was created, and your custom fields — without saving it as a segment. Add filter adds a rule; with more than one, choose whether contacts must match all of these or any of these.- A rule with a missing field, operator or value is ignored, and the builder says how many are unfinished.
- A filter with no finished rule reaches nobody, never everybody, so Next stays disabled until at least one rule is complete.
- The filter is saved with the campaign. A scheduled or repeating campaign applies it again each time it sends.
Exclusions
Exclude contacts with these tags and Exclude contacts in these segments apply to every audience type. “Everyone except last month’s buyers” is the shape most suppression lists take.Who is always skipped
- Contacts who have opted out of marketing — see Opting out. There is no way to include them.
- Contacts with no phone number, such as an Instagram-only contact.
Content
This step collects everything the template needs at send time. Next stays disabled until it is complete, with a list of what is still missing — WhatsApp rejects the whole message when one value is missing, so the campaign would fail for everyone.Variables
Each placeholder gets a Mapping Type:
A Contact Field or Custom Field mapping has an optional fallback: If a contact has no …, send this instead. Without one, a contact whose field is empty gets nothing — WhatsApp refuses a message with an empty variable, so their send fails and the report names the variable. The fallback is empty by default on purpose: inventing a value is how “Hi Customer” reaches a customer you know by name. Review & send counts how many contacts each variable is empty for.
Header, location, cards and buttons
These are the same for everyone in the audience:- Header media — a public link, or Library to pick from the media library.
- Header text — the value for a text header’s variable. Required.
- Location header — latitude, longitude, place name and address, all four.
- Carousel cards — media for every card, every send, plus each card’s own values.
- Buttons — every button on the template is listed with its type: Quick reply, Call, Copy code, Link · fixed or Link · fill in per campaign, and a link’s URL is shown in full. Only a link ending in a variable can change per campaign; a fixed link was frozen when Meta approved the template and cannot be changed by anyone. A link pointing at a placeholder address such as
example.comis flagged in red — customers would land on a dead page, and the only fix is a replacement template.
Values WhatsApp refuses
A static value, a fallback, the header text or a button value is refused on the spot if it contains a line break, a tab or four or more spaces in a row, or is longer than 1024 characters. Watx does not strip these for you, because that would send a message you did not write.The preview
From the Audience step onward a Preview sits beside the form (below it on narrower screens) and draws the whole message — header, body, footer and buttons — filled in with the details of your newest contact that has a phone number, and says whose. A placeholder that is still unfilled stays visible as{{1}} with a Still unfilled warning. A carousel is not drawn; check its card fields instead.
Review & send
- Campaign — the name, with Rename.
- When should it go out? — Send now, Schedule (once, at a date and time) or Repeat (daily, weekly or monthly). See Scheduled and repeating campaigns.
- Summary — template, language, the audience in words, and how many people it reaches, counted by Watx for every audience type: Will reach for a send now, Would reach today for a schedule or repeat, because the audience is worked out again when it sends. Opted-out contacts that were skipped are counted beside it.
- Empty variables — “At least N of these M contacts will be skipped”, with how many contacts each variable is empty for. It is a lower bound, because one contact can be missing two fields. Go back and add a fallback to include them, or send anyway to everyone else.
- The messaging limit card warns when the audience looks larger than your remaining daily allowance (not shown for Repeat). It never blocks.
What Watx checks before anything is sent
When you send, schedule or start repeating, Watx checks on the server — before any recipient is written — that:- the campaign has a name and WhatsApp is connected;
- the message can actually be built from the template and your values. A missing header value, a carousel card without media, an incomplete location pin or a link button without its value refuses the whole campaign with the reason, for example
Header text variable {{1}} requires a value; - the audience is not empty, with the reason if everyone in it has opted out;
- your plan’s remaining monthly messages cover the whole audience — see Plan limits.
Drafts
Save as draft, on the Review & send step, keeps the template, the audience and every value. Drafts are listed in the Drafts tab. Continue editing reopens the wizard filled in, and the button becomes Update draft. Sending or scheduling a draft replaces it. If the draft’s template is no longer approved, the wizard says so and asks you to pick another.Duplicating
Duplicate — in a row’s menu or on a campaign’s page — opens the wizard with the same template, audience and values, named ”… (copy)”. Use it to send something again, or to change a scheduled or repeating campaign.Opting out
A contact who has opted out is skipped by every campaign, scheduled and repeating ones included. Replies in the inbox, order updates, receipts and other messages still reach them. A contact opts out when they:- type a stop word on its own —
STOP,UNSUBSCRIBE,UNSUB,OPTOUT,OPT OUT,CANCEL,QUIT,ENDorSTOPALL, or the Hindiband karo,band karein,बंद करोorरोको. Case and surrounding punctuation are ignored, but the whole message must be the word: “please stop sending me the wrong size” is not an opt-out. - tap a quick-reply button whose label begins with Stop, Unsubscribe, Opt out, No more or Mute — for example the Stop promotions button on the starter templates.
START, SUBSCRIBE, RESUBSCRIBE, UNSTOP, OPTIN, OPT IN or YES on its own, or by tapping a button beginning Subscribe, Resubscribe, Start or Opt in. A member can also use Opt out / Resubscribe on the contact — see Marketing consent — and an automation step can do either. Watx sends no confirmation by itself; Opt-outs and consent shows how to send one with an automation.
When WhatsApp blocks marketing on its own side
WhatsApp also lets a person stop marketing messages from a business inside the WhatsApp app. Meta keeps that choice and does not tell Watx, so the contact is not marked opted out here. Your replies still reach them, but Meta refuses your marketing templates, and they show as Failed in every campaign — often with nothing more than Meta’s error code. If a contact keeps failing on marketing campaigns while chatting with you normally, this is the likely cause: click Opt out on their contact so campaigns stop including them.After you press send
The campaign is accepted, then fanned out into one send per recipient.
Per-recipient status is the ladder Meta reports — Pending → Sent → Delivered → Read — plus Replied when the person writes back, and Failed with the reason.
Sending is paced at around 10 messages a second by default; on a coexistence number it never exceeds Meta’s 20 per second. A throttle from Meta or a network failure is retried with a growing delay. A rejection on the merits — an unapproved template, a bad parameter, a number that cannot receive templates — is recorded and never retried, because it would fail the same way every time. If the server restarts mid-send, only the recipients still pending are sent.
Reading a failure
The Error column shows Meta’s own explanation when it gives one. When Meta gives only a short message, its code is added, for exampleInvalid parameter (WhatsApp code 100) — look the code up in Meta’s error code reference. Failures Watx records itself include Contact opted out of marketing, No phone number on contact, Invalid phone number, and an empty variable named by its number.
The Campaigns page
Scheduled and Repeating are covered in Scheduled and repeating campaigns. A search box filters every tab by name or template. History also filters by status: All statuses, Sending, Sent, Failed, Cancelled. A failed campaign shows its reason under its name; a send made by a repeating campaign shows Repeats · and that campaign’s name.
Row menus offer Open, Duplicate and, once a campaign is no longer queued or sending, Delete; a draft offers Continue editing. The page refreshes on its own while anything is sending, and shortly before a scheduled campaign is due.
The campaign report
Opening a campaign shows six counters — Recipients, Sent, Delivered, Read, Replied, Failed — a Funnel, and the recipient list (Contact, Phone, Status, Sent, Delivered, Read, Error) with a status filter. Export CSV downloads every recipient. Under the funnel, Follow up with: offers N who didn’t reply, N who didn’t open and Retry N failed. Each opens the wizard with that re-target audience already chosen. The top of the page also says when a scheduled campaign sends (with Send now and Cancel), why a failed one did not go out, when a cancelled one was cancelled, that a draft is a draft (with Continue editing), and which repeating campaign a send belongs to. Counters appear once a campaign has started sending.Plan limits
Campaigns and messages count against your plan. Before a campaign is written, Watx checks that the whole send fits in the month’s remaining message allowance, so a large audience cannot start and run out three-quarters of the way through. If it does not fit, the send is refused with the numbers. A message counts once Meta accepts it. See Plans and billing.Related
- Scheduled and repeating campaigns — sending later, or on a schedule.
- Message templates — what a template needs at send time.
- Analytics — campaign and template performance over a date range.
- Segments — building the audiences you send to.