WhatsApp Templates
WhatsApp templates are pre-approved message formats required by Meta for all outbound WhatsApp messages. You cannot send a message to a customer outside the 24-hour conversation window without using an approved template.
What are Templates?
Templates are structured messages that you submit to Meta for review before use. They ensure that businesses send high-quality, non-spammy messages to customers.
Each template consists of:
- Header (optional) -- text, image, video, or document
- Body -- the main message content, with support for variables
- Footer (optional) -- small text below the body
- Buttons (optional) -- interactive elements the customer can tap
Creating a Template
- Go to Marketing in the sidebar
- Click the Templates tab
- Click Create Template
- Fill in the template details (see sections below)
- Submit for Meta review
Template Name and Language
| Field | Description |
|---|---|
| Name | Internal identifier (lowercase, underscores, no spaces). Example: ramadan_sale_2024 |
| Category | Marketing, Utility, or Authentication |
| Language | The language this template is written in |
Header
The header appears at the top of the message. Choose one type:
| Header Type | Description | Notes |
|---|---|---|
| None | No header | -- |
| Text | A short text line | Supports one variable ({{1}}) |
| Image | An image attachment | JPEG or PNG, uploaded at send time |
| Video | A video attachment | MP4, uploaded at send time |
| Document | A file attachment | PDF or other document, uploaded at send time |
Body
The body is the main message content. Use variables to personalize each message:
Hi {{1}}, thank you for shopping with us!
Your order {{2}} has been shipped and will arrive by {{3}}.
Variables use numbered placeholders: {{1}}, {{2}}, {{3}}, etc. You map these to actual values when sending a broadcast or campaign.
Footer
An optional line of small text at the bottom of the message. Footers do not support variables.
Example: Reply STOP to unsubscribe
Buttons
Add interactive buttons to your template. You can combine up to 10 buttons.
| Button Type | Description | Example |
|---|---|---|
| URL | Opens a link in the browser. Supports a dynamic path variable. | https://shop.com/order/{{1}} |
| Phone Number | Initiates a phone call | +968 1234 5678 |
| Quick Reply | Sends a predefined text reply | Interested, Not now |
| Copy Code | Copies a code to clipboard (for OTP, coupons) | SAVE20 |
| Opt-Out | Lets the customer unsubscribe | Stop promotions |
URL buttons can have a dynamic path portion. For example, https://shop.com/track/{{1}} lets you personalize the tracking link per recipient. Only the path after the base domain can be dynamic.
Variable Examples
Meta requires you to provide example values for every variable when submitting the template. These examples help reviewers understand the purpose of each variable.
| Variable | Example Value | Purpose |
|---|---|---|
{{1}} | Ahmed | Customer name |
{{2}} | ORD-98765 | Order number |
{{3}} | March 30, 2026 | Delivery date |
Template Approval Flow
After you submit a template, Meta reviews it. The typical review time is 24-48 hours, but it can take longer.
Template Statuses
| Status | Meaning | Action |
|---|---|---|
| APPROVED | Template passed review and is ready to use | Send broadcasts and campaigns |
| PENDING | Template is under review by Meta | Wait for approval |
| REJECTED | Template did not pass review | Review rejection reason, create a new template |
| PAUSED | Meta paused the template due to quality issues (low engagement, high blocks) | Improve your messaging strategy, template may auto-resume |
Rejected templates cannot be edited and resubmitted. You must create a new template with the required changes. Pay attention to the rejection reason to avoid repeating the same issue.
Language Variants
You can create the same template in multiple languages. Each language variant is submitted and approved independently.
How to add a language variant:
- Open an existing template
- Click Add Language
- Select the language
- Write the template content in that language
- Submit for review
When sending a broadcast or campaign, you can choose which language variant to use. In campaigns with A/B testing, you can test different languages against each other.
Duplicating Templates
To create a template similar to an existing one:
- Find the template in your list
- Click the duplicate action
- Modify the name and content as needed
- Submit the new template for review
This is useful when you want a slight variation of a proven template without starting from scratch.
Tips for Template Approval
- Be clear about purpose -- The template should have an obvious use case (order update, promotion, appointment reminder)
- Use proper variable examples -- Provide realistic example values that show how the template will be used
- Avoid misleading content -- Do not imply urgency that doesn't exist or make false claims
- Include opt-out options -- For marketing templates, add a quick reply button or footer text for unsubscribing
- No prohibited content -- Avoid content related to alcohol, gambling, adult content, or other restricted categories
- Correct grammar and formatting -- Poorly written templates are more likely to be rejected
Quick Reference
| Action | How To |
|---|---|
| Create a template | Marketing > Templates > Create Template |
| Check template status | View the status badge next to each template |
| Add a language variant | Open template > Add Language |
| Duplicate a template | Click duplicate action on template row |
| Use a template | Select it when creating a broadcast or campaign |
Next Steps
- Sending Broadcasts -- Use your approved templates to send messages
- Campaigns Overview -- Use templates in scheduled campaigns
- Campaign Analytics -- See how your templates perform