Approved WhatsApp Template: How to Create One and Avoid Rejection
How to create a WhatsApp template Meta approves: the right category, variables, buttons, rejection reasons, ready-to-use examples and what a paused template is.
In this article
An approved WhatsApp template is a message with fixed text, reviewed and cleared by Meta before you use it. It is the only way to start a conversation through the official API outside the 24-hour window, and that makes it the first real obstacle for anyone connecting a number. Approval depends on three things: the right category, text that makes sense once the variables are filled in, and nothing that Meta's policy prohibits. The rest of this guide shows how to get each one right, what to do when Meta rejects a template and what happens to the template after it is approved.
What a template is and why it needs approval
On the regular WhatsApp Business app, on the phone, you write whatever you want to whoever you want. On the official API, the rule is different, and it is Meta's, not the provider's. A business can only send a free-form message to a person inside the 24-hour window, which opens when that person writes first. Past that, the only message that goes out is a pre-approved template. A free-form message outside the window is not even sent: Meta rejects it with code 131047.
The reason is simple. The business is the one starting the conversation, and the person on the other end asked for nothing at that moment. Meta reviews the text beforehand to make sure it says what the category promises, that it is not a scam and that it does not violate the messaging policy. That is what keeps WhatsApp free of spam, and it is what protects your number: people who receive a clear message block less, and blocks are what drag quality down.
Every bulk send through the official API uses a template, because the whole list is outside the window. A campaign to 500 people is one approved template sent 500 times, each time with that contact's variables.
Anatomy of a template: header, body, footer, buttons and variables
A template has up to four parts, and only one is required.
- Header (optional): a short bold line, up to 60 characters, or a media file. It can have one variable.
- Body (required): the main text, up to 1,024 characters. This is where the variables go.
- Footer (optional): a small gray line, up to 60 characters, with no variables. It is for a signature or for the note on how to stop receiving messages.
- Buttons (optional): quick-reply or link buttons. We cover them in their own section.
Variables are the numbered braces in the text: {{1}}, {{2}}, {{3}}. At send time, each one is replaced with that person's data: the name, the order number, the appointment date. Three rules apply to all of them:
- Numbering is sequential and starts at 1. A body with
{{1}}and{{3}}, but no{{2}}, is rejected. - Every variable needs an example when you create the template. Meta reviews the text with the examples filled in; without them there is no way to know whether "Hi {{1}}" will become "Hi Marina" or "Hi click here".
- A variable does not replace text. A body that is almost all variables, or that starts and ends with one, is often rejected, because Meta cannot evaluate what the message says.
The template name has rules too: lowercase letters, numbers and underscores, such as order_confirmation or appointment_reminder_v2. And each template is created in one language. An approved pt_BR template cannot be used to send in en_US; sending in the wrong language fails with code 132001.
Which category to choose: marketing, utility or authentication?
The category is the most important decision, for two reasons. It defines what Meta expects to find in the text, and it defines how much Meta charges per delivered message.
| Category | What it is for | Examples | What Meta charges |
|---|---|---|---|
| Utility | Following up on something the person asked for or already has with you | Order confirmation, appointment reminder, delivery notice, payment slip (boleto) about to expire | Utility rate, the lowest. Inside an open window it was free, but it becomes charged on 10/01/2026 |
| Marketing | Promoting, offering, re-engaging | Promotion, launch, abandoned cart, "we miss you" | Marketing rate, the highest. Only free inside the 72-hour window of a Click-to-WhatsApp ad |
| Authentication | Delivering a one-time code | Login code, sign-up confirmation | Authentication rate, the same as utility in Brazil |
The amounts are in the table Meta published in September 2026. Check the official rate card before running the numbers, and remember that Meta always bills you directly. Frame Conexa does not charge per message.
The classic temptation is to create a utility template with a bit of promotion inside, to pay less. It does not work. Meta reads the text and, when it does not match the declared category, does one of two things: rejects it, or reclassifies the template as marketing and approves it that way. In Frame Conexa, creation already asks Meta to adjust the category instead of rejecting, so the most common outcome is a template approved as marketing when you thought it was utility. This shows up in the dashboard, and it is worth checking before the first send.
A consequence few people consider: a delivered marketing template counts toward Meta's per-user limit, which adds up all businesses that message that user. Someone who has received too much marketing in recent hours will not receive yours, and the send fails with 131049. Utility and authentication do not count toward that. Another reason not to disguise utility as marketing, or the other way around.
Why does Meta reject templates? Common reasons and fixes
The rejection comes with a short reason, which the dashboard shows next to the template. The cases that appear most in practice are these.
Invalid format. Out-of-sequence variable, variable with no example, text full of spaces or excess line breaks, body that starts and ends with a variable. Fix: number from 1 upward, give a realistic example for each and write real text around them.
Content does not match the category. "Your order has shipped. Enjoy 20% off your next purchase" declared as utility. Fix: remove the offer, or accept the marketing category.
Vague text or text that looks like a scam. "Click the link to resolve your pending issue" without saying which issue or who the company is. Fix: say who is speaking, what happened and what the person should do, with the company name in the text or footer.
Shortened or generic link. Shorteners hide the destination, and Meta treats that as a risk. Fix: use your company's domain in the link button, with the variable part only at the end of the URL.
Content prohibited by the policy. Products and services that Meta's commerce policy does not allow to be advertised on WhatsApp. There is no text fix here; it is a type of business that does not fit the platform.
Duplicate. A template with the same name and language as another one already in the account. Fix: delete the old one or change the name.
Tip: before submitting for review, read the template with the examples filled in, the way the person will read it. If a sentence only makes sense to someone who knows your company from the inside, rewrite it. It is that text, not your template with braces, that Meta evaluates.
Rejected is not the end. The template can be edited and resubmitted for review, and the edit puts it back in the pending state. When the reason is not clear, the quickest way out is usually to create a new one with revised text, instead of disputing the decision.
12 template examples that usually get approved
The texts below follow the rules from the previous section: variables with text around them, a category consistent with the content and the company identified. Use them as a starting point, not as a guarantee: the final decision is always Meta's, and the same text can be approved on one account and reclassified on another.
Store: order confirmation, cart and promotion
- Order confirmation (utility): "Hi {{1}}, we received your order {{2}} at Alfa Store. Shipping is expected within {{3}} business days. If you need anything, just reply here." Link button: Track order.
- Order ready for pickup (utility): "{{1}}, your order {{2}} is now available for pickup at Alfa Store, Monday to Saturday, 9 a.m. to 6 p.m. It is reserved for 5 days."
- Abandoned cart (marketing): "Hi {{1}}, the items you picked at Alfa Store are still in your cart. We are holding them for another 24 hours." Link button: View my cart.
- Promotion of the week (marketing): "{{1}}, this week Alfa Store has {{2}} off on {{3}}. Valid until Sunday, while supplies last." Quick-reply buttons: Show me and Not interested.
Clinic and school: appointment reminder, notice and billing
- Appointment reminder (utility): "Hi {{1}}, a reminder of your appointment at Beta Clinic with {{2}}, on {{3}} at {{4}}. Do you confirm?" Quick-reply buttons: Confirm and Reschedule.
- Result available (utility): "{{1}}, the result of your {{2}} exam is now available at Beta Clinic. You can pick it up at the front desk or access it through the link." Link button: View result.
- Parent meeting (utility): "Dear guardian of {{1}}, the parent meeting for class {{2}} at Gamma School will be on {{3}} at {{4}}. We count on your presence."
- Re-enrollment open (marketing): "Hi {{1}}, re-enrollment at Gamma School for 2027 is open until {{2}}, with a special deal for anyone who renews before the deadline." Link button: See terms.
Notice items 7 and 8. Both are from the school, to the same audience. The first gives information about something that already exists between the school and the family: it is utility. The second invites them to buy again, with a benefit: it is marketing. What separates the categories is the intent of the message, not who sends it.
Digital course creator: live class, offer and re-engagement
- Access granted (utility): "{{1}}, your access to the {{2}} course is now live. Sign in with the email {{3}} in the student area." Link button: Go to student area.
- Live class starts in 1 hour (utility): "{{1}}, class {{2}} of the course you enrolled in starts at {{3}}. The access link is the same as in the student area." It counts as utility because the person signed up for the class. If the text invites them to buy something, it becomes marketing.
- Cart open (marketing): "{{1}}, enrollment for {{2}} opens today and stays open until {{3}}. People on the waitlist get priority." Link button: Save my spot.
- Re-engagement (marketing): "Hi {{1}}, it has been a while since we saw you around. We prepared new content about {{2}} that may interest you. Want to receive it?" Quick-reply buttons: Yes, send it and Stop receiving.
The "Stop receiving" button in the last example is not decoration. Someone who answers with it is asking to leave, and Meta's policy requires respecting the request. In Frame Conexa, anyone who replies by writing "stop", "unsubscribe", "cancel", "remove" or similar words (in Portuguese: "sair", "parar", "stop", "cancelar", "descadastrar" or "remover") is automatically suppressed from future campaigns, as is anyone who blocks marketing messages inside WhatsApp itself. The button tap arrives as a click in the campaign report, and from there you can build an audience with those people to exclude them from future sends.
Buttons: quick reply or link, and how the click shows up in the report
Two types of button go through Meta's approval, and they behave differently once the message is delivered.
The quick-reply button sends a message back to you with the button's text. When the person taps "Confirm", a "Confirm" message arrives in the conversation, and that opens the 24-hour window: you can reply freely. It is the right button for anything that asks the person to make a decision.
The link button opens a URL in the phone's browser. Nothing comes back to WhatsApp. It is the right button for taking someone to an order, a cart or a sales page. The URL can have a variable at the end, to take each person to their own order, and Meta asks for a complete example of it.
That difference defines what can be measured. In the Frame Conexa campaign report, a quick-reply button click is counted per person and per button, and attribution is done by the identifier of the message the person replied to, never by phone number. Phone number looks like the obvious route, but in Brazil the number sometimes comes back from Meta without the ninth digit, and matching by phone would get half the base wrong. A link button, on the other hand, generates no event in WhatsApp, and that is why the report shows no number next to it. A "0" there would claim that nobody opened the link, which is not true: there is just no way to know.
Note: if click-through rate matters, prefer the quick-reply button and take the person to the link in the next message, inside the window that the click just opened. You measure the click and also gain an open conversation.
After approval: template quality and automatic pausing
Approval is not permanent. Each template has its own quality, calculated by Meta from how people react to it: blocks, reports and read rate. It starts as unknown, becomes green, yellow or red depending on use, and you follow it in WhatsApp Manager and in the dashboard.
3 hours, 6 hours, disabled: Meta's ladder
When a template's quality reaches red, Meta pauses it on its own. According to the official template pausing page, the ladder is this:
| Time | What happens | Duration |
|---|---|---|
| 1st | Template paused | 3 hours |
| 2nd | Template paused | 6 hours |
| 3rd | Template disabled | Permanent |
A paused template does not go out. The API rejects the send, and Frame Conexa does not even try: the template's state is updated by the notice Meta itself sends on every change, and a template that is not listed as approved is blocked before the call. The notice also arrives by email and in WhatsApp Manager. The pause can be undone by hand in WhatsApp Manager, but undoing it without changing anything tends to repeat the result. The path that works is to review the text, the audience or both, and create a new template.
The pause applies to the template, not the number, and does not change sending capacity right away. But Meta warns, on the same page, that anyone who keeps sending templates that reach low quality may see the number affected. Since number capacity and quality go together, a bad template left running is the cheapest way to make everything that follows worse.
Three habits avoid the ladder: send only to people who gave permission, offer a clear way to stop receiving messages and never resend the same message to someone who did not reply to the first. The errors Meta returns during a send, such as 131026 and 131049, are explained one by one in the API error dictionary.
How to create one in Frame Conexa and through the API
In the dashboard, the Templates screen lists everything that exists in your Meta account, with the state of each: pending, approved, rejected with the reason, paused. Creating means filling in category, language, header, body with the examples for each variable, footer and buttons. The template is born pending and becomes approved when Meta decides. There is no official deadline: it usually takes from minutes to a few hours, but it can take longer, and no provider can speed that up.
Creating and editing templates requires a marketing number. This is a commercial decision of ours, not a Meta rule: the support number sends already-approved utility and authentication templates, and only the marketing number creates templates and sends marketing ones. The difference between the two is on the plans page.
Through the API, creation is one call. The fc_ token is generated in Settings, on the API tab, and the instance id comes from GET /api/v1/instances, as in the first message guide.
curl -X POST https://frameconexa.com/api/v1/instances/$FRAME_CONEXA_INSTANCE_ID/templates \
-H "Authorization: Bearer fc_YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "order_confirmation",
"category": "UTILITY",
"language": "en_US",
"body": "Hi {{1}}, we received your order {{2}} at Alfa Store. Shipping is expected within {{3}} business days.",
"bodyExamples": ["Marina", "7842", "3"],
"footer": "Alfa Store",
"buttons": [
{ "type": "URL", "text": "Track order", "url": "https://store.example/order/{{1}}", "urlExample": "https://store.example/order/7842" }
],
"allowCategoryChange": true
}'
The response carries the id Meta assigned, the initial state and the category under which the template entered review:
{
"ok": true,
"template": { "id": "1122334455", "status": "PENDING", "category": "UTILITY" }
}
A 403 on this route means the instance is not a marketing one. A 400 is almost always a variable without an example or a name outside the pattern, and the body says which. The full fields are in the template creation reference. Listing, editing and deleting follow the same path, and deletion removes only the language indicated, preserving the others.
Frequently asked questions
How long does WhatsApp template approval take?
Meta does not publish a deadline. In practice it usually takes from minutes to a few hours, and sometimes more, depending on the category and the content. No provider can speed up the review, because it happens entirely on Meta's side. Create templates ahead of the send day, and follow the state in the dashboard: when Meta decides, its notice updates the template automatically.
Why was my template rejected?
The most common reasons are invalid format (out-of-sequence variable or one without an example, body that is almost all variables), content that does not match the category (a promotion inside a utility template), vague text that looks like a scam, a shortened link and content prohibited by Meta's policy. The reason appears next to the template in the dashboard. Fix the text and submit again, or create a new one with revised text.
Can I use links and emoji in a template?
You can. Emoji go in the body normally, in moderation. A link can go in the body or in a link button, and the button is the preferred format, because Meta can see the destination. Use your company's domain, never a shortener, and if the URL needs to vary by person, leave the variable only at the end and give a complete example.
What is a paused template and how do I reactivate it?
It is a template that reached low quality, measured by Meta from blocks, reports and reads, and was paused automatically: 3 hours the first time, 6 the second, disabled the third. While it is paused, no send with it goes out. You can unpause in WhatsApp Manager, but the right move is to review the text and audience first, otherwise the pause comes back and the next one is longer.
Can a utility template include a promotion?
No. Utility is for following up on something the person already has with you, such as an order, an appointment or a bill. If the text offers, promotes or invites them to buy, Meta rejects it or reclassifies it as marketing, and starts charging the marketing rate. If the promotion is the goal, create the template as marketing from the start.
Next step
Anyone with a marketing number creates templates through the dashboard or the API and follows approval without leaving the screen. See the per-number plans and, if you prefer to start with code, the template creation reference has all the fields.
Keep reading
Bulk messaging
Click to WhatsApp Ads: Leads and the Free 72-Hour Window
How Click to WhatsApp ads work, how to identify ad leads on the official API, and how to use Meta's free 72-hour window.
Bulk messaging
Bulk WhatsApp Messaging via the Official API, Without Bans
Bulk messaging on WhatsApp is allowed through the official API, with consent and Meta-approved messages. Rules, limits, costs, and step by step.
Pricing
WhatsApp Service Message Billing Starts in October 2026
The 1,000 free service messages per number, Meta's charges from October 1, and how to control replies in Frame Conexa.
Connect the number you already use to the official WhatsApp API.
No switching numbers, no losing the app and no per-message fee from us. You pay per number; you pay Meta directly.