MARKETING is the highest-scrutiny, highest-cost template category. Meta uses it for anything promotional — offers, campaigns, re-engagement, newsletters — and bills it at a premium. Getting marketing templates approved on the first submit requires understanding the category boundaries, the opt-out requirement, and the category-migration behaviour.
This page is the practical companion to the Template rules reference.
MARKETING vs UTILITY vs AUTHENTICATION
Meta categorises every template into exactly one of three buckets. Picking the wrong one means either a rejection, a silent re-categorisation, or a bill you did not budget for.Decision tree
Signal words
If a
UTILITY body contains any marketing signal words, Meta will either reject or migrate to MARKETING. Writing “Your order shipped — and here’s 20% off your next one!” is a MARKETING template, regardless of how you label it.
Billing differences
Meta moved to per-conversation pricing in 2024 and prices vary by recipient country. In every market, the relative ordering is stable:AUTHENTICATION— cheapest, priced per message in some regions.UTILITY— mid-tier, business-initiated transactional rate.MARKETING— premium, typically 2–5× the UTILITY rate depending on market.- Service (user-initiated, 24h window) — free in most regions.
UTILITY to MARKETING can multiply your send cost, always inspect the post-approval category — not just the status — when reviewing a template.
Opt-out button requirement
EU and Brazil regulations (GDPR, LGPD) require every marketing message to carry a clear, low-friction opt-out path. Meta’s review team enforces this at the content-review stage for templates destined for those markets and strongly encourages it globally. The canonical pattern is a footer line plus aQUICK_REPLY button:
STOP, FERMA, PARAR, BLOQUEAR) and automatically flags the contact as marketing_opt_out = true. Subsequent campaign audiences exclude them by default.
Category migration
Meta may re-categorise a template during review. Withallow_category_change: true (Switchbord’s default for MARKETING drafts), the template is moved silently instead of rejected.
When it happens
- You submit as
UTILITYbut the content contains marketing signal words. - You submit as
MARKETINGbut the content is actually aUTILITYupdate (less common, but happens). - Meta re-runs classification on already-approved templates and reclassifies post-hoc.
The webhook event
Meta firesmessage_template_status_update on the WABA webhook when status or category changes:
previous_category and new_category. In v22+ Meta also emits message_template_category_update for post-approval reclassification of a live template.
Switchbord’s webhook worker:
- Stores both the submitted category and the Meta-assigned category on the
templatesrow. - Logs every migration to
audit_logfor billing reconciliation. - Raises an internal alert when a
UTILITYtemplate is migrated toMARKETING(2–5× cost impact).
Best practices for high approval rates
- Put the sender in the first line.
"Ciao Marco, GB Viaggi ha pensato a te..."— Meta’s reviewer needs to identify the business immediately. - Avoid stacked emoji and exclamation marks. 🎉🔥💥!!! patterns trigger the spam classifier.
- No raw links in the body. Put URLs in buttons where Meta can parse them cleanly.
- One promotional idea per template. A template that pitches a sale AND announces new hours AND asks for a review will be rejected as vague.
- Realistic examples. Do not use
"20"next to a%— bake the unit into the example ("20%"). See numeric-only-example. - Opt-out everywhere. Footer line + quick reply, not just one.
- Set
allow_category_change: true. Better a migrated approval than a rejection. - Test in Italian first, translate second. GB Viaggi’s primary market is IT; approved IT templates clone cleanly to EN/DE. The opposite direction often trips on Italian-specific phrasing.
Sample marketing templates
These are the corrected bodies from BORD-336. All four passed review on the first resubmit. Copy them as starting points and adapt the variables.Winback — 30-day lapsed customer
Seasonal — summer campaign
Referral — ask for a share
Flash sale — time-limited offer
"20%" sits in the example with the % baked in — see numeric-only-example.