Manage WhatsApp templates
Message Templates (/whatsapp-business/templates) are required for outbound WhatsApp marketing and many automated sends. Meta must approve each template before you use it in broadcasts, campaigns, or Smart Flows.
Video
Who can do this
Admin or marketing users with WhatsApp Business access. Template submission affects your WABA quality score—coordinate with compliance.
Before you begin
- WABA connected at
/whatsapp-business/accounts - Phone numbers synced at
/whatsapp-business/phone-numbers - Template copy reviewed for Meta policies (no prohibited content, clear opt-out where required)
- Variable placeholders planned (Meta format: numbered placeholders like variable 1, variable 2)
What you'll accomplish
- Draft template saved in SWS Agent
- Template submitted to Meta (Submitted / Pending → Approved)
- Approved template selectable in broadcast and automation pickers
Open Message Templates
- Sidebar → WhatsApp → Templates (
/whatsapp-business/templates). - Page title: Message Templates
- Subtitle: Create, preview, and submit WhatsApp template messages for approval.
Empty state:
- No templates — Build your first template with variables and quick-reply buttons.
- Create template (may prefill name
welcome_message)
Create a template
- Select New template (header) or Create template (empty state).
- In Template builder inspector, complete fields:
| Field | Example |
|---|---|
| Template name | order_update (lowercase, underscores) |
| Language | en (default) |
| Category | Marketing, Utility, or Authentication |
| Body | Example: Hello + variable 1 + , your order + variable 2 + is ready. (use Meta {{1}} syntax in the product UI) |
| Variables (comma-separated samples) | Alex, #12345 |
| Buttons (JSON) | [{"type":"QUICK_REPLY","text":"Yes"}] |
- Review Preview section (fallback: Template body preview…).
- Select Save draft.
Toasts:
- Name and body are required
- Template draft saved
Submit for Meta approval
- Ensure draft is saved first (Save a draft first if you skip this).
- Select Submit for approval.
- Toast: Submitted to Meta for review.
Status badges on template list (examples):
| Status | Meaning |
|---|---|
| Draft | Local only |
| Submitted / Pending | Awaiting Meta |
| Approved | Ready to send |
| Rejected | Edit and resubmit |
Meta review can take minutes to 48 hours. Check list periodically; rejected templates show Rejected with reason in Meta Business Manager.
Template categories (when to use each)
| Category | Use for |
|---|---|
| Utility | Transactional updates (order status, appointment confirm) |
| Marketing | Promotions, re-engagement (stricter opt-in rules) |
| Authentication | OTP and verification codes |
Choosing the wrong category causes rejection—match Meta definitions.
Variables and buttons
Body variables: Use Meta numbered placeholders in the Body field (variable 1, variable 2, etc.). The Variables field provides sample values for preview only.
Buttons JSON: Quick replies and call-to-action buttons per Meta schema. Invalid JSON fails validation—start from the placeholder:
[{"type":"QUICK_REPLY","text":"Yes"}]
Using approved templates
After Approved:
- Broadcasts — Step 2 Template dropdown
- Campaigns — Variant A/B template selects
- Conversation Builder — Template node Template ID
- Smart Flows — send a WhatsApp message action
Verify your work
- Template appears in list with correct name and category
- Preview renders variables with samples
- After submit: status moves from Draft to Submitted / Pending
- After approval: Approved; test send from broadcast wizard succeeds
Tips
Keep a library of Utility templates for operational messages—they often approve faster than Marketing.
Name templates by purpose (appointment_reminder_24h) so pickers stay searchable at scale.
Marketing templates require recipient opt-in under Meta and local law—document consent in WhatsApp Contacts.
Troubleshooting
| Problem | Fix |
|---|---|
| Submit disabled | Save draft first |
| Rejected by Meta | Read Meta reason; avoid URLs in body if restricted; fix category |
| Template missing in broadcast | Must be Approved; refresh page |
| Variables wrong in send | Order must match numbered placeholders in template body |
| Buttons invalid | Validate JSON; use supported button types only |