Guide · Templates
Get a message template approved — and into use.
Business-initiated WhatsApp messages must use a pre-approved template, so the template is where every campaign and journey actually begins. This guide covers writing one with clean variables, tracking its lifecycle from draft to approved, recovering from a rejection, and retiring templates that should no longer send.
Why templates gate everything
On the WhatsApp Business Platform, a business can reply freely inside a customer service window, but a message the business starts must match a template Meta has reviewed. ConvoTide follows that model exactly: the send API takes a template name, and campaigns and journeys pick from your template registry. A template is not paperwork — it is the unit of approval your whole outbound motion runs on.
Write for variables
Personalisation uses named variables in double braces, like {{order_id}}. The registry highlights every variable as you type and extracts the same names the backend will use at send time — the preview cannot quietly disagree with the send. Three habits prevent most rework:
- Use descriptive names (
order_id,delivery_date) — you will reuse them across templates. - Keep variable names unique per template; the platform refuses a duplicate template name outright rather than overwriting one.
- Write the fallback sentence as if every variable were blank — because one day one will be.
The approval lifecycle
Every template in the registry has exactly three states, and the transitions are enforced by the server, not by politeness:
- Draft — editable, and not sendable. Drafts cannot be picked by campaigns or journeys, which is the point: nothing unreviewed goes out.
- Approved — usable. Once Meta has reviewed the template content for your business, the template can be selected by campaigns and journeys.
- Retired — terminal. A retired template cannot send again and cannot be un-retired; if you need the wording back, create a new template. History cannot be rewritten, which is what makes the audit trail trustworthy.
Attempting an illegal move (approving a retired template, retiring a draft that was never approved) returns an explicit refusal shown on the template’s own row — never a silent success.
When a template is rejected
A rejection is a loop, not a verdict. The workspace keeps a rejection history per template and pairs each row with a recovery suggestion — phrased as a suggestion, because that is what it is. You make the edit in the template studio and resubmit; the rejections surface deliberately has no “apply fix” button, because a suggested fix applied without a human reading the reason is how the same rejection happens twice.
Putting an approved template to work
- In a campaign: the broadcast flow picks the template by name from approved templates only, then checks audience consent before enqueue. See the preflight guide.
- In a journey: a send step names its template, and the consent check that precedes it is part of the journey’s contract, not an option.
- From your own code: the documented send API accepts a template name with an idempotency key, so a retry never becomes a duplicate. Shapes are in the API documentation.
Limits worth knowing
Content reviewed October 2026 · ConvoTide by Capricorncorp.