Skip to main content

WhatsApp Template Rejected? Common reasons and how to fix

Understand why your WhatsApp template might be rejected and various ways to fix it.

Updated over a week ago

TL;DR Most rejections come from (1) placeholder formatting, (2) variables at the start/end or stacked together, (3) vague content, (4) wrong category/language, (5) link issues, and (6) too many variables for the amount of text. Fixes and “Bad → Good” examples below.


Quick checklist (before you click Submit edits for review in Spur)

  • Variables are {{1}}, {{2}}, {{3}} … (sequential, paired braces, no special characters).

  • Don’t start/end the body with a variable; never put variables back‑to‑back.

  • Content is clear (not just placeholders) and matches the chosen category and language.

  • Links are clean: avoid wa.me, avoid shorteners, use your own domain.

  • Formatting is tidy: avoid tabs/newlines abuse or 5+ consecutive spaces; headers/footers don’t use emojis/markup.

  • If you use many variables, add more words (see ratio tip in Reason #6).


The most common rejection reasons (with fixes and examples)

Copy the “Good” version that fits your use case. Adjust wording, keep the structure.

1) Misformatted or non‑sequential variables

What’s wrong: Missing braces, {{1}} {{3}} with no {{2}}, or special chars in placeholders.
Fix in Spur: Use Add variable and keep numbering in order.

Bad

Hi {1}, your code is {{3}}

Good

Hi {{1}}, your code is {{2}}.

2) Variable at the very start/end (or stacked side‑by‑side)

What’s wrong: Variable is first/last token, or {{1}} {{2}} with no real text. (Twilio)
Fix: Add words/punctuation before/after; merge variables if appropriate.

Bad

{{1}}, your order {{2}}

Good

Hi {{1}}, your order {{2}} is ready for pickup.

3) Vague or spam‑like content

What’s wrong: Templates like “Reminder: {{1}}” are too generic and often abused.
Fix: Give clear purpose and surround variables with context.

Bad

Reminder: {{1}}

Good

Reminder: your appointment at {{1}} is tomorrow at {{2}}. Reply 1 to confirm or 2 to reschedule.

4) Wrong category or language

What’s wrong: Content doesn’t match the selected category (e.g., promo submitted as Utility) or language metadata is wrong.
Fix:

  • Marketing: promos, win‑backs, back‑in‑stock.

  • Utility: order/appointment updates the user asked for.

  • Authentication: OTP/verification codes.
    Also ensure the selected language matches the text.


5) Link issues (wa.me, shorteners, wrong domain)

What’s wrong: Meta doesn’t allow direct WhatsApp links in templates; shortened or off‑brand domains get flagged.
Fix: Use your own domain and plain phone numbers in copy (not wa.me).

Bad

Chat with us: https://wa.me/14154443344

Good

Chat with us: +1 415 444 3344

6) Too many variables for too little text

What’s wrong: High variable density hurts clarity and triggers review failures.
Fix: Add context. A practical guardrail: min words ≈ (3 × variables) + 1.

Bad

Hi {{1}} Order {{2}}

Good

Hi {{1}}, your order {{2}} is confirmed. We’ll notify you when it ships.

7) Formatting: tabs/newlines/spacing

What’s wrong: Newlines/tabs or more than four consecutive spaces; messy spacing patterns.
Fix: Keep body as normal sentences.

Bad

Hi {{1}}, Your invoice {{2}} is ready.

Good

Hi {{1}}, your invoice {{2}} is ready.

8) Header/footer problems

What’s wrong: Headers/footers with emojis, markup, or newline characters; body beginning/ending with newline.
Fix: Keep headers/footers plain; keep body clean.


9) Duplicate templates

What’s wrong: Submitting the same text under a new name.
Fix: Change both name and wording if you need a variant.


10) Policy violations (Business/Commerce)

What’s wrong: Requests for full card numbers, national IDs, prohibited items, legal threats, or shaming language.
Fix: Don’t request sensitive identifiers; if needed, ask only for partials (e.g., last 4).


11) Naming rules for templates

What’s wrong: Names with spaces or special characters.
Fix: Use lowercase alphanumeric with underscores, e.g., order_update_shipped.


12) Character limits & operational gotchas

Heads‑up: Body is limited to ~1,024 characters; templates can only be edited under certain states and a limited number of times per month. (Operational caps vary by WABA and provider.)


Fixing a minimal example (why it fails and how to pass)

Risky draft

Hi - {{1}} Order no {{2}} .

Why it’s risky: Too terse and variable‑heavy; looks vague to reviewers.

Utility‑safe version

Hi {{1}}, your order {{2}} has been received. We’ll notify you when it ships. Reply HELP for support.

Marketing version

Hi {{1}}, thanks for your order {{2}}. Come back this week and save 10% with code THANKYOU10.

(Choose Utility for order updates; Marketing for promos.)


Copy‑paste templates that usually pass

Utility — Order shipped

Hi {{1}}, your order {{2}} has shipped. Track it here: {{3}}

Marketing — Back‑in‑stock

Hi {{1}}, {{2}} is back in stock. Grab yours: {{3}}

Authentication — OTP

Your {{1}} code is {{2}}. Do not share this code with anyone.

(Authentication has stricter patterns—keep it simple and purpose‑built.)


FAQ

What rejection codes will I see?
Common ones are INVALID_FORMAT (formatting error) and TAG_CONTENT_MISMATCH (category/language doesn’t match content).

Can Meta re‑categorize my template after approval?
Yes—content that looks promotional can be recategorized to Marketing. Keep Utility messages strictly transactional.

Do I need samples for placeholders?
Providing example values helps reviewers understand intent and speeds approvals; many providers explicitly ask for them when troubleshooting rejections.


Did this answer your question?