Template Variables¶
WhatsApp templates can contain numbered placeholders — {{1}}, {{2}} — that are filled in per recipient when a campaign sends. In the wizard's Template step you map each placeholder to a variable.
Available Variables¶
| Category | Variable | Value at send time |
|---|---|---|
| Campaign | Campaign Name (campaign.name) |
The campaign's internal name |
| Campaign | Campaign Description (campaign.description) |
The campaign's description |
| Campaign | Campaign Body (campaign.body) |
Text you enter in the Template step — see below |
| Recipient | Recipient Name (recipient.name) |
The contact's name (from your conversation history or CSV) |
| Recipient | Recipient Phone (recipient.phone) |
The contact's phone number |
| Business | Business Name (business.name) |
Your business name |
| Date & Time | Current Date / Time / Year (current.date / current.time / current.year) |
The date/time the message is sent |
Every placeholder in the template must be mapped before you can continue.
The Campaign Body Pattern¶
Campaign Body is the key to reusing one template across many campaigns.
Getting a new template approved by Meta for every promotion is slow. Instead, get one generic template approved — for example:
Hi {{1}}, {{2}}
Then for each campaign, map {{1}} → Recipient Name and {{2}} → Campaign Body, and type that campaign's message in the Campaign Body field. Same approved template, different message every time.
How the Campaign Body field works¶
- The field appears in the Template step only when at least one placeholder is mapped to Campaign Body — if nothing references it, you're never asked for it.
- While a placeholder references it, the field is required.
- The text is inserted into the mapped placeholder(s) of the approved template. It is never sent as a standalone message.
- The live preview shows your body text in place, so you see the finished message as you type.
graph LR
T["Approved template<br/>Hi {{1}}, {{2}}"] --> M{Placeholder mapping}
M -->|"{{1}} → recipient.name"| R[Per-recipient name]
M -->|"{{2}} → campaign.body"| B[Campaign Body text]
R --> OUT["Hi Priya, 20% off all services this week!"]
B --> OUT
Image Header Templates¶
If your template declares an image header, the template itself doesn't contain the image — the campaign supplies it. Pick an asset from your Media Library (it must have Public visibility) in the Template step. Every recipient receives that image as the message header.
Fixed-Content Templates¶
A template with no placeholders sends its approved text exactly as-is to every recipient. In that case no variables are mapped, no Campaign Body is collected, and the campaign's name and description remain internal-only — they never appear in any message.