Message templates
Templates are the pre-approved messages that let you start WhatsApp conversations. This page covers categories, anatomy, creating and submitting templates in the dashboard, and getting past Meta review.
What templates are and why Meta reviews them
On the WhatsApp Business API you can reply freely inside the 24-hour customer-service window, but to start a conversation — a broadcast, an order update, an appointment reminder — you must use a message template that Meta has reviewed and approved in advance.
The review exists because templates reach people who have not just messaged you. Meta checks the wording, the category, and policy compliance before letting a template go out. Approved templates can then be sent any time, with per-recipient personalisation through variables. Session replies inside the 24-hour window are covered in Send messages.
Categories and what each costs
Every template belongs to one of three Meta categories. Pick the one that honestly matches the content — Meta may reject or re-categorise templates whose category does not match the copy.
| Category | Use it for | Typical examples |
|---|---|---|
| Marketing | Promotions, offers, announcements — anything that nudges a purchase or re-engagement. | Festival sale, new product launch, abandoned-cart nudge |
| Utility | Transactional follow-ups to an action the customer already took. | Order confirmation, delivery update, payment receipt, appointment reminder |
| Authentication | One-time passcodes for login or verification, in Meta's fixed OTP format. | Login OTP, transaction verification code |
Billing by category
Anatomy of a template
A template has up to four parts; only the body is required:
- Header (optional) — a short text line (maximum 60 characters) or a media attachment: image, video, or PDF document. Media headers need a sample file at creation time so Meta's reviewers can see what recipients will get.
- Body (required) — the main message. Insert numbered placeholders like
{{1}}and{{2}}wherever a per-recipient value should go — a name, an order number, an amount. Meta does not allow a variable as the very first or very last thing in the body; the dashboard checks this before submitting. - Footer (optional) — a small muted line under the body, commonly used for opt-out text such as "Reply STOP to unsubscribe".
- Buttons (optional) — quick-reply buttons (the tap becomes an inbound message), URL buttons that open a website, call buttons that dial a phone number, and copy-code buttons for offer codes.
Hi {{1}}, your order {{2}} has been shipped and
should arrive by {{3}}. Track it anytime from the
link below.Creating and submitting a template in the dashboard
- 1
Open Templates and click Create Template
The Templates section lists every template on your account with a status badge, category and language, in a grid or list view with search. Click Create Template to open the builder. - 2
Name it and pick category and language
Template names use lowercase letters, numbers and underscores (for exampleorder_shipped) — the form normalises anything else automatically. Choose Marketing, Utility or Authentication, and the template language. - 3
Compose the content
Pick a header type (none, text, image, video or document), write the body with your{{1}}variables, add an optional footer, and attach buttons if you want them. A live preview on the right shows the message exactly as recipients will see it. For media headers, upload the sample file the form asks for. - 4
Submit for review
Click Create Template. RichAutomate submits it to Meta immediately and it appears in your list with a pending status until Meta finishes the review. - 5
Track the status
The badge turns Approved (green) when the template is ready to send, or Rejected (red) if Meta declined it. If you also create templates directly in Meta Business Manager, the Sync from Meta button pulls them into RichAutomate along with their latest statuses.
Approval times and common rejections
Approval usually takes minutes to a few hours. Meta may occasionally take longer, ask for changes, or reject a template outright — no platform can guarantee approval. The most common rejection reasons, and how to fix them:
- Vague or floating variables. A body like "Hi {{1}}, {{2}}" gives reviewers no idea what will be sent. Surround every variable with concrete context ("your order {{1}} ships on {{2}}"), and never start or end the body with one.
- Prohibited content. Anything that violates WhatsApp's Business or Commerce policies — restricted goods, misleading claims, sensitive personal data requests — is rejected regardless of wording. Rework the offer, not just the phrasing.
- Category mismatch. Promotional copy submitted as Utility is the classic case: a "delivery update" that also pushes a discount usually comes back rejected or re-categorised as Marketing. Keep utility templates strictly transactional, or submit the promotional version honestly as Marketing.
- Formatting problems. Spelling mistakes, excessive capitalisation, or URLs from link shorteners can trip the review. Use your own domain in URL buttons and keep the copy clean.
Rejected? Edit and resubmit
Filling variables when you send
The placeholders are filled at send time, and the mechanism depends on how you send:
Via the REST API, pass a variables array — the first element fills {{1}}, the second {{2}}, and so on:
/api/v1/send-template{
"phone": "919876543210",
"template": "order_shipped",
"language": "en_US",
"variables": ["Priya", "INV-2026-041", "Friday"]
}In campaigns, add columns named var_1, var_2, … next to the phone column in your CSV — each row personalises that recipient's message. Details in Campaigns & broadcasts; authentication and full API setup in the API quickstart.
Try it on trial credits
Stuck? Message us on WhatsApp at +91 74349 01027 or book a free 15-minute setup call on Calendly.