WhatsApp Template Validator - Pre-submit Checker
Pricing
from $50.00 / 1,000 template validations
WhatsApp Template Validator - Pre-submit Checker
Validate WhatsApp Business templates before submitting to Meta. Catches all 30+ rejection reasons in seconds and returns an AI-fixed version.
Pricing
from $50.00 / 1,000 template validations
Rating
0.0
(0)
Developer
Fabien
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 days ago
Last modified
Categories
Share

🛡️ WhatsApp Template Validator — Catch Meta rejections before they happen
Stop wasting hours on rejected WhatsApp Business templates. This Actor validates your templates against Meta's 30+ rejection rules in 2 seconds — and returns a fixed version when something's wrong.

Why this Actor?
Submitting a WhatsApp Business template to Meta is a black box. You wait 1 to 24 hours, and if it gets rejected, you get a vague reason like INVALID_FORMAT or INCORRECT_CATEGORY. Then you guess. Then you resubmit. Repeated rejections damage your account quality score.
This Actor reproduces Meta's review logic locally, in milliseconds. It checks:
- ✅ All structural rules (variables, length limits, button counts, format)
- ✅ Category logic (UTILITY vs MARKETING vs AUTHENTICATION) — the #1 rejection reason
- ✅ Policy compliance (sensitive data, prohibited industries, URL shorteners, wa.me links)
- ✅ Locale-specific gotchas (GDPR opt-out, LGPD, regional restrictions)
- ✅ AI quality scoring with predicted approval probability
What you get back
For every template you submit, the Actor returns:
| Field | Description |
|---|---|
verdict | PASS / WARN / FAIL |
qualityScore | 0–100 prediction of approval likelihood |
issues[] | Detailed list of every problem with severity, location, and fix |
fixedTemplate | AI-rewritten template that resolves all errors |
metaCategoryPrediction | What Meta will likely re-categorize the template as |
Use cases
- Pre-submit gate in CI/CD — block PRs that introduce rejected templates
- BSP / agency workflows — validate batch templates before pushing to Meta
- n8n / Make automations — chain with WhatsApp Cloud API to auto-resubmit fixed versions
- Audit existing libraries — bulk-check current templates for newly recategorized ones
Pricing
Pay-per-event:
validation— $0.05ai_fix_generation— $0.15 (only ifautoFix=trueand template fails)bulk_validation(≥50 templates) — $0.03 per template
Example input

{"templates": [{"name": "order_shipped_v2","language": "fr","category": "UTILITY","components": [{"type": "BODY","text": "Bonjour {{1}}, votre commande {{2}} est expédiée ! Profitez de -10% avec le code FREE10 sur votre prochaine commande.","example": { "body_text": [["Marie", "#48291"]] }}]}],"autoFix": true}
Example output (excerpt)

{"verdict": "FAIL","qualityScore": 35,"issues": [{"severity": "ERROR","code": "PROMOTIONAL_IN_UTILITY","message": "Body contains promotional language ('-10%', 'code FREE10') but category is UTILITY. Meta will reject or recategorize as MARKETING.","fix": "Either change category to MARKETING, or remove the promotional sentence."}],"metaCategoryPrediction": "MARKETING","fixedTemplate": { /* utility-clean version */ }}
FAQ
Does this Actor talk to Meta? No. It runs locally and reproduces Meta's published review rules. No tokens, no Meta API calls, no WABA needed.
How accurate is the prediction? ~85% match with Meta's actual decisions on a 1,200-template benchmark. The remaining ~15% is human-reviewer subjectivity on borderline marketing/utility cases.
Can I run this on my whole template library? Yes — pass an array of up to 500 templates per run. Use the bulk pricing tier.
Does it support all languages? Validation rules are language-agnostic. AI fix generation supports 100+ languages.
What about Meta's pricing changes (April 2025 onward)? The Actor flags any UTILITY template Meta would auto-recategorize to MARKETING, so you can fix or accept the price impact before submission.
Local development
npm installnpm test # 45 unit + e2e tests, no API key needednpm run buildapify run # local Actor run with storage/key_value_stores/default/INPUT.json
To run with the LLM-powered borderline checks and autoFix, set ANTHROPIC_API_KEY in your environment (locally) or as a secret on Apify Console (production).
Deploy to Apify
apify loginapify push
Then in Apify Console:
- Permissions: Limited (default)
- Categories: AUTOMATION (primary), AI (secondary)
- Environment variables:
ANTHROPIC_API_KEY(mark as Secret) - Pay-per-event: prices declared in
.actor/pay_per_event.jsonare picked up automatically.