How to create WhatsApp templates: step by step in Meta's panel and in WAG

A template is the only message WhatsApp lets you send once a conversation with a customer is closed, meaning more than 24 hours after their last message. If the reason that rule exists is not clear yet, start with the guide on automated WhatsApp Business messages.

This one is practical: how a template is put together, how to create it in Meta’s panel, what gets it rejected, and what changes when you do it from WAG.

The parts of a template

Every template has the same components, and it helps to know them before opening any panel.

Name. Internal, the customer never sees it. Lowercase with underscores: order_shipped.

Category. Utility, marketing or authentication. It decides whether you get approved and what you pay per send.

Language. Each language is a separate template, using the code Meta defines.

Header. Optional. Short text, or an image, video or document.

Body. Required. The message itself. This is where variables go.

Footer. Optional. Small text, no variables. Usually where the opt out line lives.

Buttons. Optional. Quick replies, a link or a phone number, with caps per type.

Variables are written {{1}}, {{2}} and get replaced at send time with each customer’s data.

Step by step in Meta’s panel

  1. Open Meta’s business tools and go to WhatsApp Manager, templates section. If that panel is new to you, we cover it in what WhatsApp Manager is.
  2. Create template. Pick a category and language, and give it a name.
  3. Build the content: header if you need one, body with its variables, footer and buttons.
  4. Add sample values for every variable. Meta uses them to review, and rejects the template without them.
  5. Submit for review. It stays pending until Meta decides.
  6. Check the result. If approved, you can use it. If rejected, fix it and submit again.

The states you will see:

  • Pending. Under review, cannot be sent.
  • Approved. Ready to use.
  • Rejected. With a reason that is sometimes generic.
  • Paused. It was approved, but people reacted badly and Meta stopped it.
  • Disabled. The step after paused when the problem persists.

Ten tips to avoid rejection

1. Do not start or end the body with a variable. The most common rejection. Meta needs fixed text around it to judge the message. {{1}}, your order arrived gets rejected; Hi {{1}}, your order arrived passes.

2. Use realistic samples. If the variable is a date, put a date. A filler xxx is grounds for rejection.

3. Fewer variables, more templates. Every variable is a chance to be rejected and a value your system has to have on hand. If something almost never changes, write it as fixed text.

4. Declare the real category. If the message sells, it is marketing even when you register it as an order confirmation. Meta reviews the content, not the label, and can recategorize it.

5. Say who you are. The person may not have your number saved. A message that does not name the business gets reported more.

6. Give an opt out in marketing templates. One line in the footer on how to stop receiving them lowers reports, which are what really costs you.

7. Watch the formatting. Sustained capitals, repeated exclamation marks and emoji everywhere read as spam, both to the reviewer and to the customer.

8. No sensitive data. Do not ask for passwords, full card numbers or health information. Guaranteed rejection.

9. Name it for your own sake. order_shipped_en tells you what it is and in which language. With thirty templates you will be glad you did.

10. Create them before you need them. Review takes time. Building the template on campaign day is the most common way to be late.

How it works in WAG and what changes

The components are the same, because the rules are Meta’s. What changes is the loop.

It is created without leaving the tool. You build the template in WAG, with its components and variables, and WAG submits it to Meta through the official API. No back and forth between two panels.

It validates before submitting. Several of Meta’s rules are checked at creation time rather than after. The clearest case is the language: Meta accepts only codes from its own list and rejects the rest asynchronously, meaning the template is created and comes back rejected later without telling you much. WAG validates the code up front, so the error shows immediately instead of as a mysterious rejection. Same for button caps and header variables.

The status arrives on its own. When Meta approves or rejects, it notifies by webhook and the template updates itself. Nobody has to go check the panel.

It flags a category change from Meta. This is the one that moves the most money and goes unnoticed most often. Meta can recategorize a template, and that changes the price of every send. WAG listens for that notice, including a change that has not happened yet but is about to, and marks it on the template.

Resubmit after a rejection. You fix it and send it again without rebuilding it from scratch.

Templates you already had still show up. If your business has been creating templates in Business Manager, WAG syncs them and they appear in the list. They come in as mirrors of Meta though: you can see and use them, but they are edited there, not here. Which is why it pays to pick one place to create them, and make it the place where you will use them.

Which one suits you

If you have three templates and never touch them, Meta’s panel is enough.

If you send confirmations, reminders or campaigns regularly, the problem stops being how to create a template and becomes the whole cycle: create, wait, learn the status, fix a rejection, notice a recategorization before it shows up on the invoice, and have the thing at hand inside the conversation. That cycle is what breaks when it lives in a panel separate from where you actually talk to customers.

WAG’s automated replies use these same templates once the 24 hour window has closed, so what you create ends up available where your team needs it.


Want to see the whole flow with your own templates? Request a demo and we will show you.

Frequently asked questions

It is usually quick, though the review can take up to a day. Meanwhile the template sits as pending and cannot be sent. Create your templates before you need them, not on campaign day.

Put your AI to reply for you.

We’ll show your own case working in a demo.

Request a demo →