The list
Each card shows the template’s name, category, status, type, language, Meta quality score when there is one, and the body text. A rejection reason or a failed submission is printed on the card in red. Two buttons sit at the top:- New Template — opens the source chooser: Start from scratch, or Use a template from the starter library. Both end in the same editor.
- Sync from Meta — pulls every template from your WhatsApp Business Account and mirrors it locally: new ones are added, changed ones updated, and templates that came from Meta but no longer exist there are removed. Drafts that were never submitted are kept. A very large library is synced in pages of 100, up to 2,000 at a time; press it again to continue.
Creating a template
Name, category and language
- Template Name — lowercase letters, digits and underscores only, up to 512 characters. Fixed once the template exists at Meta; to change it, create a new one.
- Category — how Meta polices the template:
- Language — must match the exact code at Meta.
en_USandenare different templates, and a template’s language is fixed once it exists.
Template type
One selector covers the header, because that is how Meta’s own manager presents it.Variables
Pick one scheme for the whole template. Meta rejects a mix, and the choice is fixed once the template exists at Meta.- Numbered —
{{1}},{{2}}, … Must be contiguous and start at{{1}}. - Named —
{{customer_name}}. Lowercase letters, digits and underscores, starting with a letter.
Body, footer and header
- Body text — up to 1,024 characters. It may not start or end with a variable; trailing punctuation does not help, so
Total comes to {{1}}.is refused exactly likeTotal comes to {{1}}. Put real words on both sides. - Footer — optional, up to 60 characters, and it cannot contain variables.
- Text header — up to 60 characters with at most one variable, plus a sample for it.
- Location header — carries nothing at build time. Meta takes the latitude, longitude, place name and address at send time, so every message can point somewhere different.
- Media header — choose a file, pick one from the media library, or paste a public link.
A file you pick is not uploaded until you press submit — close the dialog and it is simply discarded. A pasted link has to stay reachable for about 24 hours, because Meta fetches it during review.
Buttons
Up to 10 buttons in total, each with a label of at most 25 characters. Quick replies must be grouped before the rest.
A URL button takes at most one variable and it must sit at the end of the URL — Meta substitutes only the ending. Everything before it is frozen when Meta approves the template, and a URL with no variable can never be changed again.
- A link button’s variable is always
{{1}}, whatever the body uses. Meta numbers button variables separately from the body, so a body that ends at{{5}}does not make the button{{6}}— the editor flags that. + Make the ending dynamic ({{1}}) adds the variable for you, and the editor shows the URL customers will get with your example value filled in. - Placeholder links are refused. A link to
example.com,example.org,example.net,yourdomain.com,yourstore.com,mystore.com,localhostor a similar placeholder address is flagged while you type, and refused when you submit or save an edit, because every customer who tapped it would land on a dead page. Use your real link, or end it with{{1}}and fill it in per campaign.
Carousels
A carousel is an outer body plus 1–10 cards, and Meta’s rules are strict because it renders as one swipeable strip:- The outer message has no header, no footer and no buttons — those live on the cards.
- Every card needs an image or video header, and every card must use the same header format.
- Every card needs 1 or 2 buttons, and every card must use the same button types in the same order. Copy-code buttons are not allowed on cards.
- A card body is at most 160 characters and follows the same start/end variable rule as the main body.
Advisory warnings
Two things are flagged in the editor but never block you, because Meta’s own behaviour is not exactly predictable:- Too many variables for the length. Roughly two words per variable is the floor; below that Meta rejects the template.
- Two variables next to each other. The API accepts it, human reviewers often do not, and the message reads as a run of values.
Authentication templates
Picking Authentication swaps the whole editor. Meta writes and translates the wording — you cannot type a body — and you choose the security line, the code’s expiry and how the customer gets the code: Copy code, One-tap autofill or Zero-tap. One-time codes are sent through the API, not from the inbox or a campaign. Everything about them is on Authentication templates.Submitting and statuses
Submit for Approval sends the template to Meta. Review usually takes up to 24 hours and the status updates by itself.
Approved, Rejected and Paused templates can be edited, and a Draft can be fixed and submitted. Editing an approved template sends it back for review, so it is Pending — and unsendable — until Meta answers.
Meta allows 100 template creations an hour. Submitting a whole pack goes out one at a time for this reason, and stops with a clear message if Meta refuses part-way.
What a send must carry
Meta rejects the whole message if one parameter is missing, so every sending surface in Watx asks for exactly the same things and refuses to send until they are filled in.
The five places this happens are the inbox template picker, the contact drawer, the Content step of a campaign, the
send_template automation step and the send_template flow node.
The hello_world sample
Meta ships a sample template called hello_world with every account. It can only be sent from Meta’s public test numbers: a send from your business number fails with Meta error 131058. It still appears in your list and in the inbox, campaign and automation pickers like any approved template, so delete it if you do not want anyone picking it.