A template variable is a promise that something true about this customer will appear in that spot. Kept to one or two meaningful details, variables make a bulk message read like it was written for one person. Stretched across five fields, they make it read like a mail merge, and they are the single most common reason WappBlaster users see a template come back rejected.
How a WhatsApp template variable actually works
In a template body, {{1}}, {{2}} and so on are placeholders filled at send time. Meta also accepts named placeholders such as {{first_name}}, which make long templates easier to maintain because nobody has to remember what {{3}} meant. Either way the reviewer approves the template with the placeholders in it, so the fixed words around them have to carry the meaning on their own.
Variables can appear in three places, and each has its own rules:
- Body: as many as the text can carry, within the placement rules below.
- Header: a text header takes a single variable; a media header takes an image, video or document supplied per send.
- URL button: a dynamic button keeps a fixed base URL and appends a per-recipient ending.
The variable placement rules behind most template rejections
- Not at the start or end. "{{1}}, your order has shipped" is rejected; "Hi {{1}}, your order has shipped" is not. The same applies to the last word of the body.
- Not touching another variable. "{{1}} {{2}}" gives a reviewer no idea what will be sent. Put words between them: "{{1}} for {{2}}".
- Not outnumbering the text. A short template with four variables is read as a blank form that could carry anything, and is rejected as too many parameters for its length. Add context or cut variables.
Variable sample values are part of the template
When you submit, Meta asks for an example value for every variable, and the reviewer reads the template with those examples filled in. "Hi x, your xx is ready" looks like spam. "Hi Priya, your blue cotton kurta (size M) is ready for pickup" looks like what it is. Use real-looking samples from your own data, never "test".
Which details are worth a template variable
Personalisation earns its place when it changes what the customer does next. A useful test: would the message still be accurate with this detail left out? If yes, it probably does not need a variable.
| Worth a variable | Usually not |
|---|---|
| Order number, pickup time, amount due | Company name repeated from the header |
| Product the customer actually viewed | Day of the week |
| Nearest branch or assigned agent | Customer's city when the offer is national |
Dynamic URL button variables in WhatsApp templates
Long or ugly details belong in the button, not the body. A dynamic website button with a base such as https://yourstore.com/orders/ and a per-recipient ending sends each customer straight to their own order, city page or invoice. The base URL must work at review time, so point it at a real page rather than a placeholder domain.
Bad data breaks good template variables
Approval is only half of it. A template that passed review still reads broken when the data behind it is empty: "Hi , your appointment is at" is worse than no personalisation. Before a bulk send, check the fields you map for blanks, all-caps names imported from old systems, and numbers stored as text with stray spaces. In WappBlaster the campaign preview fills the template from real contacts, so a missing field shows up before the send rather than in a customer's chat.
The campaign composer maps contact fields to variables and previews the result per contact. WappBlaster also helps draft and resubmit templates when one is rejected, as part of the flat ₹7999 a year platform fee ($200 outside India). Meta's per-message charge is passed through at cost. More on the sending side is on the bulk WhatsApp sender page.