Noesa

Template approval

Why your WhatsApp template keeps getting rejected.

Five rules decide most template rejections, and none of them are in the error message Meta sends back. This is written from running Meta's template API in production — including the two failures that cost us a working day each.

What a template is actually for

When a customer messages your business, a 24-hour window opens and you can reply however you like — no template, no review, no approval. The window then closes. To start a conversation after that, or to reach someone who has not written to you today, you need a message template: fixed copy that Meta has reviewed in advance, with {{1}} placeholders for the parts that change.

That is the whole reason the review exists. Meta is not checking whether your message is useful. It is checking that you cannot use a pre-approved template as a hole through which arbitrary unreviewed text reaches people who did not ask for it. Nearly every rejection rule below makes sense once you read it as an anti-bypass rule rather than a style guide.

The five things that get a template rejected

These are the checks we run before submitting anything, because each one maps to a rejection we have actually collected. Every one of them is cheaper to catch in your own form than in a review cycle.

  1. 1. Placeholders must run 1 to n with no gaps. If your body uses {{1}} and {{3}} with no {{2}}, it is rejected. This usually happens after editing — you delete a sentence containing a variable and leave a hole in the numbering.
  2. 2. Every placeholder needs exactly one example value. Three placeholders, three samples. Meta uses them to judge what the finished message looks like, and a mismatch fails before a human ever reads your copy.
  3. 3. No two placeholders side by side. {{1}} {{2}} with nothing but a space between them reads to Meta as a free-form bypass — two adjacent variables can be concatenated into any sentence you like. Put real words between your variables.
  4. 4. The body cannot start or end with a placeholder. Same logic. A template that is nothing but a leading variable is a blank cheque. Open and close with fixed text you actually wrote.
  5. 5. The name must be lowercase_snake_case. No capitals, no spaces. order_shipped is fine; Order Shipped is not. This one is pure formatting and still catches people constantly.

The category trap — and what it costs you

Every template is submitted under a category. UTILITY covers transactional messages — an order shipped, a refund processed, an appointment confirmed. MARKETING covers anything promotional. The categories are billed differently, so the label is not cosmetic: it changes what each conversation costs you.

Here is the part nobody warns you about. Meta re-reviews categories and can move an approved template from UTILITY to MARKETING after the fact, without telling you. It happened to a storefront template of ours: it was submitted as UTILITY, approved as UTILITY, and quietly re-labelled later. Nothing in the console changed colour and no email arrived. The cost just went up.

The defence is to record the category you intended for each template and compare it against what Meta currently reports, rather than trusting the approval you got months ago. Our admin console flags the mismatch automatically for exactly this reason. If you manage templates by hand, make that comparison part of a monthly check — it is the only way you will notice.

Deleting a template is not undo

The obvious way to fix a badly categorised template is to delete it and submit it again properly. This fails, and the failure is genuinely confusing the first time.

Delete a template and Meta holds the name for a while afterwards. Recreate it too soon and you get error code 100 — the template is still being deleted, try again — which looks like a transient glitch and is not. Retrying with a backoff eventually works. But there is a second, nastier layer: some category decisions are keyed to the template name, so even once the name frees up, the recreated template can inherit the category you were trying to escape. You delete, you wait, you resubmit correctly, and it comes back wrong again.

The fix is unsatisfying and completely reliable: recreate it under a new name. A fresh name has no history, so it gets a fresh category decision. If you are attached to your naming scheme, version it — order_shipped_v2 — and move on. We lost most of a day to this before concluding the cooldown was not the real problem.

When it comes back rejected

A template sits in one of three states you care about: PENDING while Meta reviews it, then APPROVED or REJECTED. You can edit a template in the APPROVED and REJECTED states, but not while it is PENDING — so if you notice a mistake seconds after submitting, you still have to wait for the verdict before fixing it. Submit carefully the first time; there is no recall.

When a rejection does land, work through the five rules above before rewriting your copy. In our experience the message is almost never the problem — it is a numbering gap left by an edit, a missing example, or two variables that drifted next to each other. Fix the mechanics and resubmit the same wording.

Where this fits in selling on WhatsApp

Templates are the plumbing behind every order update, delivery notice and payment reminder your customers receive — the messages that arrive when nobody on your side is typing. Getting them approved is a one-time cost; getting them wrong is a recurring one, paid in failed sends and inflated conversation bills.

If you are setting this up from scratch, start with how to sell on WhatsApp for the full journey from first message to paid order. If you are deciding what should send these messages in the first place, chatbot vs AI agent is the honest comparison. And if you would rather not manage template state by hand at all, an AI agent on your WhatsApp number handles the submissions, the categories and the resubmits as part of running the number.

Frequently asked questions

How long does WhatsApp template approval take?
Often minutes, sometimes much longer, and Meta publishes no guarantee. The practical rule is to never make a launch, sale or festival campaign depend on a template submitted the same week — get it approved well ahead, because a rejection costs you another full review cycle.
Can I edit a template after it has been approved?
Yes, but only in certain states. Meta permits edits on APPROVED and REJECTED templates — not while one is PENDING review. If you spot a typo right after submitting, you have to wait for the verdict before you can touch it.
Why did my UTILITY template get changed to MARKETING?
Meta re-reviews categories and can recategorise a template after approval, without notifying you. It usually happens when copy that is meant to be transactional reads as promotional. This matters because category determines what you are billed, so a silent move to MARKETING raises your per-conversation cost on a template you thought was settled. Audit your live categories against what you submitted rather than trusting the approval email.
Why can't I recreate a template with the same name after deleting it?
Meta holds the name for a period after deletion and returns error code 100 — the template is still being deleted, try again. Worse, some category decisions are keyed to the name, so even after the name frees up you can inherit the old category. Recreating under a fresh name sidesteps both problems entirely.
Do I need templates if customers message me first?
No. Inside the 24-hour window that opens when a customer messages you, you can reply freely with no template at all. Templates exist for reopening a conversation after that window closes — order updates, delivery notices, renewal reminders.

See it working in one message.

Vaani is live on WhatsApp. Say hi and watch it answer, show a catalogue and take an order — no signup.