WhatsApp message templates explained: Categories, variables and approval tips
Templates are the gatekeeper for every outbound WhatsApp message. Here is exactly how categories, variables, headers and buttons work in 2026.
Every outbound message your business sends on WhatsApp — outside the 24-hour customer-initiated service window — must use a pre-approved template. Templates are the single biggest source of confusion for teams new to the WhatsApp Business API. They're also the single biggest lever you have on cost and conversion.
This is a hands-on reference, not a marketing piece. By the end you'll know exactly which category your message belongs in, how to structure variables and buttons so it gets approved on the first try, and the rejection reasons we see most often (and how to dodge them).
The four template categories
In 2024, Meta cleaned up the template categorisation system into four buckets. Each one has its own pricing, structural requirements, and approval bar.
Utility
A utility template informs the customer about something specific to a transaction or relationship that already exists between you. Order placed, payment received, appointment confirmed, account suspended, package out for delivery, password changed, etc.
- Pricing: lowest rate of the three paid categories.
- Approval time: typically 1 hour or less.
- Approval bar: low. As long as the message is genuinely informational and references something specific (an order ID, a date), it sails through.
- Example: "Hi {{1}}, your order #{{2}} is out for delivery and will arrive by {{3}}. Track here: {{4}}"
Marketing
A marketing template promotes products, services, offers, or your brand in general. Welcome messages with a "shop now" button, abandoned-cart nudges, festival discount alerts, new-collection announcements.
- Pricing: highest rate.
- Approval time: 1–24 hours.
- Approval bar: medium-high. Meta will reject anything that looks misleading, urgent without basis ("YOU'VE WON!"), or that promises something the template can't deliver.
- Example: "Hi {{1}}, our Diwali collection is now live. Use code {{2}} for 20% off this weekend only. Shop the collection."
Authentication
An authentication template delivers a one-time password (OTP) or verification code. It's structurally restricted — you can't add marketing copy, you can't include extra media, and the variable for the code is in a specific position.
- Pricing: separate authentication rate, generally between utility and marketing.
- Approval time: minutes.
- Approval bar: structural — the format is essentially fixed. Get the structure right and approval is automatic.
- Example: "{{1}} is your verification code. For your security, do not share this code."
Service
Service messages don't need a pre-approved template at all — they're sent inside the 24-hour customer service window that opens when a customer messages you. You can send any free-form message: text, image, video, document, list, button. Meta gives you the first 1,000 service conversations per WABA per month free.
This is why thoughtful inbox automation matters so much: every customer reply opens a free 24-hour window where you can send anything. Brands that engineer journeys to keep that window open save 60%+ on Meta fees.
Variables: the substitution syntax
Variables in templates use double curly braces and are positionally numbered: {{1}}, {{2}}, {{3}}. There's no named-variable system. When you send the template, you provide an array of values and they're substituted into the corresponding positions.
Two strict rules:
1. Variables can't appear at the start or end of a message.
2. Two variables can't be next to each other with no static text between them.
So this fails approval:
{{1}} please confirm your appointment.
This passes:
Hi {{1}}, please confirm your appointment.
And this fails:
Order {{1}} {{2}} is confirmed.
This passes:
Order {{1}} placed on {{2}} is confirmed.
The reason for these rules is anti-spam: it stops bad actors from approving "{{1}}" and dynamically inserting any payload they like at send time.
Headers: text, image, video, or document
Above the body, every template can have an optional header. Four types:
- Text — up to 60 characters, supports a single variable.
- Image — JPEG/PNG up to 5MB. Recommended ~800×400.
- Video — MP4 (H.264 + AAC) up to 16MB. Keep it under 10s for autoplay.
- Document — PDF up to 100MB.
Buttons: where conversion happens
Templates support up to 10 buttons across two button types per template (you can mix-and-match within a type, but not across types — except for the special "OTP + code copy" combo).
Quick-reply buttons
A quick-reply button sends a pre-defined text reply when the customer taps it. You define the button label and the payload sent back to your webhook.
Use cases: "Yes / No," "Call me / Email me," opt-out / "Stop these messages," reply to a survey.
Call-to-action buttons
CTA buttons take the customer outside WhatsApp:
- URL button — opens a web URL. Supports one variable in the URL (e.g.
https://example.com/order/{{1}}). - Phone button — initiates a phone call to a fixed number.
- Catalog button — opens your WhatsApp catalog.
- Copy code — copies a static or dynamic code to the clipboard (used for promo codes and OTPs).
- Flow button — opens a WhatsApp Flow screen.
Common rejection reasons (and what to do)
| Reason | What it means | Fix |
|---|---|---|
| Category mismatch | Marketing copy in a utility template | Move promotional content to a separate marketing template |
| Variable at start/end | {{1}}, your order... | Add static text before/after the variable |
| Adjacent variables | {{1}} {{2}} order | Insert text between them |
| Misleading content | "You've been selected!" with no basis | Make the offer specific and honest |
| Trademark conflict | Using "WhatsApp" or "Meta" in the template | Don't reference WhatsApp by name in template body |
| URL shorteners | bit.ly, tinyurl, etc. | Use your own domain |
| Excessive emojis | More than 1 per 100 chars | Cut them — they don't help conversion either |
| Numeric-only header | Header is just digits | Add a verb or noun |
WBIZ's template builder runs every draft against this checklist locally before submission, so you can fix issues without burning a 24-hour Meta review cycle.
Language & localisation
Each template approval is per language. You can submit the same template in 60+ languages (Hindi, Bengali, Tamil, Telugu, Marathi, Gujarati, Kannada, Punjabi, Malayalam, Urdu, plus the global set). Send-time, you specify the language code and Meta routes to the matching approved version.
Best practice for India:
- Always submit at least an English + Hindi version.
- For regional D2C brands, submit the regional language too. Approval is per-language but the structural rules are the same.
- Don't translate variable values inside the template — pass them in already-localised at send time.
Where to go from here
Open WBIZ's Template Studio and walk through the wizard. The wizard maps every Meta restriction to a real-time validator, so by the time you hit Submit, the template has already passed every check Meta would run. Approval rates for templates built in WBIZ's wizard are above 96% on first submission, against an industry baseline around 70%.
Templates are the contract you have with WhatsApp's policy. Treat them as engineering artefacts — versioned, reviewed, monitored — and they stop being a bottleneck.
Written by
Anjali Rao
Anjali heads customer experience at WBIZ.IN. She has spent the last seven years helping Indian brands run support, KYC and onboarding workflows entirely on WhatsApp.
Keep reading
Related posts
- How-to
WhatsApp broadcast messages: Best practices that avoid bans
How to send WhatsApp broadcasts at scale in India without your number getting flagged — opt-in, frequency, template hygiene, and recovery.
Read post - How-to
Lead generation on WhatsApp: Lead forms, click-to-WhatsApp ads and public APIs
How to capture qualified leads on WhatsApp using lead forms, Meta click-to-WhatsApp ads, public lead APIs and conversational qualification.
Read post - Guides
WhatsApp Business API in India: The Complete 2026 Guide
Everything Indian businesses need to know about the WhatsApp Business API in 2026 — from BSP vs Cloud API to DPDP-Act-aware setup.
Read post