Templates
Create & manage your Marketing, Utility and Authentication Templates.
WhatsApp Templates
Templates are pre-approved message formats required to contact customers outside the 24-hour service window. Once a customer's last message is more than 24 hours old, templates are the only way to reach them. All templates must be submitted to Meta and approved before use, and each message sent is charged per the template's category and recipient country.
Go to WhatsApp > Accounts. Click your specific Account and select the Templates Tab. The templates list shows each template's name, category, status, components, and language. Click "+ Create template" in the top right to create a new one.
Step 1: Category, Name, and Language
Clicking "+ Create template" opens a modal with three decisions to make before entering the builder.
Category
This is the most important choice — wrong categorisation is the leading cause of rejection. Meta also automatically reclassifies templates it believes are miscategorised, so choose carefully.
- Marketing — Any promotional, informational, or re-engagement message. If it doesn't clearly qualify as Utility or Authentication, use Marketing. Charged per message regardless of when sent.
- Utility — Strictly transactional messages tied to a specific, ongoing customer interaction: order confirmations, shipping updates, appointment reminders, billing statements, account alerts. Must be non-promotional. Any promotional element, even subtle, makes it Marketing.
- Authentication — One-time passcodes (OTPs) only. Meta controls the message body. Most restricted category, fastest to approve.
Template Name
- Lowercase letters, numbers, and underscores only — no spaces, capitals, or special characters
- Be descriptive:
order_shipped_updatenottemplate_01 - The name is internal — customers never see it
Language
Select the language your template will be written in. Content must match the selected language. WhatsApp does not auto-translate — create a separate template for each language you need.
Click "Go to Builder" when ready.
Step 2a: Building a Marketing or Utility Template
The builder shows a live preview on the right that updates as you work.
Variable Type
Choose how you want to reference variables in your template:
- Numbered — Use positional placeholders like
{{1}},{{2}},{{3}}. Values are passed in order when sending. Simpler for short templates with few variables. - Named — Use descriptive variable names like
{{customer_name}},{{order_number}},{{delivery_date}}. This makes templates easier to read and maintain, especially when you have many variables. Recommended for most use cases.
Both formats work identically when the message is delivered — the recipient sees the same final message. Named variables just make it easier for you to manage templates with multiple placeholders.
Note: Authentication templates always use numbered variables (
{{1}}) because Meta controls the message body.
Media (Optional)
Select a media type if you want a file in the header: Image (JPG/PNG, up to 5MB), Video (MP4, up to 16MB), or Document (PDF/DOCX/XLSX/PPTX, up to 100MB). You select the type now — the actual file is provided when sending, not at template creation.
Header (Optional)
Short text at the top of the message. Max 60 characters, no emojis, no line breaks. Supports one variable. If a media type is selected above, the text header is replaced by the media.
For templates with a document header you can provide a filename to override the default. The filename should include the correct file extension (for example .pdf, .docx, .xlsx) so WhatsApp can correctly identify and display the document.
Body (Required)
The main message content. Max 1,024 characters. The toolbar gives you bold, italic, strikethrough, monospace formatting, and emoji support.
To personalise messages, click the Variables button to insert variables. How you add variables depends on the Variable Type you selected:
- If you chose Named, give each variable a meaningful name — for example
{{customer_name}},{{order_number}},{{delivery_date}}. - If you chose Numbered, variables will appear as
{{1}},{{2}},{{3}}in the order you add them.
When the message is sent, each variable is replaced with the actual value for that recipient.
Variable rules:
- The body cannot start or end with a variable
- Variables must not be placed directly adjacent to each other with nothing between them
- Don't use excessive variables relative to static text — aim for roughly 3x as many words as variables
- No more than 4 consecutive spaces, no tabs
Footer (Optional)
Static text below the body. Max 60 characters. Plain text only — no variables, no emojis, no formatting. Use for opt-out instructions (e.g. "Reply STOP to unsubscribe") or short disclaimers.
Buttons (Optional)
Click "+ Add button" to add interactive buttons. Max 10 buttons per template — if more than 3 are added they collapse into a list on the customer's screen.
Quick replies:
- Custom — a predefined reply the customer taps to send back to you. Max 25 characters per label.
Call to action:
- Visit website — opens a URL. Must be a full, valid HTTPS link — no shortened URLs (bit.ly etc.)
- Call on WhatsApp — initiates a WhatsApp call
- Call Phone Number — dials a number directly. Only one phone number button per template.
- Copy offer code — lets the customer copy a promo code with one tap. Max 15 characters.
Message Validity Period
Toggle this on to set a delivery window. If the message isn't delivered within the set time, it is cancelled and you are not charged. Default is 10 minutes if not set.
Click "Submit for Review" when complete.
Step 2b: Building an Authentication Template
Authentication templates have a different builder — Meta controls the message body, so you are configuring how the code reaches the customer rather than writing the message content.
Code Delivery Setup
Choose one of three delivery methods:
- Zero-tap autofill — The code is sent to your app automatically, no customer action needed. Falls back to copy code if unavailable. Requires you to accept the terms checkbox and enter your Android app's Package name and App signature hash (up to 5 apps).
- One-tap autofill — Customer taps an Autofill button to send the code to your app. Falls back to copy code if unavailable. Also requires Package name and App signature hash.
- Copy code — Simplest option, no app setup required. Customer taps a "Copy Code" button and pastes the code manually into your app. Works on all devices.
The preview shows the fixed Meta-controlled body: {{1}} is your verification code. — the variable here is always the numbered {{1}}, which is replaced by the actual OTP code at send time. Unlike Marketing and Utility templates where you can choose Named or Numbered variables, Authentication always uses numbered format because the body text is set by Meta.
Content Options
- Add security recommendation — appends standard text advising the customer not to share the code
- Add expiration time for the code — adds a footer note showing when the code expires. Note: if enabled, the autofill button is disabled once the code expires.
Message Validity Period
Same as Marketing/Utility. Default is 10 minutes. Note: changes to Code Delivery Setup (autofill settings, app details) do not count towards edit limits and do not trigger a new review — only content changes do.
Click "Submit for Review" when complete.
Template Statuses
After submission, monitor status on the Templates list page:
| Status | Meaning |
|---|---|
| Pending | Under review. Usually minutes for verified accounts, up to 24–48 hours maximum. |
| Approved | Ready to use. Initially shows as "Active - Quality Pending" until send data is collected. |
| Rejected | Failed review. Edit and resubmit, or appeal. The same template name cannot be reused for 30 days. |
| Paused | Auto-paused due to high block or spam report rates. Cannot send while paused. Does not affect overall messaging limits or other templates. |
| Disabled | Repeated violations. Permanently blocked. |
Tips to Avoid Rejection
- Pick the right category first — when in doubt, use Marketing
- Never start or end the body with a variable
- Always use full HTTPS URLs — no shortened links
- Provide sample values for all variables when submitting
- Don't duplicate an existing template's body and footer text
- Keep static text significantly longer than the number of variables
- Use descriptive, lowercase template names
- Include opt-out instructions in the footer of Marketing templates
Updated 1 day ago
