WhatsApp Message Templates
Create, submit, and send pre-approved WhatsApp message templates.
To protect users from spam, Meta requires businesses to use Message Templates when initiating a conversation or responding outside the 24-hour window. Templates must be approved by Meta before they can be sent.
Template categories
When creating a template, choose one of the following categories:
| Category | Use case |
|---|---|
| Marketing | Promotions, product announcements, abandoned cart reminders |
| Utility | Order updates, appointment reminders, account alerts |
| Authentication | One-time passwords (OTP) for login and account security |
Choosing the wrong category is one of the most common reasons for rejection. Make sure the content matches the category.
Creating a template
- Go to Settings → Templates in the dashboard.
- Click Create Template.
- Fill in the template structure:
| Field | Notes |
|---|---|
| Name | Lowercase letters, numbers, and underscores only. e.g. order_confirmation |
| Category | Marketing, Utility, or Authentication |
| Language | Select the language for this template |
| Header | Optional. Text (up to 60 chars) or Media (Image, Document, Video) |
| Body | Main message content (max 1,024 chars). Use {{1}}, {{2}} etc. for dynamic variables |
| Footer | Optional small text (max 60 chars) |
| Buttons | Optional. Quick Reply (up to 3) or Call to Action (up to 2) |
- Click Submit for Review.
Approval process
Meta typically reviews templates within 2–24 hours. Track the status in Settings → Templates:
| Status | Description |
|---|---|
Pending | Under review by Meta |
Approved | Ready to send |
Rejected | Meta declined the template — see common reasons below |
Paused | Temporarily disabled due to low quality reports from users |
Disabled | Permanently disabled due to repeated quality issues |
Sending a template via the API
Once approved, use POST /v1/messages/templates. See Messages API → Send a template message for full examples.
The quickest way to build the correct payload is to call GET /v1/templates and copy the send_example field directly:
{
"to": "+254712345678",
"template_name": "order_confirmation",
"language": "en",
"components": [
{
"type": "body",
"parameters": [
{ "type": "text", "text": "Jane" },
{ "type": "text", "text": "ORD-12345" }
]
}
]
}Common rejection reasons
If your template is rejected, check these common causes:
- Category mismatch — the content doesn't match the selected category. A promotional message submitted as Utility will be rejected.
- Prohibited content — violations of WhatsApp's Business Policy (e.g. gambling, adult content, certain healthcare products).
- Unclear variable context — Meta's reviewers need to understand what will fill your variables. If
{{1}}is ambiguous, provide a sample value during creation. - Generic content — templates that are too vague (e.g.
Hello {{1}}, here is your update) may be flagged. - Formatting issues — excessive whitespace, spelling errors, or unconventional punctuation.
You cannot edit a template once it is submitted. If you find an error, create a new template with a different name. Repeatedly submitting rejected templates can negatively impact your WhatsApp Business Account quality rating.
Best practices
- Keep it concise — WhatsApp users prefer short, actionable messages.
- Personalise with variables — templates with personalised variables have higher engagement rates. Ensure variable values fit naturally within the surrounding text.
- Proofread before submitting — you cannot edit after submission.
- Avoid clickbait language — aggressive marketing copy leads to rejections and low quality ratings.