templates whatsapp business api message templates meta

WhatsApp Business Message Templates: The Complete Guide

Everything about WhatsApp message templates: categories, approval process, variables, buttons, media headers, rejection reasons and best practices.

CX Inbox Team 9 min read
WhatsApp Business template editor showing variables, buttons and message preview
Contents

If you use the WhatsApp Business API, templates are not optional. Meta requires that any message you send outside the 24-hour service window must be a pre-approved template. And that 24-hour window only exists after the customer messages you first.

This means every proactive notification, payment reminder, appointment confirmation, shipping update or marketing campaign requires an approved template. The approval process is not difficult, but it has specific rules. Ignore them and you will waste days on unnecessary rejections.

This guide covers everything: what templates are, how categorization works, how to write them correctly and how to avoid the most common rejection reasons.

Table of contents

What templates are and why they exist

WhatsApp has a fundamental rule: businesses cannot message customers whenever they want without restrictions. This exists to prevent spam. The mechanism works like this:

When a customer messages you, a “service window” of 24 hours opens. Within that window, you can reply with anything in free form. No restrictions on content or format.

Outside that window (or if you want to message the customer first), you can only send messages using templates that Meta has reviewed and approved. Meta checks each template to make sure it is not spam, misleading or in violation of their policies.

This sounds restrictive. In practice, it is what makes WhatsApp trustworthy. People know they will not get flooded with junk. Well-designed templates get 90%+ read rates because the channel is not polluted with spam the way email is.

Template categories

Meta classifies templates into three categories. The category affects the per-message price and the approval rigor.

Marketing

Templates for promotions, offers, product launches, abandoned cart recovery or any message whose primary goal is to drive a sale or engagement. Examples: “20% off your next purchase this week”, “New arrivals just landed.”

These are the most expensive per message and receive the strictest review. If your template sounds like marketing but you file it under utility, Meta will reclassify it (and charge you accordingly).

Utility

Templates for confirmations, order updates, appointment reminders, account alerts or any transactional message the customer expects to receive. Examples: “Your order #1234 has shipped”, “Reminder: your appointment is tomorrow at 10:00 AM.”

Cheaper than marketing. Approved faster because Meta understands the customer wants to receive these.

Authentication

Templates for OTP codes, identity verification or account access. Meta has strict predefined formats for these. You cannot inject marketing into an authentication template.

Cheapest of the three. Fastest approval. But the format is very rigid.

Anatomy of a template

A WhatsApp template has up to four components:

Header (optional)

Can be text (up to 60 characters), an image, a video or a PDF document. Only one of these. The header is the first thing the customer sees. A well-chosen image can double engagement compared to text-only messages.

Body (required)

The message content. Up to 1024 characters. Supports bold (text), italic (text), strikethrough (text) and monospace (text). This is where dynamic variables go.

Small text below the body. Up to 60 characters. Displayed in gray. Typically used for disclaimers, company name or opt-out text like “Reply STOP to unsubscribe.”

Buttons (optional)

Up to 10 buttons split across a maximum of three different types. Buttons transform a passive message into something interactive.

Variables and dynamic parameters

Variables are placeholders that get filled at send time. They are represented as {{1}}, {{2}}, {{3}}, etc. (numbered sequentially).

Example body with variables:

“Hi {{1}}, your current balance is ${{2}}. Your payment due date is {{3}}.”

When sending, you replace each variable with real data: {{1}} = “Sarah”, {{2}} = “142.50”, {{3}} = “May 15th.”

Important rules about variables:

  • The header only accepts one variable (if it is text type)
  • The body accepts up to 10 variables (in practice, more than 5 gets unwieldy to manage)
  • Variables cannot be empty at send time. If you do not have a value, provide a default
  • When creating the template, you must include a sample value for each variable. Meta uses these to understand context
  • Variables do not support formatting (bold, italic). Variable text renders in normal format

Buttons: types and constraints

Buttons are the most useful part of templates for driving interaction. Three types exist:

Quick Reply

The customer taps the button and its text gets sent as a message. Useful for confirmations (“Yes, confirm” / “No, cancel”), surveys (“Good” / “Average” / “Poor”) or fast routing (“Talk to an agent”).

Maximum 3 quick reply buttons. Each with maximum 25 characters.

URL

