Why your WhatsApp template keeps getting rejected

Template rejection is the single most common reason a WhatsApp project misses its launch date. The integration works, the number is verified, and then the one message you actually need to send keeps coming back refused with a reason that explains nothing.

Almost every rejection comes down to the same handful of causes. Here they are, with the fix.

First, why templates exist at all

WhatsApp lets you reply freely for 24 hours after a customer messages you. Outside that window you may only send a message Meta has approved in advance. That is a template.

The rule exists to stop WhatsApp turning into SMS spam, and Meta enforces it strictly. Understanding that intent explains most rejections: the reviewer is asking whether a stranger receiving this message unprompted would feel informed or harassed.

Cause 1: the category does not match the content

Templates are submitted under a category – broadly, a utility message about something the customer already did, a marketing message promoting something, or an authentication message carrying a code.

Marketing costs more than utility, so there is a standing temptation to file promotional content as utility. Reviewers look for exactly this.

A message confirming an order is utility. The same message with “and here is 10% off your next one” at the end is marketing. One promotional sentence reclassifies the whole template.

Fix: split them. Send the confirmation as utility, and the offer as a separate marketing template, if at all.

Cause 2: placeholders that could produce anything

A template full of variables and almost no fixed text gives the reviewer nothing to assess. If the message is effectively a blank form, it reads as an attempt to send arbitrary content through an approved shell.

The common failures are a template that is mostly placeholders, a placeholder sitting at the very start or very end with no surrounding words, and two placeholders touching each other.

Fix: write enough fixed text that the message means something on its own, and surround every variable with words. Supply realistic samples – a reviewer who can picture the sent message approves it faster.

Cause 3: the sample values are lazy

Meta asks for example values for each variable. Submitting “test”, “abc” or “123” is a quiet way to get refused, because the reviewer cannot tell what the message will look like in production.

Fix: use values that look real. A name that is a name, an order number in your actual format, a date written the way your system writes it.

Cause 4: it reads like spam

Shouting in capitals, stacked exclamation marks, urgency language, and anything that sounds like a prize or a guaranteed return will fail. So will content in restricted categories regardless of how it is worded.

Fix: write it the way you would write a short email to a customer who is already yours. Plain, specific, no pressure.

Cause 5: the button does not match the text

Templates can carry buttons – a link, a phone number, a quick reply. Rejections happen when the button destination has nothing to do with the message, when the link goes somewhere unrelated to the business, or when a URL shortener hides where the customer is actually being sent.

Fix: link to your own domain, and make the button label describe what is on the other side.

Cause 6: nobody agreed to receive it

This one is not visible in the template itself, but it governs whether your account survives. Meta expects customers to have opted in to hearing from you on WhatsApp, and expects you to be able to show how.

A template can pass review and still sink your quality rating once real recipients start blocking or reporting it. Quality rating drives your sending limits, so this is the failure that costs most.

Fix: collect opt-in explicitly, record when and how, and give people an obvious way to stop. Honour it immediately.

A checklist before you submit

  • Does the category honestly match the content, including the last sentence?
  • Does the message still make sense if you delete every variable?
  • Are the sample values ones a real customer would see?
  • Would this read as reasonable to someone who forgot they signed up?
  • Does every button go somewhere the message mentions?
  • Can you show where the opt-in came from?

If it still gets rejected

Change one thing at a time. Resubmitting a template with five edits teaches you nothing about which one was the problem, and repeated rejections on the same account are not free of consequence.

Start with the category. In our experience it is the cause more often than the wording, and it is the cheapest thing to change.

Meta’s template policies and categories are updated regularly. Check the current documentation before relying on any specific rule described here.

Scroll to Top