Rejections are not penalties. You can edit and resubmit a rejected template as many times as needed, at no cost.
Finding the rejection reason
When a template is rejected, it appears in Templates → All Templates with a red Rejected badge.Read the specific reason
Meta usually names the policy (e.g. “Incorrect category”, “Format mismatch”).
Common reasons and fixes
1. Promotional content without user consent
Rejection text: “Marketing content — user has not consented to receive messages” or “Unsolicited marketing”. Why it happens: Meta is protective of users receiving unsolicited promotions. Even if your intent is fine, language that reads as a cold sales pitch gets rejected in the Utility category. Fix:Submit it as Marketing instead
Submit it as Marketing instead
If it’s genuinely promotional, switch the category to Marketing. Marketing templates are allowed by Meta provided you have the user’s consent to message them.
Rewrite with transactional framing
Rewrite with transactional framing
If it’s transactional (e.g. an order update, a reminder), rewrite it to reference the specific transaction:
- Before: “Get 20% off this week only!”
- After:
Hi {{1}}, your order #{{2}} is ready for pickup at our store.
Remove sales language
Remove sales language
Words and phrases that often trigger flags: “buy now”, “limited time”, “special offer”, “discount code”, “sale ends”. These are only acceptable in Marketing category.
2. Formatting issues
Rejection text: “Invalid formatting” or “Unsupported formatting”. Why it happens: WhatsApp supports limited formatting — asterisks for bold, underscores for italic, tildes for strikethrough. Other formatting breaks rendering. Fix:- Use
*bold*,_italic_,~strikethrough~, and backticks formonospace. - Don’t use HTML tags like
<b>or<br>. - Keep line breaks simple — no tables, no indentation.
- Emojis are fine but use them sparingly.
3. Broken sample values
Rejection text: “Samples do not match variables” or “Missing sample”. Why it happens: When you submit a template with variables ({{1}}, {{2}}), Meta requires a sample value for each one so they can preview it.
Fix:
Provide realistic samples
Bad:
test. Good: For {{1}} a customer name “Alex Morgan”. For {{2}} an order number “#10293”.4. Category mismatch
Rejection text: “Category mismatch — template does not match declared category”. Why it happens: Xobito supports two categories (Marketing, Utility) with specific rules. Submitting under the wrong category is the single most common rejection. Category quick guide:| Category | Use for | Examples |
|---|---|---|
| Marketing | Promotions, offers, announcements | Flash sales, product launches, event invites, welcome-back offers |
| Utility | Transactional updates about existing business | Order confirmations, delivery updates, appointment reminders, account alerts |
5. URL domain not whitelisted
Rejection text: “Button URL domain not verified” or “URL mismatch with business domain”. Why it happens: If your template has a URL button, Meta expects the domain to belong to a verified business. Fix:Verify the domain in Meta Business Manager
Meta Business Manager → Business Settings → Brand Safety → Domains → Add Domain. Verify via DNS or HTML file.
6. Prohibited content
Rejection text: “Content violates WhatsApp Business Policy” or more specific (“alcohol”, “gambling”, “weapons”). Why it happens: Certain industries are restricted or banned on WhatsApp. Regulated industries:- Alcohol (allowed with restrictions in some countries)
- Tobacco (banned)
- Firearms / weapons (banned)
- Gambling (region-specific)
- Adult content (banned)
- Cryptocurrency (restricted)
- Pharmaceuticals (restricted)
- Dating services (restricted)
7. Variables at start or end of body
Rejection text: “Variable cannot be at the beginning or end of body”. Why it happens: Meta doesn’t allow a template body to start or end with a variable — this makes spammy “fill-in-the-blank” templates harder to create. Fix: Add static text around the variable.- Before:
{{1}} — your order is shipped. - After:
Hi {{1}}, your order is shipped!
8. Duplicate template name
Rejection text: “Template name already exists”. Fix: Template names must be unique per WABA. Add a version suffix:order_confirmation_v2.
9. Language mismatch
Rejection text: “Body text does not match declared language”. Why it happens: You declared the template as English but wrote the body in French, or vice-versa. Fix: Make sure the language code you pick in Xobito matches the actual language of the body.10. Spelling and grammar
Rejection text: “Spelling or grammar issues”. Why it happens: Meta’s review will reject templates with obvious typos — especially in marketing content. Fix: Proofread. Use Grammarly or a colleague for a second set of eyes before submitting.11. All-caps or excessive punctuation
Rejection text: “Excessive use of caps / punctuation”. Why it happens:LIMITED OFFER!!! reads as spam to Meta’s filters.
Fix: Title case with at most one exclamation mark: Limited offer!.
12. Media header missing or broken
Rejection text: “Header media sample invalid”. Why it happens: For templates with an image, video, or PDF header, you must upload a sample during submission. Fix: Re-open the template in Xobito and click Upload sample on the header. Use a real file you’d send, not a placeholder.Before you submit
Use this checklist to avoid rejections:Template name is unique, lowercase, underscore-separated.
Category matches content (Marketing for promotions, Utility for transactions).
Body has realistic sample values for every
{{n}} variable.No variable at the very start or end of the body.
URL buttons point to a verified business domain.
Language code matches the body language.
Media header has a sample file uploaded.
No prohibited industry content.
Spelling and grammar reviewed.
Re-submitting
When you believe the rejection was wrong
If you’re certain your template complies and was rejected incorrectly:Appeal the rejection
Click the rejected template → Appeal. Explain why you believe it complies with policy.
Related
Create a template
The full template creation guide.
Message Delivery
Why messages fail to deliver.