The process
1
You write it
Body text, a category, a language, and example values for every blank.
Meta requires an example value for every variable at creation time.
A template submitted with
{{1}} and no sample of what {{1}} looks like
is rejected before a human sees it.2
Meta reviews it automatically
A machine-learning review decides most templates within minutes.
3
Or a human does
Anything the automated pass cannot triage is routed to a person, which can
take up to 24–48 hours.
4
Approved, or rejected with a reason
Approved templates can be sent. Rejected ones cannot, and the reason code
tells you what to change.
Why templates get rejected
INVALID_FORMAT — the most common, and always fixable
Nothing to do with your wording. Four causes:
TAG_CONTENT_MISMATCH — the category does not match the content
You submitted a promotional message as utility, or the language you declared is
not the language of the text.
Fix by re-categorising honestly. See the categories
below.
ABUSIVE_CONTENT — a policy violation
Content that breaches Meta’s Terms of Service, Commerce Policy or Business
Policy. In practice this catches:
- Threatening legal action, or threatening to publicly shame a customer
- Anything in a prohibited category — Meta’s Commerce Policy bars a specific list including alcohol, tobacco, weapons, drugs and adult products
- Requesting sensitive information (full card numbers, passwords) in the message body
Other frequent causes
A URL shortener
A URL shortener
bit.ly, tinyurl and similar are frequently rejected — a shortened link
hides the destination, and Meta treats that as a phishing signal. Use your
own domain.Placeholder text left in
Placeholder text left in
Hi {{1}}, welcome to [Company Name] — the bracketed placeholder is not a
variable and reads as an unfinished template.A duplicate of an existing template
A duplicate of an existing template
Same content under a different name.
Poor grammar or spelling
Poor grammar or spelling
Rejected as low quality, particularly where it makes the sender look
fraudulent.
Content the language does not match
Content the language does not match
A template declared
en whose body is Hindi. Declare the language you
actually wrote.