How-to

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.

Anjali RaoApr 11, 20266 min read
A laptop on a wooden desk with notebooks alongside it

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.
Media headers transform performance. Order-confirmation utility templates with an image of the actual product see 30%+ higher engagement than text-only equivalents. WBIZ's media transcoder auto-converts upload formats so you don't have to think about codecs.

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.
A simple D2C order-confirmation template with a "Track order" URL button and a "Need help?" quick-reply outperforms an unbuttoned text version by 4–6× on click-through.

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.

Ready to transform your WhatsApp?

Join the 1,000+ teams already running on WBIZ.IN. Set up in under an hour, scale to a million conversations a month.

Free forever. All features included. No hidden charges.

WhatsApp Message Templates — Categories, Variables, Approval | WBIZ.IN