WhatsApp Templates
Create professional WhatsApp Business message templates for marketing, transactional, and authentication messages. All WhatsApp marketing messages require pre-approved templates from Meta (Facebook).
Important: Meta Approval Required
WhatsApp marketing messages MUST use approved templates. You cannot send custom messages to contacts unless:
- They messaged you first (within last 24 hours), OR
- You're using an approved template
Approval time: 1-24 hours (usually 2-6 hours)
Template Categories
Meta requires categorizing templates:
| Category | Purpose | Examples | Approval Time |
|---|---|---|---|
| MARKETING | Promotional content | Sales, offers, product launches | 12-24 hours |
| UTILITY | Account/transactional updates | Order status, delivery, account changes | 2-6 hours |
| AUTHENTICATION | OTPs, verification codes | Login codes, 2FA, password reset | 1-2 hours |
Choose the correct category - it affects approval time and usage limits.
Creating a WhatsApp Template
Step 1: Start New Template
- Navigate to Channel → Templates
- Click + New Template
- Select WhatsApp as channel
- Fill in template details:
- Template Name: Unique identifier (lowercase, underscores only)
- Good:
order_confirmation_v2 - Bad:
Order Confirmation V2(no spaces/caps)
- Good:
- Category: MARKETING, UTILITY, or AUTHENTICATION
- Language: Select language (can create multi-language versions)
- Template Name: Unique identifier (lowercase, underscores only)
Step 2: Design Template Components
WhatsApp templates have 4 optional components:
1. Header (Optional)
Choose one:
- Text: Short title or greeting (max 60 characters)
Your Order Confirmation - Image: Product photo, banner (JPG/PNG, < 5MB)
- Video: Product demo, announcement (MP4, < 16MB)
- Document: PDF invoice, catalog (PDF, < 100MB)
2. Body (Required)
Main message content:
- Max 1,024 characters
- Can include numbered variables for personalization
- Supports bold, italic,
strikethrough,monospace
Example:
Hi {{1}},
Your order {{2}} has been confirmed!
*Order Details:*
- Total: ${{3}}
- Delivery: {{4}}
Track your order: {{5}}
Thanks for shopping with us!
3. Footer (Optional)
Small text at bottom (max 60 characters):
Reply STOP to opt out
4. Buttons (Optional)
Choose one button type:
Call-to-Action Buttons (max 2):
- Visit Website: Opens URL
[Shop Now] → https://yourstore.com - Call Phone Number: Direct dial
[Call Us] → +1234567890
Quick Reply Buttons (max 3):
- Predefined response options
[Yes] [No] [Maybe Later]
Step 3: Add Variables
Variables allow dynamic content per contact:
Variable Syntax:
- Use numbered placeholders starting from 1, 2, 3, etc.
- Number them sequentially (don't skip numbers)
- Max 10 variables per template
Example Template:
Header: [IMAGE]
Body:
Hi {{1}},
We're excited to launch our new {{2}}!
As a valued customer, you get *exclusive early access* and {{3}}% off.
Offer valid until {{4}}.
Footer: Reply STOP to opt out
Buttons:
[Shop Now] → https://store.com/{{5}}
Variable Mapping (done in campaign):
- Variable 1 → Contact name
- Variable 2 → Product name
- Variable 3 → Discount percentage
- Variable 4 → Expiry date
- Variable 5 → Product URL slug
Step 4: Submit for Meta Approval
- Review template carefully
- Check Meta's guidelines (see below)
- Click Submit for Approval
- Wait for approval (1-24 hours)
Approval Status:
- Pending: Under review by Meta
- Approved: Ready to use ✅
- Rejected: Needs fixes (see rejection reason)
Meta Template Guidelines
✅ Allowed:
- Product updates and launches
- Sales and promotions
- Event invitations
- Order updates
- Appointment reminders
- Customer surveys
- Account notifications
❌ Not Allowed:
- Cryptocurrency, gambling
- Tobacco, alcohol, drugs
- Adult content
- Weapons
- Political content
- Misleading information
- Spam or mass messaging
Quality Guidelines:
-
Be Clear and Specific
- Good: "Your order will be delivered on [date]"
- Bad: "Important update about your thing"
-
Use Proper Grammar
- Correct spelling and punctuation
- Avoid all-caps (except brand names)
- Professional tone
-
Generic Template Text
- Don't include specific offers in template
- Use variables for dynamic content
- Good: "Get [percentage]% off"
- Bad: "Get 50% off" (hardcoded)
-
Include Opt-Out
- Add opt-out language in footer
- "Reply STOP to unsubscribe"
Template Examples
1. Order Confirmation (UTILITY)
Template Name: order_confirmation
Header: Your Order Confirmation
Body:
Hi {{1}},
Your order {{2}} has been confirmed!
*Order Details:*
Total: ${{3}}
Delivery Date: {{4}}
You can track your order using the button below.
Thank you for your purchase!
Footer: Questions? Reply to this message
Buttons:
[Track Order] → https://store.com/track/{{5}}
2. Appointment Reminder (UTILITY)
Template Name: appointment_reminder
Header: [IMAGE: Calendar icon]
Body:
Hi {{1}},
This is a reminder about your appointment:
*Appointment Details:*
- Service: {{2}}
- Date: {{3}}
- Time: {{4}}
- Location: {{5}}
Please confirm or reschedule using the buttons below.
Footer: Reply STOP to opt out
Buttons:
[Confirm] [Reschedule]
3. Product Launch (MARKETING)
Template Name: product_launch
Header: [IMAGE: Product photo]
Body:
Hi {{1}},
🎉 Introducing our new {{2}}!
{{3}}
As a valued customer, you get *{{4}}% off* for the first week.
Use code: {{5}}
Footer: Offer expires {{6}}. Reply STOP to opt out
Buttons:
[Shop Now] → https://store.com/{{7}}
[Learn More] → https://store.com/{{8}}
4. OTP/Authentication (AUTHENTICATION)
Template Name: otp_verification
Header: Your Verification Code
Body:
Your {{1}} verification code is:
*{{2}}*
This code expires in {{3}} minutes.
If you didn't request this code, please ignore this message.
Footer: Never share this code with anyone
Buttons: (None for security)
Best Practices
Template Design
1. Keep It Concise
- Max 3-4 sentences for marketing
- Get to the point quickly
- Use bullet points for clarity
2. Use Formatting
- Bold for important info
- Italic for emphasis
Strikethroughfor old pricesMonospacefor codes
3. Clear Call-to-Action
- What do you want them to do?
- Make it obvious with buttons
- Use action words
4. Personalization
- Always use variable 1 for contact first name
- Personalize content when possible
- Makes messages feel less automated
Variable Planning
Before creating template, map out variables:
| Variable | Field Name | Example Value |
|---|---|---|
| Variable 1 | Contact first name | "Sarah" |
| Variable 2 | Product name | "Premium Plan" |
| Variable 3 | Price | "49.99" |
| Variable 4 | Expiry date | "Dec 31" |
| Variable 5 | Coupon code | "SAVE20" |
Increasing Approval Chances
Do:
- Follow naming conventions (lowercase_with_underscores)
- Use correct category
- Include opt-out language
- Write clear, professional copy
- Check spelling and grammar
- Use variables for dynamic content
- Include business name
Don't:
- Use misleading content
- Make exaggerated claims
- Include prohibited content
- Hardcode offers/prices in template
- Use all-caps excessively
- Forget opt-out language
Multi-Language Templates
Create versions in different languages:
Process:
- Create template in primary language
- Get approved
- Create new template with same content in different language
- Submit for approval
- System auto-selects based on contact's language preference
Example:
welcome_message_en(English)welcome_message_es(Spanish)welcome_message_fr(French)
Template Status & Management
Template States
| Status | Description | Actions Available |
|---|---|---|
| Draft | Not submitted | Edit, Delete, Submit |
| Pending | Awaiting Meta approval | View, Cancel |
| Approved | Ready to use | Use in campaigns, Edit, Duplicate |
| Rejected | Did not meet guidelines | View reason, Edit, Resubmit |
| Paused | Temporarily disabled | View, Resume |
| Disabled | Meta disabled due to policy violation | View only |
Editing Approved Templates
Important: You cannot edit approved templates directly!
To make changes:
- Duplicate the template
- Make edits to the duplicate
- Submit duplicate for approval
- Once approved, archive old template
- Use new template in campaigns
Template Limits
Meta Limits:
- 250 templates per WhatsApp Business Account
- 100 pending submissions at a time
- Unlimited approved templates (counts toward 250)
Troubleshooting
Template Rejected
Common Rejection Reasons:
-
Variable Format Issues
- Problem: Using named variables instead of numbered ones
- Solution: Use numbered variables only (1, 2, 3, etc.)
-
Misleading Content
- Problem: "You've won!" without context
- Solution: Be honest and clear
-
Prohibited Content
- Problem: Cryptocurrency, gambling references
- Solution: Remove prohibited topics
-
Missing Opt-Out
- Problem: No unsubscribe option
- Solution: Add "Reply STOP to opt out" in footer
-
Hardcoded Offers
- Problem: "Get 50% off today!"
- Solution: Use variable for discount percentage
Template Not Sending
Check:
- ✅ Template status is "Approved"
- ✅ Variables mapped correctly in campaign
- ✅ Contact has valid WhatsApp number
- ✅ Contact opted in to receive messages
- ✅ Not exceeding rate limits
Low Delivery Rate
Possible Issues:
- Invalid phone numbers
- Numbers not on WhatsApp
- Blocked by recipients
- Rate limits exceeded
Solutions:
- Validate phone numbers (include country code)
- Verify numbers are WhatsApp users
- Clean blocked numbers from list
- Reduce sending rate
Advanced Features
Dynamic Headers
Use variables in header images:
Header: [IMAGE: variable_1]
Map the first variable to image URL in campaign.
List Messages
Create interactive lists (requires approval):
Choose your preferred time slot:
[View Available Times]
├ Monday 2 PM
├ Tuesday 10 AM
├ Wednesday 3 PM
└ Thursday 11 AM
Catalog Messages
Link to WhatsApp Business catalog:
Body:
Check out our latest products!
[View Catalog]
Requires WhatsApp Business catalog setup.
Compliance
WhatsApp Business Policy:
- Only send to opted-in contacts
- Honor opt-out requests immediately
- Don't spam
- Respect 24-hour message window
- Use approved templates for marketing
Penalties for Violations:
- Rate limiting
- Template suspension
- Account warnings
- Account suspension (severe cases)
Related Resources
- WhatsApp Campaigns → - Send WhatsApp campaigns
- Meta Template Guidelines - Official rules
- WhatsApp Integrations → - Connect WhatsApp providers
- Template Variables → - Advanced variable usage