All Posts

WhatsApp Message Templates: Categories, Approval Rules, and How to Stop Getting Rejected

A WhatsApp message template card with variable placeholders, one approved and one flagged

On the WhatsApp Business API you cannot simply type a message and send it to a customer. If they have not written to you recently, the message has to be a template Meta approved in advance.

This is the rule that most confuses teams migrating off the free WhatsApp Business app, and it is where most early campaign problems originate — wrong category, inflated costs, or a rejection the day before a sale launches.

The 24-hour customer service window

Everything about templates follows from one mechanic.

When a customer sends you a message, a 24-hour customer service window opens. Inside that window you can reply freely — plain text, images, documents, whatever you like, no template, no approval.

The clock resets every time the customer writes again. When it closes, free-form replies stop being possible, and reopening the conversation requires an approved template.

That is the whole model. Customer-initiated: free-form. Business-initiated: template. In API terms, a plain type: "text" send only reaches a contact inside an open window; outside it you send a template or the call is rejected.

A budget note worth diarising: from 1 October 2026, free-form service replies and utility templates sent inside the 24-hour window stop being free to deliver and move to per-message billing, at the utility rate for each country. The window still works the same way — it just stops being a zero-cost zone.

The three template categories

Meta assigns every template a category, and the category determines what it may say and what it costs. Convo’s dashboard and Template API use the labels TRANSACTIONAL, MARKETING and OTP:

Category (Convo / Meta)PurposeExamples
TRANSACTIONAL / UtilityFollows up on a specific transaction or request the customer already madeOrder confirmed, shipped, out for delivery, payment received, appointment reminder, ticket update
OTP / AuthenticationVerifying identityOne-time passcodes, login codes, account recovery
MARKETING / MarketingEverything elseOffers, launches, re-engagement, abandoned cart, newsletters, event invites

Marketing is the most expensive category and the most heavily scrutinised. Authentication has a rigid, restricted format. Utility is the workhorse.

Meta decides the category, not you

You propose a category on submission; Meta’s review confirms or changes it. The line is drawn on content, and it is drawn strictly.

A template that says Your order #{{1}} has shipped is utility. Add — and here's 10% off your next one and the whole template becomes marketing, at marketing rates, even though 90% of it is transactional.

The practical rule: do not mix a promotion into a transactional message. It does not save you money and it frequently re-categorises the whole thing. Send the utility message, and if you want to promote, send a separate marketing template to a segment that will actually respond.

Authentication has its own rules

Authentication templates are the most constrained. Meta requires a fixed structure — a code delivered in a specific format with a copy-code button, and language it largely dictates. Do not attempt creative OTP copy; it will be rejected, and the standard format converts better anyway.

Note also that sending OTPs to recipients outside your WABA’s registered country is billed at a separate, higher authentication-international rate.

Anatomy of a template

A template has up to four parts:

  • Header (optional) — a short line of text, or an image, video or document.
  • Body (required) — your message, with variables as {{1}}, {{2}} and so on.
  • Footer (optional) — small grey text. Where an opt-out line belongs.
  • Buttons (optional) — quick replies, a call-to-action URL, a phone number, or a copy-code button.

Variables are the point. Write one template with placeholders and reuse it for every customer:

Hi {{1}}, your order {{2}} has been shipped and will arrive by {{3}}.
Track it any time using the button below.

Then supply ["Priya", "#40219", "Thursday"] per recipient. One template, one approval, every customer’s message personalised.

Submitting a template from the API

If you drive templates from your own systems rather than the dashboard, the Convo call is POST /project/{project_id}/wa_template with your X-API-WA-Project-API-Pwd header. The fields that matter:

  • label — the name you see in the dashboard
  • name — a unique identifier, lowercase and underscores only
  • categoryTRANSACTIONAL, MARKETING or OTP
  • typeTEXT, IMAGE, VIDEO, FILE, LOCATION, CAROUSEL or ORDER_DETAILS
  • language — the full language name, e.g. "English" or "Hindi"
  • text — the body, with {{1}} placeholders
  • sample_text — a realistic filled-in version for Meta’s reviewers
  • buttons via message_action_type (CTA, QuickReplies or All), and isClickTrackingEnabled to track URL clicks

A successful submission returns the template with status: "PENDING". The most common 400s are a duplicate name or an invalid enum value.

Why templates get rejected

Meta’s review is largely automated and unforgiving on formatting. In rough order of frequency:

1. Variables at the very start or very end. A body that begins with {{1}} or ends with {{2}} is rejected almost automatically — Meta cannot tell what the message will look like. Wrap them in text: Hi {{1}}, your…

2. Non-sequential or mismatched variables. Using {{1}} and {{3}} with no {{2}}, or declaring three variables and providing two samples.

