What it means
WhatsApp message templates are pre-approved by Meta in their final wording, but they can include placeholder variables (often written as double-brace numbered slots, or named variables) that get filled in at send time with per-recipient values. A template like 'Hi NAME, your appointment on TIME is confirmed' becomes 'Hi Sarah, your appointment on Friday 3pm is confirmed' when sent.
Variables can be passed in from your CRM, your booking system, or any data source connected to your messaging platform. Each variable is escaped automatically by Meta's rendering layer, so injection attacks are not a concern.
Why it matters
Without variables, a template either has to be generic ('Your appointment is confirmed', with no detail) or you would need to submit a separate template for every variation. Variables collapse that combinatorial mess into one approved template that handles all the personalisation at runtime.
The discipline: variables are limited to what Meta calls them at template approval time. You cannot decide later that a template needs a third variable; you have to resubmit the template for re-approval.
Example
A clinic submits one appointment-reminder template with three variables: patient name, treatment type, appointment time. They use the same template for thousands of reminders a month, with each one personalised to the patient. One template, infinite uses, full personalisation.