Message templates
The pre-approved messages behind every campaign and every out-of-window reply. What each part does, and how to get one approved.
Why templates exist
WhatsApp does not let a business send an unsolicited free-form message. Anything sent to someone outside the 24-hour window — which is every campaign, and any inbox reply after the window closed — must use a message whose exact wording and structure Meta approved beforehand. That is a template.
You build the whole thing on the 📝 Templates tab and submit it straight to Gupshup/Meta from there.
The parts of a template
| Part | Required? | Notes |
|---|---|---|
| Name | Yes | Lowercase letters, numbers and underscores only — e.g. diwali_offer_2026. Internal identifier; the customer never sees it. |
| Category | Yes | Marketing Utility Authentication — see below. |
| Language | Yes | The language the body is written in. English, Hindi, Gujarati, Marathi, Tamil, Telugu, Bengali, Punjabi and regional English variants are available. |
| Header | No | One line of text (max 60 chars, up to one {{1}}), or an image / video / document. |
| Body | Yes | The message. Supports {{1}}, {{2}}… variables. |
| Footer | No | Small grey line, max 60 chars. No variables. Often Reply STOP to opt out. |
| Buttons | No | Up to 3: quick reply, visit website, or call phone number. |
Categories — pick the right one
- Marketing
- Promotions, offers, product news, event invites, re-engagement — anything whose purpose is to drive a sale. Most campaigns use this. Priced highest; policed hardest.
- Utility
- About a transaction the customer already made — order confirmations, shipping updates, appointment reminders, payment receipts. Cannot contain promotional content.
- Authentication
- One-time passcodes and login verification only.
If you label a promo as Utility to save money, Meta will re-categorise it to Marketing (or reject it). Categorise honestly.
Variables and sample values
A variable is a numbered slot: Hi {{1}}, your order {{2}} is on its way. When a campaign sends, WA Suite fills each slot per recipient (from the contact's name, a tag, a custom field, or a fixed value you type).
At submission you must give a realistic sample value for every variable — Meta reviews the message with the samples filled in. Use Ramesh, not {{name}} or xxx; unrealistic samples get templates rejected.
Submitting a template
Fill in the builder
Work top to bottom. The live preview on the right updates as you type — it is close to what the customer sees.
Save a draft (optional)
💾 Save draft keeps it in WA Suite only. A draft is fully editable — change anything, as often as you like.
Add sample values
If you used any {{n}}, the Sample values for review box appears. Fill every one with a realistic example.
Submit for approval
📤 Submit for approval sends it to Gupshup → Meta. Status becomes Pending. Typical wait is minutes to a few hours; occasionally up to 24h.
Use it, or fix it
Approved: it appears in the campaign and inbox template pickers. Its structure is now locked — to change wording, make a new template. Rejected: read the reason, build a fresh one that addresses it.
Media headers
For an image / video / document header you provide a sample media URL at submission. WhatsApp requires the media to be re-sent on every message, so at send time a real public URL is used — that is why it is a URL field, not a one-time upload. You can upload a file with 📤 Upload to get a hosted URL.
Already made the template in Gupshup?
Expand “Already created this template on the Gupshup dashboard? Paste its ID”, enter the Gupshup template ID, and save. That records the draft as pending without re-submitting; use “Mark approved” on the row once Meta clears it there.
Buttons in detail
| Button type | Does | Branchable? |
|---|---|---|
| Quick reply | Sends its label back to you as a message — opens/continues the 24-hour window and can drive a chatbot branch. | Yes |
| Visit website | Opens a URL. Use a trackable link here to measure clicks. | No |
| Call phone number | Starts a phone call. Only available on templates — never on free-form messages. | No |