Your WhatsApp template was rejected. The reasons Meta publishes
Meta publishes two rejection lists for WhatsApp templates: a prose list of common reasons on its Template review page, and an eight-value reason enum on the status webhook. They do not match. Quoted from Meta's own pages, read on 19 September 2026.
Meta does publish an enumerated list of rejection reasons for WhatsApp
templates. It publishes two, in different shapes, on different pages, and they
do not line up. One is a prose list of common mistakes written for humans. The
other is an eight-value reason enum delivered to a webhook, and it is the one
your template actually gets labelled with.
The two lists, and what each is for
Meta’s Template review page, updated Jun 17, 2026, describes the process first:
When you submit a template creation request, the content undergoes validation through a combination of automated systems and manual reviews.
It states the outcome bluntly: “Templates that contain spam, scam-like content, or violate WhatsApp policies are rejected during this review process.” The check is not one-off, since “Templates are automatically reviewed upon creation or after editing.” The human list follows, under a heading Meta calls Common rejection reasons: “Submissions are commonly rejected for the following reasons, so make sure you avoid these mistakes.” Four groups sit under it, and the most specific is about syntax, not content.
| Group Meta names | One reason from it, verbatim |
|---|---|
| Parameter formatting | “The message template cannot start or end with a parameter (dangling parameters are not allowed).” |
| Content and policy violations | “The content contains potentially abusive or threatening content, such as threatening a customer with legal action or threatening to publicly shame them.” |
| Character limits and text format | “The body component will have different character limits depending on the format and tag of the template.” |
| Duplication | “The message template is a duplicate of an existing template.” |
Several of the listed reasons are not about what the message says at all:
parameters “missing or have mismatched curly braces”, parameters that are not
sequential, and “too many variable parameters relative to the message length”.
On duplication, Meta defines the collision narrowly, “If a template is submitted
with the same wording in the body and footer of an existing template, the
duplicate template will be rejected”, then exempts one category: “This check
does not apply to templates categorized as AUTHENTICATION.”
The machine list: eight values, five distinct sentences
The reason your template was rejected arrives as the reason property on the
message_template_status_update webhook, documented as “Template rejection
reason, if rejected.” There are eight values, and Meta publishes a description
for each.
| Value | Meta’s description, verbatim |
|---|---|
ABUSIVE_CONTENT |
“Indicates template contains content that violates our policies.” |
PROMOTIONAL |
“Indicates template contains content that violates our policies.” |
SCAM |
“Indicates template contains content that violates our policies.” |
INCORRECT_CATEGORY |
“Indicates the template’s content doesn’t match the category designated at the time of template creation.” |
TAG_CONTENT_MISMATCH |
“Indicates the template’s content doesn’t match the category designated at the time of template creation.” |
INVALID_FORMAT |
“Indicates template has an invalid format.” |
CATEGORY_NOT_AVAILABLE |
“(Deprecated) Indicates an authentication templates for an unsupported region.” |
NONE |
“Indicates template was paused.” |
The finding is how little the table says. Eight values carry five distinct
sentences. Three are described identically, so being told your template was
SCAM rather than PROMOTIONAL names a bucket and not the rule you broke. Two
more share a sentence word for word. And NONE, in a field called rejection
reason, means the template was paused, which is a status wearing a reason’s
clothes.
One value is treated differently. The payload carries a rejection_info object,
in Meta’s own comment on the syntax “only included if template rejected with
INVALID_FORMAT reason”. Its reason field “Provides a detailed explanation for
why the template was rejected”, and its recommendation field “Offers
actionable guidance on how to modify the template to resolve the rejection
reason.” Meta’s example of the pair:
Your template has parameters placed next to each other (like
{{1}}{{2}}) without text or punctuation between them.
Separate parameters with descriptive text and ensure each parameter is clearly contextualized.
So the platform can explain a rejection in plain language. It does so for formatting, not for policy.
The category case is a rejection, not a relabel
If you propose the wrong category, Meta does not quietly move the template. From
the Template categorization page: “REJECTED status indicates that WhatsApp
disagreed with the category you designated in your template creation request”,
and the webhook fires “with the reason property set to INCORRECT_CATEGORY”.
What you can do next depends on which of two processes produced the decision, and the Template categorization page documents them in separate sections. Reading a sentence from one into the other is how a reader ends up not appealing a decision Meta lets them appeal.
A decision made at creation can be reviewed. For a template rejected there, Meta lists three routes and the third is an appeal:
If your message template is rejected, you have the following options: Create a new message template via WhatsApp Manager or the API. Edit the template’s category, and resubmit for approval. Request a review.
A template approved in a category you did not ask for runs on the same clock, since “you can request a review up to 60 days from the creation date”.
The recurring sweep over already-approved templates is the case with no review. That is a separate process, and Meta introduces it as what happens “When you receive notice that a template’s category will be updated or a template will be rejected”. There the two outcomes diverge: “For utility templates that will be updated to marketing: You can request a review”, but “For marketing or utility templates that will be rejected: You cannot request a review.” Meta’s advice in that second case is replacement rather than appeal, and it names the use case: “Businesses on Cloud API can browse the template library to identify available options for your identity verification use case.”
One sentence in that same section sits awkwardly beside the one above it. Meta also writes “You have 60 days to review and appeal these changes in Business Support Home”. We are not going to guess which governs a marketing or utility template flagged for rejection by the sweep, and if you are in that case the cheap move is to try Business Support Home and to start the replacement template in parallel, which is what Meta recommends anyway.
REJECTED is one status among ten, and one event among fourteen
Two published lists again, and again they differ. The Message Template API
reference gives a status field, described as “Current status of the message
template”, with ten values: APPROVED, ARCHIVED, DELETED, DISABLED,
IN_APPEAL, LIMIT_EXCEEDED, PAUSED, PENDING, PENDING_DELETION and
REJECTED. The webhook’s event property has fourteen, and four of them are
not statuses at all: FLAGGED, LOCKED, REINSTATED and UNARCHIVED.
FLAGGED is a template that “has received negative feedback and is at risk of
being disabled”, a warning with no equivalent in the status field.
Only one value permits sending: “Templates must have a status of APPROVED before they can be sent in template messages”, and otherwise, “If it is rejected, or if its status changes to any other value, it cannot be sent in template messages.”
Rejection is not the only way to lose a template, and the other way is quieter. The Template pausing page sets an escalation on quality: “1st Instance: Paused for 3 hours”, then six hours, then disabled. The quality rating page states the general rule: “If the status changes to anything other than APPROVED, the template cannot be sent in template messages unless its APPROVED status is restored.”
There is an appeal route, and Meta documents it
Meta publishes both halves, the reason and the route to contest it, which is the difference from the Google review reply case, where the reason exists only as an API field.
Where the reason appears: “A rejection notification that includes the rejection reason will appear in Business Support Home.” What you can do with it: “If it is rejected, you can edit it and resubmit for approval, or appeal the decision.” The appeal has one requirement and one clock:
If your submission is rejected you may file an appeal. Note that appeals must include a sample.
The appeal will be reviewed and a decision made within 24 hours.
That matches the clock on the first decision: “It can take up to 24 hours for an
approval decision to be made.” An appeal in flight is visible, as IN_APPEAL in
the API and as Appeal Requested in WhatsApp Manager, which Meta describes as
“Indicates that an appeal has been requested.”
The one documented exception is not the category decision at creation, which can be reviewed, but the recurring sweep described above: a marketing or utility template that the sweep flags for rejection is the case where Meta writes “You cannot request a review.”
What we cannot tell you
How often templates are rejected, and which of the eight reasons dominates. Meta publishes no rates and no distribution, and vendor figures are each one company’s view of its own client base. We have not tested that and we are not going to assert it on someone else’s account of their own clients. What is published is the vocabulary, above.
mesej never messages anyone first, and no channel is connected to it today, so nothing on this page describes a message of ours and nothing here has answered a customer. Template approval treated as a formality is the adjacent problem, read one page at a time in review management software.
Sources
- Meta, WhatsApp Business Platform, Template review Read 19 September 2026.
- Meta, WhatsApp Business Platform, message_template_status_update webhook reference Read 19 September 2026.
- Meta, WhatsApp Business Platform, Template fundamentals Read 19 September 2026.
- Meta, WhatsApp Business Platform, Template categorization Read 19 September 2026.
- Meta, WhatsApp Business Platform, Template quality rating Read 19 September 2026.
- Meta, WhatsApp Business Platform, Template pausing Read 19 September 2026.
- Meta, WhatsApp Cloud API - Message Template API Read 19 September 2026.