The button opens a web page. Can be a static URL or a URL with a variable (e.g., a personalized tracking link: https://yoursite.com/order/{{1}}).

Maximum 2 URL buttons. Button text has a 25-character limit.

Call (Phone)

The button initiates a phone call to a number you define. Useful for support templates where you want the customer to call easily.

Maximum 1 call button. Can be combined with URL buttons.

Key constraint

You cannot mix quick reply buttons with URL/Call buttons in the same template. If you need quick reply, all buttons must be quick reply. If you need URL or Call, quick reply is not available in that template.

Media headers

Templates with image or video headers get 20-30% higher read rates than text-only.

Supported formats: image (JPEG/PNG, max 5 MB), video (MP4, max 16 MB) and document (PDF, max 100 MB). Images display as a large preview above the message. Video plays inline. Documents download as attachments.

When sending a template with media, you upload the file to WhatsApp’s Media API first and pass the media_id. Media is not stored in the template definition; it is provided at send time.

The approval process

The flow:

  1. You create the template in your platform (or directly in Meta Business Manager)
  2. Meta receives it and sets the status to “Pending”
  3. An automated system (and sometimes human review) evaluates the template
  4. Within 24-48 hours you receive the result: Approved or Rejected (with reason)

In practice, most utility templates get approved within an hour. Marketing templates can take the full day. Authentication templates are usually instant because the format is predefined.

If your template is rejected, you can edit and resubmit. There is no limit on attempts, but each rejection restarts the waiting period.

Common rejection reasons and how to fix them

After managing hundreds of templates across different business accounts, these are the most frequent rejection patterns:

Vague or incomplete content

Meta rejects templates where the purpose is unclear. If your body says “Hi {{1}}, you have a pending update”, Meta may reject it because “pending update” is too vague. Be specific: “Hi {{1}}, your package #{{2}} has arrived at the pickup location.”

Unrealistic sample variables

The examples you provide must look realistic. If your variable is a customer name and you put “test123” as the sample, it may be rejected. Use “John Smith” or “Sarah Johnson.”

Marketing disguised as utility

If your template says “Your order is ready. PS: we have 20% off this week”, Meta will reclassify it as marketing or reject it outright. Keep the purpose pure. One template, one purpose.

Suspicious URLs

If you include a URL button with a domain that does not match your verified business, or you use URL shorteners (bit.ly, tinyurl, etc.), expect a rejection. Use your own verified domain.

Excessive urgency or pressure

Phrases like “LAST CHANCE”, “Today only”, “Reply NOW or lose your spot” trigger rejections. Meta wants messages to be helpful, not aggressive.

Missing opt-out mechanism

For marketing templates specifically, Meta increasingly requires some form of opt-out language. A footer saying “Reply STOP to unsubscribe” is enough.

Best practices for first-try approval

  1. Be specific about purpose. Meta should understand what the template does just by reading it.
  2. Use realistic sample values for all variables. Real names, believable numbers, valid dates.
  3. Include opt-out text in marketing templates: “Reply STOP to unsubscribe” in the footer.
  4. Do not combine purposes. One template = one goal (confirm appointment, send invoice, offer discount).
  5. Check grammar and spelling. Templates with errors get rejected more often.
  6. Use your verified domain for URL buttons.
  7. Keep the tone professional. Avoid excessive caps, excessive emojis or aggressive language.
  8. Match the category honestly. Do not file marketing as utility. Meta will catch it, reclassify it and you pay more anyway.

Template analytics

Once your templates are live, you want to measure performance. Four metrics matter:

Delivery rate (should stay above 95%; lower means invalid numbers in your list). Read rate (typically 85-95% on WhatsApp; low reads suggest bad send times). Reply/interaction rate (varies by type: 50-60% for appointment confirmations, 5-15% for marketing). Block rate (above 1% means a serious relevance or frequency problem).

Meta assigns a quality tier (Green, Yellow, Red) to each template based on recipient feedback. Red-rated templates can reduce your entire account’s sending capacity. Meta also auto-pauses templates with high block rates or spam reports.

Platforms like CX Inbox show these metrics per template and per campaign, letting you iterate and improve continuously.

FAQ

How much does it cost to send a template?

Pricing varies by country and category. In the US (2026 pricing), a marketing conversation costs approximately $0.025, utility $0.015 and authentication $0.0135. The charge is per “conversation” (24-hour window from send time), not per individual message. If you send 3 templates to the same contact within 24 hours, you only pay for one conversation.

How many templates can I have active?

Meta allows up to 250 templates per WhatsApp Business Account (WABA). In practice, most businesses use between 10 and 30 active templates. Do not create templates “just in case.” Fewer well-optimized templates beat a large library of mediocre ones.

Can I edit an already-approved template?

Yes, but editing puts it back in “Pending” status requiring new approval. While pending, you cannot use it to send. For minor changes, it is sometimes better to create a new template and pause the old one.

Do templates expire?

Not automatically. But Meta can pause templates with low quality (spam reports, blocks). They can also disapprove templates if policies change and your content no longer complies. Check your template statuses periodically.

Can I use the same template across multiple languages?

Yes. You create one template with multiple language versions (e.g., en_US, es_MX, pt_BR). Each version goes through separate approval. When sending, you specify the language code and WhatsApp delivers the matching version.

Related articles

Try CX Inbox free

No credit card. 14 days free.

Create free account