WhatsApp Message Templates: A Complete Guide
On the WhatsApp Business Platform you can reply to a customer with almost anything, as long as they messaged you in the last 24 hours. Once that window closes, the Cloud API refuses free-form text (error 131047) and tells you to send a template instead. That is where most teams first run into WhatsApp message templates.
A template is a message format you register with Meta, get reviewed, and then fill with customer data each time you send it. Templates are the only way to start or restart a conversation on the official API, and they come with their own rules on length, buttons, categories, review and quality.
This guide covers all of it, using the limits Meta publishes as of October 2026.
Key takeaways
- You need a template for any message sent outside the 24-hour customer service window. Inside the window, free-form messages work.
- Every template has one required body (up to 1,024 characters), plus an optional header, footer and up to 10 buttons.
- Meta reviews each template (up to 24 hours), checks its category, and can pause or disable it later based on how recipients react.
- The category sets the price. Meta can move a utility template to marketing and bill it that way.
- Marketing templates are moving to the Marketing Messages API. Cloud API stops sending them on October 13, 2027.
When you need a template and when you don't
You need a template whenever no customer service window is open with that person. The window opens, or resets to 24 hours, each time the customer messages or calls you. While it is open you can send any service message: text, media, buttons, lists. When it closes, only approved templates go through. Our guide to the 24-hour window covers the timing edge cases.
| Situation | Template needed? | Why |
|---|---|---|
| Customer wrote 3 hours ago and you reply | No | The window is open |
| Customer wrote 3 days ago and you follow up | Yes | The window has closed |
| First message to someone who opted in on your website | Yes | No window has ever opened |
| Sending a login code | Yes, an authentication template | Only authentication templates may carry one-time codes |
Note that an open window no longer means free: from October 1, 2026, utility templates sent inside it are charged, and service messages are free only up to 1,000 per number per month. Meta also requires opt-in before any business-initiated message.
The four parts of a template and their limits
Only the body is required. Everything else is optional and has its own limits, listed on Meta's template components page.
| Component | Required? | What it holds | Limits |
|---|---|---|---|
| Header | No | Text, image, video, document or a map location | Text: 60 characters and 1 variable. Media is uploaded first to get a handle. GIF headers only via the Marketing Messages API |
| Body | Yes | The main message, with multiple variables | 1,024 characters |
| Footer | No | One short plain line, often opt-out wording | 60 characters |
| Buttons | No | Quick reply, URL, phone, copy code, Flow, catalog | Up to 10 in total |
Buttons have their own sub-limits:
- Quick reply: up to 10, labels up to 25 characters. A tap sends the label back to you as a message.
- URL: up to 2, labels up to 25 characters, URLs up to 2,000 characters with one variable at the end.
- Phone number: 1 per template, number up to 20 characters.
- Copy code: 1 per template, code up to 20 characters, supplied at send time.
- Flow: opens a multi-screen WhatsApp Flow form inside the chat.
Quick replies must sit together, before or after the other button types. With more than three buttons, WhatsApp shows two and folds the rest under "See all options", and templates with four or more buttons (or quick replies mixed with other types) can't be viewed on WhatsApp desktop.
Here is a utility template created through the API. Templates are created against your WhatsApp Business Account ID, while messages are sent from a phone number ID. The examples use v23.0; use the current Graph API version from Meta's changelog.
curl -X POST "https://graph.facebook.com/v23.0/WABA_ID/message_templates" \
-H "Authorization: Bearer $WHATSAPP_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "order_shipped_v1",
"language": "en",
"category": "UTILITY",
"parameter_format": "named",
"components": [
{
"type": "BODY",
"text": "Hi {{first_name}}, order {{order_id}} has shipped and should arrive by {{eta}}.",
"example": {
"body_text_named_params": [
{ "param_name": "first_name", "example": "Priya" },
{ "param_name": "order_id", "example": "A-48213" },
{ "param_name": "eta", "example": "Friday" }
]
}
},
{ "type": "FOOTER", "text": "Reply STOP to turn off delivery updates" },
{
"type": "BUTTONS",
"buttons": [
{ "type": "URL", "text": "View order", "url": "https://example.com/orders" }
]
}
]
}'
Names allow 512 characters of lowercase letters, numbers and underscores. Meta doesn't translate, so each language is its own submission under the same name, and each counts toward your limit: 250 templates per account for an unverified business portfolio, 6,000 once it is verified and a number has an approved display name. You can create up to 100 per hour.
Categories decide what you pay
Every template is marketing, utility or authentication. Utility must be non-promotional and tied to something the customer did or asked for (or be critical, like a safety alert). Authentication is for one-time codes only and uses fixed preset text. Marketing covers everything else, including anything mixed or vague.
Since April 9, 2025, a template submitted as utility that Meta judges to be marketing is approved as marketing, and approved templates are re-checked over time. Each category has its own per-market rate, so the label matters as much as the wording. Our breakdown of template categories shows where the lines fall and what the rate gap looks like.
One more change is coming. Meta announced on October 13, 2026 that marketing templates will be sent only through the Marketing Messages API from October 13, 2027, and accounts created on or after April 13, 2027 can't send marketing on Cloud API at all. Utility, authentication and service messages stay on Cloud API.
Review, statuses and quality
Meta reviews new and edited templates (automated plus manual checks) within 24 hours. Only APPROVED templates can be sent.
| API status | WhatsApp Manager label | Can you send it? |
|---|---|---|
APPROVED | Active (quality pending, high, medium or low) | Yes |
PENDING | In review | No |
REJECTED | Rejected | No |
PAUSED | Paused | No |
DISABLED | Disabled | No |
IN_APPEAL | Appeal requested | No |
After approval, each template earns a quality score (GREEN, YELLOW, RED, or UNKNOWN while feedback builds) from blocks, reports and read rates. A template that hits RED is paused for 3 hours the first time, 6 hours the second, and disabled the third. Sends against a paused template are rejected (error 132015) and not billed. A disabled template returns 132016, and the fix is a new template with different content.
New marketing and utility templates can also be paced: Meta holds part of a send (the response shows held_for_quality_assessment) until early feedback comes in, then releases or drops the held messages.
Editing has limits too. You can edit APPROVED, REJECTED or PAUSED templates; an approved one up to 10 times in 30 days and once per 24 hours. You can't change an approved template's category, an edit replaces all components, and the edited template goes back through review. Delete an approved template and its name is locked for 30 days. Templates unused for 12 months are archived, then deleted 28 days later unless you unarchive them. If a submission bounces, our guide to a rejected WhatsApp template walks through the fixes.
Sending a template
The send call names the template, its language and the values for each variable. Named parameters can be in any order; positional ones must follow the order in the text.
curl -X POST "https://graph.facebook.com/v23.0/PHONE_NUMBER_ID/messages" \
-H "Authorization: Bearer $WHATSAPP_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"messaging_product": "whatsapp",
"recipient_type": "individual",
"to": "+919811122233",
"type": "template",
"template": {
"name": "order_shipped_v1",
"language": { "code": "en" },
"components": [
{
"type": "body",
"parameters": [
{ "type": "text", "parameter_name": "first_name", "text": "Priya" },
{ "type": "text", "parameter_name": "order_id", "text": "A-48213" },
{ "type": "text", "parameter_name": "eta", "text": "Friday" }
]
}
]
}
}'
A 200 response with a wamid means Meta accepted the request; delivery shows up later in status webhooks. A language code with no approved version returns 132001, and a wrong variable count returns 132000.
Running a template library without surprises
Once you have more than a handful of templates, a little process saves a lot of debugging:
- Version your names.
order_shipped_v2beats editing a live template and avoids the 30-day name lock. - Store each template's category and refresh it with
GET /WABA_ID/message_templates?fields=name,category,status, so your code knows when one has become marketing. - Subscribe to the template webhooks:
message_template_status_update,message_template_quality_updateandtemplate_category_update. - Write one template per job. A body that is only a variable is treated as marketing and tends to fail review.
- Check the Template Library first. Its utility and authentication templates come pre-categorized with fixed wording.
Where Tenashi fits
Templates exist because the official API won't let a business open a conversation in free text. If most of your traffic is replies, follow-ups and group chats with people who know you, that machinery can be more than you need.
Tenashi is a WhatsApp workspace for teams that runs on your existing number, linked by QR scan like WhatsApp Web, not on Meta's official platform. Your team works one shared inbox with DMs and groups, a CRM under every chat, and canned replies. There are no templates to approve and no per-message fees, from $18/mo.
The honest limit: Tenashi has no templates, buttons, green tick or OTP support, its sends are deliberately paced, and WhatsApp can still ban numbers that spam. For high-volume notifications or login codes, use the Cloud API with templates. For the conversations around them, Tenashi is the simpler tool. Our complete guide to the WhatsApp API compares both routes.
See every feature · Get started
FAQ
How long does WhatsApp template approval take?
Meta says a review decision can take up to 24 hours, and many templates come back much faster. You are notified in WhatsApp Manager, by email to account admins and through the message_template_status_update webhook. If you appeal a rejection, Meta also aims to decide within 24 hours, and the appeal must include sample values.
Can I send a template inside the 24-hour window?
Yes. Templates can be sent at any time, inside or outside an open customer service window. You are billed by the template's category. Note that from October 1, 2026, utility templates sent inside an open window are charged, where they had been free since July 2025.
How many WhatsApp templates can one account have?
An account under an unverified business portfolio can hold 250 templates. Once the portfolio is verified and at least one phone number has an approved display name, the limit rises to 6,000. Each language version counts separately, and you can create at most 100 templates per hour.
Can I edit an approved template?
Yes, up to 10 times in a 30-day window and no more than once in 24 hours. You can change the components or time-to-live but not the category of an approved template. Every edit replaces all components and sends the template back through review before you can use it again.
Do I need a separate template for each language?
Yes. Meta does not translate templates, so you submit each language as its own template, usually under the same name with a different language code. Each version is reviewed separately and counts toward your limit, and at send time the language code must match an approved version.
What happens when a template gets paused?
A template that falls to the lowest quality rating is paused for 3 hours the first time and 6 hours the second. The third time it is disabled. Sends during a pause are rejected and not charged. Halt any campaigns using it, and consider rewriting the content or tightening who receives it.
Templates are the price of starting conversations on the official API. For the conversations themselves, get started with Tenashi.