Check these before you submit
Meta rejects a WhatsApp template for a reason it names, and the fix is usually one edit. Every template is checked by machines and by people before you can send it, and Meta's template review page says a decision "can take up to 24 hours". So each rejection costs you a day. Run these checks first. Each one is a rule from Meta's own pages.
- Variables are written {{1}}, {{2}}, {{3}}, with two braces on each side and no #, $ or % inside.
- Numbered variables count up from 1 in the order they appear, with no gaps.
- The message doesn't start or end with a variable, and no two variables sit side by side.
- There are plenty of words around the variables. Meta rejects a template with too many variables for its length.
- Every variable has a sample value, like a real first name and a real date.
- A reminder or update carries no offer. If it sells anything, it's a marketing template.
- The language you picked is the language you wrote in.
- It asks for no full card, bank account or ID number, and no document that shows one.
- Nothing in it threatens legal action or public shaming.
- The body fits in 1,024 characters, the header and footer in 60 each, and the header has no formatting symbols.
- No template you already have uses the same body and footer.
- The name uses lowercase letters, numbers and the _ sign only, like viewing_reminder.
Already rejected? Match the reason Meta gave you to a fix further down.
Find the reason Meta gave you
Don't resubmit the same words with a tweak and hope, because Meta has already written the reason down. It emails the admins of your Business Suite, and Business Support Home lists the reason under Account Overview, View my accounts, your business account, your WhatsApp account, then Rejected message templates. A vendor's dashboard shows it as a code, and Meta's template status reference lists them:
| Code | What Meta says it means | Your fix below |
|---|---|---|
| INVALID_FORMAT | The template has an invalid format | Braces, order, placement or count of variables |
| INCORRECT_CATEGORY or TAG_CONTENT_MISMATCH | The content doesn't match the category you picked | An offer in an update, or a message too thin to place |
| ABUSIVE_CONTENT, PROMOTIONAL or SCAM | The content breaks WhatsApp's rules | ID numbers, threats, or the commerce rules |
| NONE | Not a rejection: the template was paused | Rejected, paused or disabled |
With INVALID_FORMAT, Meta adds a line on what it found and a line on how to fix it. Its own example of the first: "Your template has parameters placed next to each other (like {{1}}{{2}}) without text or punctuation between them." Copy that line into your notes before you edit anything.
The rejection reasons, each with a fix and an example
These come from Meta's review page and its category check. Each one has what's wrong and the fix, with a bad and a good version we wrote for a sales or booking chat.
Braces missing or mismatched
What's wrong: a variable with one brace on a side, like {1}} or {{1}. Meta's format for a numbered variable is {{1}}, two braces each side.
The fix: check every variable for two opening and two closing braces before you submit.
- Bad: Hi {{1}, your call with me is booked for {2}}. Reply here if the time stops working.
- Good: Hi {{1}}, your call with me is booked for {{2}}. Reply here if the time stops working.
A symbol inside the braces
What's wrong: a #, $ or % between the braces. Meta's review page names all three.
The fix: keep symbols and currency outside the variable, in your own words.
- Bad: Hi {{1}}, we've received your deposit of {{$2}} for the viewing.
- Good: Hi {{1}}, we've received your deposit of SGD {{2}}. Your viewing slot is held, and the receipt is in your email.
Numbers out of order
What's wrong: the numbers skip or jump, like {{1}} then {{3}} with no {{2}}, or {{1}}, {{2}}, {{4}}, {{3}}. It's easy to do when you delete a variable and leave the others as they were.
The fix: number them 1, 2, 3 in the order they appear in the message.
- Bad: Hi {{1}}, your consult is on {{3}} at {{2}}. Bring your questions and I'll bring the floor plans.
- Good: Hi {{1}}, your consult is on {{2}} at {{3}}. Bring your questions and I'll bring the floor plans.
A variable at the start or the end
What's wrong: the message opens or closes on a variable. Meta calls these dangling parameters and doesn't allow them.
The fix: put words before the first variable and after the last.
- Bad: {{1}}, thanks for your time today. Book our follow-up call here: {{2}}
- Good: Hi {{1}}, thanks for your time today. Pick a slot for our follow-up call at {{2}}, and I'll send my notes before we speak.
Two variables side by side
What's wrong: two variables with only a space, or nothing, between them. It's the example Meta's status reference gives for an INVALID_FORMAT rejection.
The fix: put real words between them, or merge the two into one variable.
- Bad: Hi {{1}}, your viewing is on {{2}} {{3}}. See you at the lobby.
- Good: Hi {{1}}, your viewing is on {{2}} at {{3}}. See you at the lobby.
Too many variables for the length
What's wrong: more gaps than words, so the reviewer can't tell what the message says. Meta's answer is fewer variables or a longer message.
The fix: write the parts that are the same for everyone as plain words, and add the sentence that says why you're writing.
- Bad: Hi {{1}}, {{2}} on {{3}} at {{4}} with {{5}}.
- Good: Hi {{1}}, your viewing at {{2}} is confirmed for {{3}}. I'll meet you at the lobby, so reply here if the time stops working.
An offer inside an update
What's wrong: you filed it as utility and it sells something. Utility templates follow up on something the customer did or asked for, and Meta's categorization page says they must carry no promotional or persuasive intent. A template that mixes an update with a promotion counts as marketing. The code is INCORRECT_CATEGORY or TAG_CONTENT_MISMATCH.
The fix: split it into a plain utility update and a separate marketing template for the offer, or file the whole thing as marketing. Meta prices the two categories differently, and WhatsApp Business API pricing breaks the bill down.
- Bad, filed as utility: Hi {{1}}, your consult is confirmed for {{2}}. Book a second session this month and it's free.
- Good, filed as utility: Hi {{1}}, your consult is confirmed for {{2}}. Reply here if you need to change the time.
Approval isn't the last check. The same page says WhatsApp rechecks approved templates and moves a utility template that should be marketing, with a day's notice unless WhatsApp has already warned the business for misusing categories. After a category rejection you can make a new template, change the category and resubmit, or ask for a review.
A message too thin to place
What's wrong: Meta's categorization page counts a template whose content is unclear, like one that's only "{{1}}" or "Congratulations!", as marketing. File it as utility and it fails the category check.
The fix: say what happened and what the customer does next.
- Bad, filed as utility: Great news, {{1}}! Call me today.
- Good, filed as utility: Hi {{1}}, the quote you asked for on {{2}} is ready. I've emailed it to you, and you can reply here with questions.
A language that doesn't match the words
What's wrong: the template's language is set to one language and the words are in another. Meta's template fundamentals page says Meta doesn't translate templates: you supply the words and the sample values in the language you pick. The review page doesn't list this as a rejection reason, but Meta's error codes page says a send fails when the template doesn't exist in the language you ask for.
The fix: pick the language you wrote in. For a second language, make a second template with the same name in that language. Meta lets templates share a name when their languages differ, and each version counts toward your template limit.
- Bad: language set to English, words in Malay: Hai {{1}}, janji temu anda pada {{2}} telah disahkan. Balas di sini jika perlu tukar masa.
- Good: the same words, with the language set to Malay.
Asking for card, account or ID numbers
What's wrong: Meta's review page says not to ask people for "full length individual payment card numbers, financial account numbers, National Identification numbers, or other sensitive identifiers", or for documents that contain them. A partial identifier, like the last 4 digits, is allowed.
The fix: take the request out, or ask for the last 4 digits only. Collect documents in person, or through the secure route your business already uses.
- Bad: Hi {{1}}, to hold your booking on {{2}}, reply with your NRIC number and a photo of your card.
- Good: Hi {{1}}, your booking on {{2}} is held. To match your payment, reply with the last 4 digits of the card you paid with.
Wording that threatens
What's wrong: Meta's review page names threats of legal action and threats to shame a customer in public. A payment reminder that reads like a lawyer's letter falls here.
The fix: say what's due, when, and how to pay or ask a question. Keep the consequences for a phone call.
- Bad: Hi {{1}}, invoice {{2}} is overdue. Pay by Friday or we start legal action and tell your company.
- Good: Hi {{1}}, invoice {{2}} was due on {{3}}. You can pay through the link in the invoice email, or reply here if something on it looks wrong.
Selling outside WhatsApp's commerce rules
What's wrong: when a template offers goods or services for sale, Meta treats the descriptions, prices, fees, taxes and any required legal disclosures as a transaction, and those must follow WhatsApp's commerce rules.
The fix: read WhatsApp's commerce rules for what you sell before you write the offer, and send the offer as a marketing template.
Too long, or formatting the header can't take
What's wrong: Meta's components page caps the body at 1,024 characters and the header and footer at 60 each, and says a text header takes no Markdown special characters. The review page adds that the number of emojis in the body "may also be limited".
The fix: one message, one job. Keep the header to plain words, and move the detail to an email or a call.
- Bad header: *Viewing confirmed!*
- Good header: Viewing confirmed
A copy of a template you already have
What's wrong: the body and footer match a template you already have, so Meta rejects the new one as a duplicate. Business Support Home shows the name and language of the original. Authentication templates skip this check.
The fix: send the approved template, or change the body if the message really is different.
- Bad: a new viewing_reminder_2 with the same body and footer as viewing_reminder.
- Good: send viewing_reminder, or give viewing_reminder_2 its own job and words, like a reminder the day before instead of the hour before.
Templates you can copy
Each of these follows the rules above: words before and after every variable, numbers in order, one job per message. Swap in your own details, add a sample for each variable, and pick the category shown. Approval is still Meta's call.
A meeting or viewing reminder, filed as utility:
Hi {{1}}, a reminder that we're meeting on {{2}} at {{3}}. Reply here if you need to change the time.
A booking you moved at the customer's request, filed as utility:
Hi {{1}}, your appointment has moved to {{2}} at {{3}}, as you asked. Reply here if the new time doesn't work.
A payment reminder, filed as utility:
Hi {{1}}, your payment for {{2}} is due on {{3}}. Reply here if you have any questions about it.
A check-in with something new, filed as marketing and sent only to people who agreed to hear from you:
Hi {{1}}, it's been a while since we spoke. I have a new {{2}} that fits what you asked about. Reply YES and I'll send the details.
Made-up example: a property agent and her assistant send viewing reminders through a vendor, and get the same template rejected twice.
Monday: they submit "{{1}}, don't miss your viewing! Ask about our other units this week. Reply YES." as utility. It's rejected with INVALID_FORMAT, and the note says the template starts with a variable.
Monday afternoon: they change the start to "Hi {{1}}," and resubmit without reading further. The pitch for other units stays in.
Tuesday: it's rejected again, this time with INCORRECT_CATEGORY. The pitch makes it marketing.
Wednesday: they split it. A utility reminder: "Hi {{1}}, your viewing is on {{2}} at {{3}}. Reply here if you need to move it." They also write a marketing template about other units for buyers who said yes to hearing about listings, and Meta approves both by the evening.
Friday: reminders go out on time, and two buyers move their slot by replying instead of not turning up.
Rejected, paused or disabled
If your template was approved and then stopped sending, it wasn't rejected. It was paused or disabled, and the fix is different. Meta's template fundamentals page lists the statuses WhatsApp Manager shows:
| Status | What it means | Can you send it? |
|---|---|---|
| In review | Still being checked, for up to 24 hours | No |
| Rejected | Failed review | No: edit and resubmit, or appeal |
| Active, quality pending | Approved, no feedback yet | Yes |
| Active, high, medium or low quality | Approved, rated on feedback and read rates | Yes, but a low rating puts a pause close |
| Paused | Stopped after repeated negative feedback or low read rates | No, until it unpauses |
| Disabled | Stopped for good after more negative feedback | No: edit and resubmit |
Meta's pausing page says a template that drops to low quality is paused for 3 hours the first time, 6 hours the second, and disabled the third. A pause comes from how customers took the message: negative feedback, or people not reading it.
So look at who got it and whether they expected it, then make it more useful. Editing a paused template sends it back to review. A disabled template can be edited and resubmitted, so you don't start from nothing.
When to appeal
You can appeal a rejected template. Do it when you've read the reason and still think the template follows the rules, and if the reason holds, rewrite the template instead.
Meta's review page says an appeal must include a sample and gets a decision within 24 hours. In WhatsApp Manager, open Message templates under Account tools, open the template, edit it, add sample values and images with Add Sample, and submit. For a category decision, request a review instead.
Meta's template management page lets you edit a rejected or paused template as often as you like. An approved one takes 10 edits in 30 days, or one in 24 hours, so batch your changes to a live template into one edit.
When you don't need a template at all
Templates belong to the WhatsApp Business Platform, the paid service businesses reach through Meta or a vendor, and you need one there only to message someone who hasn't written to you in the last 24 hours. Inside those 24 hours you can reply freely.
If you're a small team following up one person at a time, from the WhatsApp Business app, there's no template review at all. The app has limits of its own. What is WhatsApp Business? compares the app with the Platform, and WhatsApp messaging limits covers how many people each one reaches.
Some tools link the number you already use as a device instead of using the Platform, so there are no templates to approve. ActivityTracker is one of them: its team inbox links your number as a device, the way WhatsApp Web does, and it isn't one of WhatsApp's own apps. WhatsApp's linked devices page warns that "linking your device through unofficial apps or websites may put your account at risk." So ActivityTracker spaces out the messages your number starts on its own, and stops them if WhatsApp warns the number. The rules still apply without a review: WhatsApp's page on using WhatsApp responsibly still says to message people who contacted you first, and not to bulk message or auto-message.
If most of your follow-ups are replies to people who wrote to you first, ActivityTracker's team inbox puts every number you use in one place, shows who's waiting on a reply, and lands each chat on the client's record.
See the WhatsApp team inboxKeep reading
Questions people ask
Meta names the reason in Business Support Home and in an email to your admins. The usual ones are badly written variables, an offer inside a utility template, asking for card or ID numbers, threatening wording, a copy of a template you already have, or a body that's too long.
Up to 24 hours, Meta says. An appeal is also decided within 24 hours.
On the Platform, you can reply freely for 24 hours after a customer's last message. After that, you need an approved template to write to them first. The WhatsApp Business app has no template review.
Yes. Edit it in WhatsApp Manager, add sample values with Add Sample, and submit. Meta says an appeal must include a sample and gets a decision within 24 hours.
WhatsApp rechecks approved templates and moves a utility template that should be marketing, such as one with an offer in it or content too unclear to place. Keep updates plain, and send offers as their own marketing template.
A rejected or paused template as often as you need. An approved one up to 10 times in 30 days, and once in 24 hours.
Sources
- Meta for Developers, Template review: review process, common rejection reasons, rejection notifications and appeals, read 27 October 2026
- Meta for Developers, message_template_status_update webhook reference: rejection reason codes, read 27 October 2026
- Meta for Developers, Template categorization: marketing, utility and authentication, and category updates, read 27 October 2026
- Meta for Developers, Template fundamentals: names, languages, positional variables and template status, read 27 October 2026
- Meta for Developers, Template components: body, header and footer character limits, read 27 October 2026
- Meta for Developers, WhatsApp error codes: template not found in the requested language, read 27 October 2026
- Meta for Developers, Template pausing, read 27 October 2026
- Meta for Developers, Template management: edit limits, read 27 October 2026
- WhatsApp Help Center, About linked devices, read 27 October 2026
- WhatsApp Help Center, How to use WhatsApp responsibly, read 27 October 2026



