Back to all guides
Templates• 8 min read•22 January 2026

WhatsApp Message Template Approval: Rules, Rejections and Fixes

How Meta reviews templates, category rules, variable formatting, button limits and the exact rewrites that turn rejections into approvals.

Templates Approval Compliance

Templates are pre-approved messages you can send outside the 24-hour window. Approval is mostly mechanical once you know the rules.

Anatomy of a template

  • Header (optional): text, image, video or document.
  • Body (required): up to 1,024 characters, variables as {{1}}, {{2}}.
  • Footer (optional): 60 characters, no variables — great for "Reply STOP to opt out".
  • Buttons (optional): up to 3 quick replies, or up to 2 call-to-action buttons (URL / phone).

Choose the category honestly

Utility must reference a specific transaction the user made. Marketing covers anything promotional, including "we miss you" and cross-sells. Authentication is OTP-only and must use the authentication template format. Mis-categorising is the top reason for silent re-categorisation and higher billing.

The eight most common rejection reasons

  1. Variable at the start or end of the body — Meta rejects {{1}}, your order shipped. Write "Hi {{1}}, your order shipped".
  2. Two variables back to back — {{1}} {{2}} is rejected; add words between them.
  3. Sample content missing — always fill sample values for every variable.
  4. Promotional content in a utility template.
  5. Broken or shortened URLs — use your own domain, avoid bit.ly.
  6. Threatening or debt-shaming language in collections messages.
  7. Requesting sensitive data — card numbers, full account numbers, passwords.
  8. Generic placeholder text like "Hello {{1}}, {{2}}" with no real message.

Rewrites that get approved

Rejected: "{{1}} 70% OFF SALE!!! Click bit.ly/xyz"

Approved: "Hi {{1}}, our seasonal sale is live until Sunday. Tap below to view the collection." + URL button to your domain.

Rejected (utility): "Your order {{1}} shipped. Also check our new arrivals!"

Approved (utility): "Hi {{1}}, your order {{2}} has shipped and arrives by {{3}}. Track it below." + Track Order button.

Operational tips

  • Name templates by purpose and version: order_shipped_v3.
  • Create the same template in every language you serve; Meta matches by language code.
  • Keep an approved "fallback" utility template for outages.
  • If a template is paused for quality, edit the copy rather than resubmitting identical text.

Approvals for utility templates usually land in minutes. Build the library once and campaign speed stops being a bottleneck.

Put this into practice with TIZYY

Official Meta Cloud API, template builder, campaigns, flow automation and a shared team inbox — live in minutes.

Keep reading

Next guide
Is WhatsApp Business API Free? The Honest Answer