If you are new to the WhatsApp Business Platform, you might wonder why you cannot simply type a message and hit "Send to 1,000 customers."
On personal WhatsApp, you can send whatever text you want. But on the official WhatsApp Business API, Meta introduces a mandatory quality control system: Message Templates.
Message templates are pre-registered message formats that Meta reviews before you can use them in live campaigns. This guide explains why templates exist, how their internal components work, how to format dynamic variables correctly, and what rules Meta enforces during review.
If you are calculating the delivery cost for different template categories, test our interactive WhatsApp API pricing calculator.
Why Does Meta Require Template Approvals?
Meta requires templates for two primary reasons:
- Spam Prevention: If businesses could send unrestricted free-form messages to any phone number, WhatsApp inboxes would quickly resemble the spam-cluttered state of traditional SMS and email.
- Predictable Billing: Meta charges different network rates depending on message intent (Marketing vs Utility vs Authentication). Approving templates in advance allows Meta's billing engine to apply the correct rate card. For pricing details across categories, read our WhatsApp API message pricing guide.
Anatomy of a WhatsApp Template
Every template is assembled from five modular components:
┌─────────────────────────────────────────────────────────────┐
│ 1. HEADER (Optional) │
│ Text (up to 60 chars) OR Media (Image, Video, PDF Doc) │
├─────────────────────────────────────────────────────────────┤
│ 2. BODY (Required) │
│ Up to 1,024 characters. Contains text and dynamic │
│ variables like {{1}}, {{2}} │
├─────────────────────────────────────────────────────────────┤
│ 3. FOOTER (Optional) │
│ Up to 60 characters. Subtle gray text at the bottom │
├─────────────────────────────────────────────────────────────┤
│ 4. BUTTONS (Optional - Up to 3 per template) │
│ • Quick Reply ("Opt-out", "Yes, Confirm") │
│ • Call-to-Action (Visit Website URL, Call Phone Number) │
└─────────────────────────────────────────────────────────────┘
1. The Header (Optional)
The header appears at the very top of the bubble. You can choose:
- Text Header: Up to 60 characters in bold (e.g.,
"Order Confirmation #{{1}}"). - Media Header: An image (JPEG/PNG), a document (PDF up to 100MB), or a video (MP4). Media headers work exceptionally well for real estate brochures, booking vouchers, and product catalogs.
2. The Body (Required)
The body contains the primary text of your message (maximum 1,024 characters). It supports:
- Basic markdown:
*bold*,_italics_,~strikethrough~. - Emojis.
- Dynamic variable placeholders:
{{1}},{{2}},{{3}}.
3. The Footer (Optional)
A single line of muted gray text below the body (maximum 60 characters). It cannot contain links or variables. Common uses include disclaimer text, company taglines, or instructions like "Reply STOP to unsubscribe."
4. Interactive Buttons (Optional)
WhatsApp allows you to attach interactive buttons to the bottom of the card:
- Quick Reply Buttons: Pre-set text buttons (up to 3) that send an instant reply back into the chat when tapped (e.g.,
"Confirm Appointment","Reschedule","Stop"). - Call-to-Action (CTA) Buttons: Directly open an external URL or initiate a phone call.
For data on how button formats affect response rates, read our comparison of CTA vs Quick Reply buttons.
How Dynamic Variables Work
Variables allow you to send one standardized template to 10,000 customers while personalizing the content for each recipient.
Variables are numbered sequentially enclosed in double curly brackets:
Template Text:
"Hi {{1}}, your appointment with Dr. {{2}} is confirmed for {{3}} at {{4}}.
Please arrive 10 minutes early at our {{5}} clinic."
Rendered for Customer A:
"Hi Sarah, your appointment with Dr. Rashid is confirmed for tomorrow at 2:30 PM.
Please arrive 10 minutes early at our Downtown clinic."
Critical Rules for Formatting Variables
Meta's review system enforces strict formatting rules for variables:
- Numbers only: Variables must be written as
{{1}},{{2}},{{3}}. You cannot use named variables like{{name}}or{{first_name}}inside Meta's submission portal. - Sequential ordering: You cannot start with
{{2}}or skip numbers (e.g.,{{1}}followed by{{3}}will trigger an automated rejection). - No standalone variables: A variable cannot sit isolated without context. Writing simply
"{{1}}"as an entire line without surrounding words causes rejection. - Sample values are mandatory: When submitting a template, you must provide realistic sample data for every placeholder (e.g., Sample for
{{1}}:"Sarah").
The Three Template Categories
When submitting a template, you must declare its category:
Category | Typical Content | Cost Profile |
|---|---|---|
Marketing | Promotions, discount vouchers, product drops, open house invitations | Highest rate |
Utility | Order confirmations, booking reminders, invoices, account alerts | 60-75% cheaper than marketing |
Authentication | One-time password (OTP) codes, security login verification | Similar to utility rates |
If you submit a template with promotional language under the "Utility" category, Meta's automated classifiers will either reclassify it as Marketing or reject it.
How to Submit and Test Templates
Inside your software platform (like Aexon):
- Navigate to Campaigns → Templates → Create New.
- Select your category, target language (e.g., English, Arabic, Hindi), and header type.
- Type your body text and insert variables.
- Fill in sample values for each variable.
- Click Submit to Meta.
Meta's automated review system typically reviews and approves templates within 30 seconds to 5 minutes.
If your template gets rejected, consult our troubleshooting guide on why WhatsApp templates get rejected and how to fix them.
To browse pre-approved, battle-tested templates you can copy and paste immediately, explore our library of 100+ high-converting WhatsApp message templates.