Browse the help centre

WhatsApp message templates — categories, variables and approval

What a message template is, the three categories Meta uses, how variables and samples work, why templates get rejected, and when you need one.

Explanation

On this page

A message template is a message whose wording Meta has reviewed and approved in advance. Templates are the only thing a business may send to a customer outside the 24-hour customer service window — which makes them the only way to start a conversation at all.

A template is not a marketing tool by nature. An appointment reminder, a delivery notification and a one-time passcode are all templates, and so is a promotion.

The three categories

Meta requires every template to declare a category, and the category decides both how it is reviewed and how it is billed.

CategoryWhat it is forTypical examples
UtilitySomething the customer asked for or transacted onOrder confirmation, appointment reminder, delivery update, receipt
MarketingAnything promotional, and anything that does not clearly fit the other twoOffers, re-engagement, announcements, newsletters
AuthenticationOne-time passcodes onlyLogin codes, verification codes

Choosing the wrong category is one of the most common reasons a template is rejected. A "reminder" that also mentions a discount is a marketing template, and submitting it as utility will fail review.

Structure

A template is made of up to four parts:

  • Header — optional; a short line of text, or an image, video or document.
  • Body — required; the message itself.
  • Footer — optional; small print, no variables.
  • Buttons — optional; quick replies, a URL, or a phone number.

Variables

Variables are numbered placeholders — {{1}}, {{2}} — filled in at send time.

Two rules cause most of the trouble:

  1. Every variable needs a sample value at submission. Meta reviews the template with your samples in place, so a template submitted without them is rejected without being read.
  2. The count must match at send time. A template with three variables sent with two values does not silently render a blank; it fails, or worse, ships {{3}} to a customer as literal text.

Juno resolves templates on the server rather than assembling them in the browser, and the variable-count check happens there — which is the thing standing between a customer and a literal {{2}}.

Languages

A template is approved per language. "Appointment reminder" in English and in Chinese are two approved templates that share a name, and each is reviewed separately. Sending to a customer in a language you have not had approved is not possible — plan the language set before you need it.

Approval takes real time

Meta approves on its own schedule: usually hours, sometimes days. This has a scheduling consequence that catches every new team:

The list of templates you have an hour after connecting your number is not the list you will have tomorrow. Do not plan a launch around a template you submitted this morning.

Templates you already have

A number that has been in business use already has approved templates, and they live on Meta and nowhere else. When you connect a WhatsApp Business Account to Juno, its existing templates are imported automatically, and Templates → Sync re-runs the import on demand.

Both halves matter. Without the import, the console is empty on day one, and nobody whose 24-hour window has closed can be reached at all. And because Meta approves on its own schedule, the on-demand sync is how newly approved templates appear without reconnecting anything.

Message templates, each with its category, language and review status

A template we cannot represent — one with no body, or an unrecognised category — is skipped and counted, so a partial import shows up as a number rather than as a quietly short list.

When a template is rejected

The common causes, roughly in order:

  • Wrong category (see above) — most often marketing content submitted as utility.
  • Missing or meaningless variable samples.
  • Variable placement — a body that starts or ends with a variable, or two adjacent variables.
  • Content policy — prohibited categories, or a claim Meta will not carry.
  • Formatting — unbalanced markup, or a header that is too long.

A rejection is not a strike against your number. Fix and resubmit.