WhatsApp Message Templates: The Approval Rules You Need to Know
Why does WhatsApp require pre-approved templates?
To prevent spam and protect the quality of the platform experience for billions of users, Meta doesn't let businesses send free-form proactive messages without controls. Any business-initiated message (not a reply to a customer message) outside a limited window must go through prior approval as a template — so Meta can confirm in advance that the content isn't misleading, overly aggressive marketing, abusive, or in conflict with its commerce policies, before it ever reaches the customer.
What's the difference between a template message and a session message?
The moment a customer messages a business, a precise 24-hour "service window" opens during which you can reply with completely free-form regular messages, including images, files, and links, with no prior approval needed at all. Outside that window — any business-initiated message (an appointment reminder, an order update, a new promotion) must be a pre-approved template, even if the content is identical to what would have been allowed inside the window.
What gets a template rejected?
The most common reasons: overly aggressive marketing language in a template classified as "Utility" instead of "Marketing," unclear or suspicious shortened URLs, requesting sensitive information inside the template (passwords, full credit card details), misleading wording that hides the message's real intent, or a mismatch between the template's internal name and the content actually shown to the customer.
How long does template approval take?
In most cases, a few minutes to a few hours, but it can take up to a day or two during busy periods at Meta, especially around holidays or major commerce events. It's strongly recommended to submit templates as early as possible rather than waiting until right before a planned campaign, to leave room to respond if a template gets rejected and needs rewording. In lynxbe, you can track every template's approval status directly from the system, including an immediate alert on rejection.
What are the three template categories and why does it matter?
Meta classifies every template into one of three categories: Marketing, Utility, or Authentication. The classification determines both the per-conversation price and how easy approval is — Utility templates (like an order update or an appointment reminder) get approved relatively easily and cost less per conversation, while Marketing templates are reviewed far more strictly, cost more per conversation, and can get blocked if they're worded like an "innocent" update but actually market a sale or discount.
Can I edit a template that was already approved?
No — any change to the content, even something as minor as fixing a typo, requires resubmitting it as a brand-new template with full re-approval from scratch. That said, you can use dynamic variables (like {{1}} for a customer name or {{2}} for an order number) inside an approved template without needing re-approval on every send, as long as the overall structure and wording of the message don't actually change.
What components are allowed inside a template?
A template can include an optional header (short text, image, video, or document), a main body of up to 1,024 characters, a short footer for additional details, and action buttons — up to three text, phone, or link buttons, or alternatively quick-reply buttons that submit a response directly without the customer having to type anything at all.
How do personalization variables work inside a template?
A variable is marked with double curly braces like {{1}} or {{2}} at the exact spot where dynamic content should appear — a customer name, a payment amount, a delivery date, and so on. At actual send time, the management platform (like lynxbe) fills in the real, precise value for each customer individually from the database, so every customer receives a message that looks fully personalized even though it was sent from one single template approved just once.
What's the difference between "Named" and "Unnamed" template parameters?
This is a technical difference in Meta's newer API versions: in the older method (Unnamed), variables are numbered purely by order of appearance ({{1}}, {{2}}...), while in the newer method (Named) every variable has a clear name like {{customer_name}} or {{order_number}}, which makes the template more readable and maintainable and reduces data-entry mistakes when a template has many variables. Modern management platforms like lynxbe support both methods and let you choose whichever is more convenient for the team building the templates.
Comments
💬 Share your thoughts