What we check.
Every check below runs on your browser — instantly, locally, no data sent anywhere. These are the rules Meta actually rejects templates for.
✓Variable syntax — proper {{1}}, {{2}} formatting and sequential numbering
✓Variable position — Meta rejects variables at the start or end of the body
✓Sample values required — every {{n}} must have a realistic example
✓Length limits — body 1024, header 60, footer 60, button text 25
✓Category fit — promotional language in utility templates will often be re-categorized by Meta (English + Hebrew detection)
✓Percentage values in utility — discount-style numbers in utility templates trigger re-categorization
✓URL in body — Meta prefers links inside CTA buttons, not message text
✓Excessive caps — too many capital letters reads as spam
✓Excessive emoji / punctuation — !!!, ???, emoji spam
✓URL shorteners — bit.ly, tinyurl, etc. trigger automated rejection
✓Placeholder text — "test", "lorem ipsum", "asdf" in production templates
✓Forbidden content — alcohol, weapons, gambling, adult, regulated industries
✓Phone numbers in body — Meta wants these inside buttons, not message body
✓Authentication template rules — must contain OTP variable, no marketing copy
✓Whitespace formatting — multiple spaces, weird line breaks, trailing whitespace
✓Template name validity — lowercase letters, numbers, and underscores only
✓Button limits — max 3 buttons, max 25 chars each, URL & phone format
✓Suspicious domains — non-HTTPS URLs, IP addresses, unusual TLDs