3. Missing or unrealistic sample values. Submitting sample_text with values like “xxx” or “test.” Give real-looking samples — “Priya”, “#40219”, “Thursday”.

4. Wrong category. Promotional content submitted as TRANSACTIONAL. Re-categorised or rejected.

5. Grammar and formatting. Spelling errors, ALL CAPS, excessive emoji, three exclamation marks, or a wall of unbroken text.

6. Policy-restricted content. Alcohol, tobacco, weapons, adult content, gambling, unapproved health claims, real-money lending offers, cryptocurrency promotions, and anything promising guaranteed returns.

7. URL problems. Shortened links from generic shorteners (bit.ly and friends) are frequently flagged. Use your own domain, or a branded short domain.

8. Duplicate templates. Submitting the same content twice under different names.

Templates that pass — patterns to copy

Order confirmation (utility / TRANSACTIONAL)

Hi {{1}}, thanks for your order!

Order: {{2}}
Total: ₹{{3}}
Expected delivery: {{4}}

We'll message you the moment it ships.

Button: Track order (URL)

Appointment reminder (utility / TRANSACTIONAL)

Hi {{1}}, a reminder about your appointment with {{2}} tomorrow at {{3}}.

Reply CONFIRM to keep the slot, or RESCHEDULE if you need a different time.

Buttons: Confirm / Reschedule (quick replies)

Abandoned cart (marketing / MARKETING)

Hi {{1}}, you left {{2}} in your cart.

It's still available, but stock moves quickly. Want to complete your order?

Footer: Reply STOP to opt out Button: Complete order (URL)

Re-engagement (marketing / MARKETING)

Hi {{1}}, it's been a while since your last visit to {{2}}.

Here's what's new this month — have a look and tell us what you think.

Footer: Reply STOP to opt out

Three habits run through all of these: text before the first variable, realistic samples, and an opt-out line on anything marketing.

Getting approved faster

  • Submit early. Approval is usually minutes to a few hours, but budget a day before a campaign. Never submit the morning of a sale.
  • Build a library, not one-offs. Approve a reusable set — confirmation, shipping, delivery, reminder, feedback, re-engagement — and vary them with variables rather than submitting new templates weekly.
  • Keep names systematic. order_shipped_en, appointment_reminder_hi. You will thank yourself at fifty templates.
  • Localise properly. Templates are per-language. Approve a Hindi version as its own template rather than mixing languages in one body.
  • Watch template quality. Meta tracks per-template quality from block and report rates. A template that draws complaints can be paused or disabled outright, so retire poor performers rather than pushing volume through them.

From approved template to send

Once a template shows APPROVED, Convo’s programmatic pattern is to link it to a named, reusable campaign: POST /project/{project_id}/campaign/api with template_name and a stable campaign_name. That returns a LIVE campaign of type API that you then send to contacts repeatedly through the Send Campaign endpoint — configure once, send per contact.

Where templates fit in your setup

Templates are step five of the API setup — after your number is live and before your first campaign. If you are earlier in the process, start with the step-by-step setup guide. If you are still deciding whether the API is right for you, the app vs API comparison covers that.

Convo includes a template submission dashboard on both plans, so you can draft, submit, track approval status and reuse templates across campaigns without going into Meta’s tooling directly. Both plans also include the Template Message API if you want to trigger templates from your own systems — the API documentation covers the endpoints.

Book a 30-minute demo and we will review your first set of templates before you submit them.

FAQ

How long does WhatsApp template approval take? Usually minutes to a few hours. Occasionally up to 24 hours if a template gets flagged for manual review.

Can I edit an approved template? Yes, within limits — Meta allows a small number of edits to an approved template per month, and edits re-enter review. Substantial rewrites are better submitted as a new template.

How many templates can I create? Meta allows a large number per WABA — thousands — so the practical limit is your own ability to maintain them, not the cap.

Do I need a template to reply to a customer? No. Inside the 24-hour customer service window you can reply free-form. Outside it, you need a template.

Why was my template marked as marketing when I submitted it as TRANSACTIONAL? Almost always because it contains promotional content — a discount, an upsell, a “check out our new range” line — alongside the transactional content. Split them into two templates.

Book Your Demo Today

See how the WhatsApp Business API can grow your brand's reach and engagement.

Book a Demo
Recent Posts
A real estate agent handling a WhatsApp Business property inquiry on their phone beside a laptop dashboard tracking lead pipeline stages and response times

From Cold Leads to Closed Deals: Why Real Estate Communication Needs an Upgrade

A five-step WhatsApp Business API setup flow with completed checkmarks and chat bubbles

How to Set Up WhatsApp Business API for Your Business: A Step-by-Step Guide