WhatsApp

The Complete Guide to WhatsApp Template Approval With Meta

· 5 min read

You have a WhatsApp Business number connected. You have contacts ready to message. You write a template, submit it, and... rejected. No useful explanation. Just "rejected" and a link to Meta's policy page that reads like it was written by committee.

WhatsApp template approval is the single biggest frustration for businesses adopting the WhatsApp Business API. The rules are specific, the error messages are vague, and getting it wrong means days of back-and-forth while your campaign sits waiting. This guide walks through every rule, every category, and every common pitfall — so your templates get approved the first time.

Understanding Template Categories

Every WhatsApp template belongs to one of three categories, and each has different rules:

Marketing

Promotional messages — offers, announcements, product updates, event invitations. The most common category and the most strictly reviewed. Meta watches for spam signals: excessive capitals, pressure language ("ACT NOW!!!"), blocked-content topics (loans, gambling, adult content). Marketing templates cost ₹0.86 per message in India.

Utility

Transactional messages — order confirmations, shipping updates, appointment reminders, account notifications. These are expected by the customer and tied to a specific action. Utility templates cost ₹0.12 per message. Meta will reclassify a utility template to marketing if the content reads like a promotion — "Your order is shipped! Also check out our new collection!" is not a utility message.

Authentication

One-time passwords and verification codes. The most restrictive category. Authentication templates cannot have custom headers, custom footers beyond an expiry timer, or custom buttons beyond the OTP button. The body must follow Meta's fixed format: {{1}} is your verification code. Authentication costs ₹0.12 per message.

The category determines what you can include. Marketing gets the most flexibility (headers, buttons, carousels, coupons). Authentication gets the least (fixed body, OTP button only). Choose the right category first — the rest follows from it.

Template Components Explained

Header (Optional)

A header appears above the body text. Four types: text (60 chars max), image, video, or document. Marketing and utility templates can use any type. Authentication templates cannot use headers at all. An image or video header makes your template visually distinctive in the customer's chat — worth the extra step.

Body (Required)

The main message. Up to 1,024 characters. Variables use positional notation: {{1}}, {{2}}, {{3}}. Variables cannot be at the start or end of the body, cannot be adjacent (no {{1}}{{2}}), must be sequential (no skipping {{2}} and jumping to {{3}}), and each must have a sample value provided. LigiComms validates all of these rules before submission — so you see the error immediately, not after a two-day Meta review.

Footer (Optional)

A small text line below the body. Up to 60 characters. Typically used for a disclaimer or a company name. For authentication, the footer is Meta's auto-generated expiry timer (you specify the minutes).

Buttons (Optional, Up to 3)

Three button types available for marketing and utility:

  • Quick Reply — customer taps, the button text is sent back as a message. Great for "Yes/No" or "Learn more."
  • URL — opens a link. Can include a dynamic {{1}} suffix for personalized URLs.
  • Phone — initiates a call to a specified number.

Marketing templates also support a Copy Code button — the customer taps to copy a coupon or referral code. For authentication, the only allowed button is an OTP button (COPY_CODE or ONE_TAP type).

Carousel (Marketing Only, 2-10 Cards)

A carousel template contains 2 to 10 swipeable cards, each with its own image and body text. All cards must share the same button layout (one set of buttons, applied identically across all cards). A carousel template cannot have a template-level header, footer, or buttons — only the cards carry content.

Coupon Code and Limited-Time Offer (Marketing Only)

A coupon code adds a "Copy code" affordance. A limited-time offer adds an expiry countdown. Both are marketing-only features.

Variable Mapping: What Goes Into {{1}}

Each {{n}} variable maps to a column in your contact list. When you send the template, the system replaces {{1}} with each recipient's first name, {{2}} with their order number, and so on.

But Meta needs to see sample values — not just which column the variable maps to, but a realistic example. When you submit a template that says "Hi {{1}}, your order {{2}} is on its way," Meta wants to see "Hi Priya, your order #4521 is on its way." If your sample is "Hi test, your order test123 is on its way," the template might get rejected for looking like a test, not a real business message.

LigiComms's template editor shows a variable mapping table that is rebuilt live as you type {{n}} tokens in the body. Each row has a dropdown for the contact column and an input for the sample value. The AI generator pre-fills these with realistic samples based on the contact fields you selected.

The Validation Layer That Catches Mistakes Before Meta Does

LigiComms runs your template through a comprehensive validation layer — the same rules whether you write manually or use the AI generator:

  • Naming: lowercase letters, numbers, and underscores only. 1-512 characters. No spaces, no special characters.
  • Language: must be a Meta-supported locale. LigiComms checks against the official supported-languages list.
  • Variables: no gaps (1,3 without 2), no duplicates, no adjacency, no leading/trailing, each must have a sample.
  • Buttons: type must be allowed for the category. Maximum 3. URL buttons need a valid URL. Carousel cards must share one button layout.
  • Category rules: authentication cannot have custom headers/buttons. Carousel requires marketing. Coupon/offer requires marketing.
  • Content patterns: blocked-content scanning for marketing (loan/gambling/adult language, excessive caps). Non-blocking warning when a utility template reads like marketing.

The validation runs before the template saves as a draft — so you never submit a template to Meta that would have been caught locally. The AI generator's output goes through the same rules, and if it fails, the generator retries with the specific failure fed back into the prompt.

Submission and Status Tracking

Once your template passes validation, you submit it to Meta. The flow:

  1. Media upload (if needed) — image or video headers are uploaded to Meta's storage via resumable upload. The returned media handle is used in the submission.
  2. Submit — the template is sent to Meta's API with all components. Status goes from Draft to Pending.
  3. Review — Meta reviews the template. This can take minutes to days.
  4. Status sync — Meta sends a webhook when the status changes (Approved, Rejected, Paused, Disabled). LigiComms catches these webhooks and updates the template status in real time. You also see the quality rating (Green, Yellow, Red) — an indicator of how Meta views your template's reception by recipients.

If rejected, the exact rejection reason from Meta is logged. No generic "Template not approved" — you see what Meta actually said, so you can fix the specific issue and resubmit.

Common Rejection Reasons and How to Avoid Them

  • "Content violates commerce policy" — your template mentions a restricted product category. Review Meta's commerce policy and avoid financial, gambling, pharmaceutical, or adult content language.
  • "Misleading content" — the template promises something unverifiable. Avoid "guaranteed results" or "100% success."
  • "Too similar to an existing template" — Meta deduplicates similar templates. Change the message significantly, not just a word or two.
  • "Sample values don't match the template" — your sample values are test-like or inconsistent with the body. Use realistic, professional samples.
  • "Category mismatch" — you submitted as utility, but the content reads like marketing. If you're promoting, use the marketing category.

Sending Approved Templates

Once approved, the template appears on the WhatsApp tab of the Templates page with a green "Approved" badge. To send:

  1. Go to the WhatsApp send page.
  2. Select the template.
  3. Choose recipients from your CRM contacts.
  4. Preview — see how the template looks with real variable values from your contacts.
  5. Send — each message is charged from your credit wallet at the template's category rate.

Failed sends are refunded automatically. The send log records every delivery attempt with status, timestamp, and recipient.

WhatsApp template approval is a hurdle — but it doesn't have to be a wall. With the right validation, clear category rules, and realistic samples, your templates will pass review on the first submission. And when they do, you have a direct, high-open-rate channel to every customer on your list.

Ready to simplify your social media?

Start your 14-day free trial of LigiComms. No credit card. No contracts. Just results.

Start free trial

Already using a tool you like? You can earn by recommending LigiComms instead → Affiliate Program