How to Create a WhatsApp Message Template (Step-by-Step, 2026)
Learn how to create and submit a WhatsApp message template that passes Meta review on the first try — choosing the right category, writing the body with {{variables}}, adding headers, footers and buttons, sample-value tips, and avoiding the top rejection reasons.
Key Takeaways
- Templates are required to start any conversation outside the 24-hour service window; free text only works after a customer messages you.
- Choose the category honestly — Marketing, Utility, or Authentication — because Meta auto-reclassifies and it sets the price.
- Variables use the double-curly-brace format ({{1}}, {{2}}); never start/end the body with one or place two side by side.
- Realistic sample values are the single biggest factor in first-pass approval; never use xxx or test placeholders.
- Submitting is free; you only pay per send — India Marketing ₹0.86 / Utility ₹0.13, each plus PayPerWA ₹0.20.
What is a WhatsApp message template and why you need one
A WhatsApp message template is a pre-written message that Meta reviews and approves before you can use it to start a conversation. Any time your business messages a customer who has not messaged you in the last 24 hours — a campaign, an order update, an OTP — it must be a template. Free-form text only works inside an open 24-hour service window after the customer writes to you.
Templates exist so that business-initiated messaging stays high quality and low spam. They support variables (the customer's name, an order ID, a tracking link), rich headers, quick-reply and call-to-action buttons, and they are reusable across thousands of contacts. This guide shows exactly how to build one that passes review the first time. For ready-made wording you can adapt, keep our WhatsApp template examples for India open in another tab.
Step 1: Pick the right category (Marketing, Utility, or Auth)
Every template belongs to exactly one of three categories. Meta classifies it on submission, the category sets the price, and choosing wrong is the most common cause of rejection or surprise costs.
- Marketing — promotions, offers, newsletters, re-engagement, product launches. The most expensive category (India ₹0.86 + PayPerWA ₹0.20).
- Utility — transactional updates tied to a specific action: order confirmations, shipping updates, payment receipts, appointment reminders. Cheap (India ₹0.13 + PayPerWA ₹0.20).
- Authentication — one-time passcodes and verification codes only. Cheap, with a fixed verification format.
Do not disguise a promotion as a Utility message to save money — Meta auto-reclassifies templates based on their actual content, so a "reminder" full of discount language will be re-priced as Marketing anyway. Match the category honestly to what the message does. See the full category pricing on our rates page.
Step 2: Name your template and set the language
The template name is an internal identifier, not something the customer sees, but Meta enforces a strict format.
- Use lowercase letters, numbers, and underscores only — for example,
order_confirmation_v1. No spaces or capitals. - Make it descriptive so you can find it later among dozens of templates.
- Choose the language (for example, English, Hindi, or English (India)). Each language is a separate approved version, so create one per language you send in.
In PayPerWA you do all of this in the template builder under Templates then New, with a live preview showing exactly how the message will look on a phone as you type.
Step 3: Understand the four template components
A template is built from up to four parts. Only the body is mandatory; the rest are optional but powerful.
| Component | Required? | What it does | Limits / notes |
|---|---|---|---|
| Header | Optional | Title text, or an image / video / document / location at the top | Text header up to 60 chars and one variable; or one media item |
| Body | Required | The main message; supports variables, bold, italic | Up to 1024 characters |
| Footer | Optional | Small grey line at the bottom — e.g. opt-out note | Up to 60 characters, no variables |
| Buttons | Optional | Quick replies and call-to-action (URL / phone) buttons | Up to 10 buttons total, mixed types allowed |
A simple order update might be just a body. A promotional offer often uses an image header, a body with the customer's name, a footer with "Reply STOP to opt out", and a "Shop now" URL button.
Step 4: Write the body with {{variables}}
Variables are placeholders that get filled in per recipient. They make one template feel personal to thousands of people.
- Insert variables in order as double curly braces: the first is the digit 1 in double braces, then 2, and so on.
- Map each variable to a contact field — name, order ID, amount, date — so PayPerWA fills it automatically at send time.
- Keep the message clear and specific. Vague, all-promo wording invites rejection.
Example body: Hi (variable 1), your order (variable 2) has been shipped and will arrive by (variable 3). Track it using the button below. Here variable 1 is the name, 2 is the order ID, and 3 is the delivery date. Do not start or end the body with a variable, and never place two variables next to each other with no text between them — Meta rejects both patterns.
Step 5: Add headers, footers, and buttons (optional but smart)
These extras lift response rates and look more professional. Use them deliberately.
- Header: add a short text title, or upload a sample image/video/PDF. Media headers are great for product launches and invoices.
- Footer: a quiet line for context or compliance, such as your brand name or an opt-out hint. No variables allowed here.
- Quick-reply buttons: let customers tap a canned response (for example, "Confirm", "Reschedule") that flows back into your chatbot.
- Call-to-action buttons: a "Visit website" URL button (it can include a variable for a personalised link) or a "Call us" phone button.
If you wire quick-reply buttons into an automated flow, our features page shows how PayPerWA's chatbot picks up the tap and continues the conversation.
Step 6: Provide good sample values (this is what gets you approved)
Meta will not approve a template with empty or nonsensical variable examples. The sample values you supply are how the reviewer understands what each placeholder represents.
- For every variable, enter a realistic example: a real-looking name like "Rahul", an order ID like "OD20394", a date like "24 June".
- For a media header, upload an actual sample asset (the real image or PDF type you will send).
- For a URL button with a variable, give a complete, working example link.
- Never use placeholders like "xxx", "test", or "123" — these are a frequent rejection trigger.
Good samples make the reviewer's job obvious and dramatically raise your first-pass approval rate. PayPerWA's builder prompts you for each sample inline so none are missed.
Step 7: Submit for Meta approval and track status
With the content and samples done, submit.
- Click Submit. PayPerWA sends the template to Meta for review.
- The status moves to Pending. Approval commonly takes anywhere from a few minutes to 24–48 hours.
- When it flips to Approved, the template is instantly usable in campaigns and the API.
- If it comes back Rejected, Meta gives a reason. Edit and resubmit — there is no penalty for trying again.
You can monitor every template's status from the Templates list. Approved templates also appear automatically in the campaign wizard's template picker.
Top 7 reasons templates get rejected (and how to fix them)
Almost every rejection traces back to one of these. Check them before you submit.
| Rejection reason | Fix |
|---|---|
| Variables with placeholder samples (xxx, 123) | Give realistic example values for every variable |
| Body starts/ends with a variable or has two adjacent variables | Add fixed text around and between variables |
| Wrong category (promo submitted as Utility) | Pick the category that matches the content honestly |
| Spammy, vague, or all-caps promotional language | Be specific; avoid "Click now!!!" and aggressive caps |
| Grammar, spelling, or formatting errors | Proofread; broken formatting reads as low quality |
| Invalid or non-working button URL | Use a complete, reachable HTTPS link as the sample |
| Content that violates WhatsApp Commerce Policy | Remove prohibited goods/claims; rewrite to comply |
One more 2026 note: you cannot change the category of an already-approved template, and Meta may auto-reclassify a template over time if its real-world use drifts. If you need a different category, create a fresh template instead of editing the old one.
What it costs to send your approved template
Creating and submitting templates is free. You only pay when you send, and the price depends on the template's category. PayPerWA always shows Meta's fee and our fee separately:
- Marketing template: Meta ₹0.86 + PayPerWA ₹0.20 = ₹1.06 in India.
- Utility template: Meta ₹0.13 + PayPerWA ₹0.20 = ₹0.33 in India.
- Authentication template: Meta's auth rate + PayPerWA ₹0.20.
Internationally the Meta rate varies by country — see the live numbers on our rates page and the headline model on pricing. Because there is no subscription, a business that sends only the occasional Utility update pays almost nothing. Ready to build your first one? Create a free account and open the template builder.
Frequently Asked Questions
How long does WhatsApp template approval take in 2026?+
What format do WhatsApp template variables use?+
Why was my WhatsApp template rejected?+
Can I edit a template after it is approved?+
What is the difference between Marketing and Utility templates?+
Do I have to pay to create a WhatsApp template?+
How many buttons can a WhatsApp template have?+
Do I need a separate template for each language?+
Ready to Start WhatsApp Marketing?
No subscription. No monthly fee. Just ₹0.20 per message.
PayPerWA Team
We build India's most affordable WhatsApp marketing platform. No subscriptions, no hidden fees — just 20 paisa per message.