Quick answer
To get a WhatsApp template approved, choose the category that matches the message's real purpose, write clear text that names your business, number variables in order with realistic sample values, never start or end the message with a variable, and avoid spammy wording, misleading claims and shortened links. Meta often reviews templates within minutes, and you can edit and resubmit a rejected one.
Key takeaways
- Pick the category from the message's purpose: marketing, utility or authentication. Mixing an offer into an update makes it marketing.
- Number variables in order ({{1}}, {{2}}), give a realistic sample for each, and surround them with enough fixed text.
- Never start or end the body with a variable, and never place two variables side by side with nothing between them.
- Name your business, say why the customer is getting the message, and avoid all-caps, threats and shortened links.
- If a template is rejected, read the reason, fix that one thing and resubmit under a new name.
A WhatsApp message template is a pre-approved message your business uses to contact a customer outside the 24-hour reply window: order updates, appointment reminders, payment receipts, offers and login codes. Meta reviews every template before you can send it, and a rejection can hold up a campaign or a reminder system for a day or more.
This guide is for anyone writing templates for a Kenyan business, whether you send them through chat.or.ke or another provider. You will learn the structure Meta expects, how to use variables, and see good and rejected examples side by side.
Before you start
Have these ready before you write your first template:
- A verified WhatsApp Business profile connected to the WhatsApp Business Platform. On chat.or.ke, setup includes submitting starter templates for approval.
- A list of the messages you send repeatedly, such as "order ready", "appointment tomorrow", "payment received" and "monthly offer".
- The language for each template. A template is approved per language, so English and Kiswahili versions are separate submissions.
- Real sample data: a typical customer first name, an order number format, a date, an amount in KES.
- Your links and phone numbers in full, using your own domain.
Step 1: Choose the right template category
Pick the category that matches what the message does for the customer, because Meta checks the content, not the label you choose. There are three:
| Category | Use it for | Example |
|---|---|---|
| Utility | Updates about something the customer already did or asked for | Order confirmed, delivery on the way, appointment reminder, receipt |
| Marketing | Anything that promotes, invites or re-engages | Sale announcement, new stock, "we miss you" offer, event invite |
| Authentication | One-time passwords and verification codes only | Login code with a copy-code button |
The common mistake is adding a promotion to a utility message: "Your order is ready. Also, enjoy 20% off your next purchase!" That is marketing, and Meta may reject it or move it to the marketing category, which is priced higher. Keep updates and offers in separate templates. Our explainer on WhatsApp template categories covers the boundaries in more detail.
Step 2: Name the template and choose its language
Template names use lowercase letters, numbers and underscores only, such as order_ready_collection or appointment_reminder_sw. A descriptive name helps your team pick the right template later and does not affect approval.
Select the exact language of the text. If you write in Kiswahili, choose Swahili; if you mix in a few Sheng words, keep the message mostly in one language so the reviewer can follow it.
Step 3: Write the header, body, footer and buttons
A template has up to four parts. Only the body is required.
- Header (optional): a short line of text, or an image, video or document, such as a product photo or a PDF invoice.
- Body (required): the message itself, with your variables. Keep it short, specific and polite.
- Footer (optional): a small line of grey text, good for "Reply STOP to opt out" or your business name.
- Buttons (optional): quick replies such as "Confirm" or "Reschedule", a link to your website, or a call button.
Buttons make templates more useful and reduce typing. A clinic reminder with "Confirm" and "Reschedule" quick replies lets the patient answer in one tap. Read more in interactive WhatsApp messages explained.
Step 4: Add variables the way Meta expects
Variables are the placeholders filled in for each customer, written as numbered parameters in double curly braces: {{1}}, {{2}}, {{3}}. Follow four rules and most formatting rejections disappear:
- Number them in order with no gaps: {{1}} then {{2}}, never {{1}} then {{3}}.
- Do not start or end the body with a variable. "{{1}}, your order is ready" and "Your order is ready, {{1}}" both risk rejection. "Hi {{1}}, your order is ready." is fine.
- Never put variables next to each other without words between them, such as "{{1}} {{2}}".
- Keep the ratio sensible. A short message with five variables looks like a blank form that could be filled with anything. Add fixed text that shows what the message is about.
Give a realistic sample value for every variable when you submit, for example "Wanjiru" for the name and "TF-20481" for the order. Samples help the reviewer see a real message. Meta's message templates documentation lists the current formatting rules and character limits.
Step 5: Compare your draft with good and rejected examples
Most rejections come from the same handful of mistakes. Here are examples written for a fictional Nairobi boutique and Kisumu clinic.
| Rejected or risky | Why | Better version |
|---|---|---|
| "{{1}}, {{2}} {{3}}" | Starts with a variable, variables side by side, no context | "Hi {{1}}, your order {{2}} is ready for collection at our Moi Avenue shop until {{3}} today." |
| "Your appointment is confirmed, {{1}}" | Ends with a variable | "Hi {{1}}, your appointment at Lakeside Clinic is confirmed for {{2}}. Reply 1 to confirm or 2 to reschedule." |
| "CONGRATULATIONS!!! You have WON a gift. Click bit.ly/xx NOW" | All caps, misleading prize claim, shortened link, pressure | "Hi {{1}}, thank you for shopping with Tamu Fashions. Show this message in store this weekend for 10% off. Reply STOP to opt out." |
| "Your order is ready. Plus 20% off everything this week!" submitted as utility | Promotion inside an update | Split into a utility "order ready" template and a separate marketing offer |
| "Pay your balance or we will take action." | Threatening tone | "Hi {{1}}, a balance of KES {{2}} is due on {{3}} for invoice {{4}}. Pay via M-Pesa Paybill 000000, account {{4}}. Questions? Reply here." |
| "Hello" | Too vague to show a purpose | Write the full update or offer the customer will actually receive |
The fixed amounts and Paybill number above are placeholders for illustration. In your own template, the amount stays a variable so each customer sees their own balance.
Step 6: Submit, wait for review and fix rejections
Submit the template with its category, language and samples. Meta reviews it automatically and often decides within minutes, though some take longer. You will see one of three outcomes: approved, rejected with a reason, or approved under a different category.
If it is rejected, read the stated reason and change only what it points to, then resubmit. If you believe the decision is wrong, you can request a review through Meta's business support. On chat.or.ke you can choose from a template library or request a new template from the dashboard, and the approval request is handled for you.
Step 7: Keep approved templates healthy
Approval is not permanent. Meta watches how customers react to each template, and one that gets blocked or reported often can be marked low quality and paused for a few hours, and eventually disabled if it keeps happening.
Send each template only to people it is relevant to, keep marketing to opted-in contacts, and include an easy way to stop. Our guide to sending WhatsApp broadcasts without getting blocked covers this in depth. Remember too that inside an open 24-hour customer service window you can reply in free text without a template at all.
Published 20 October 2026 Updated 20 October 2026 Plain-text version