Create a template
This page walks through the template editor. The editor shows a Preview on the right of how your message will look on the customer's phone, and a Before saving list of anything that needs fixing.
How do I create a template?
- Go to Automation → Templates.
- Click New template. (Or click Ready-made to start from an example. See Ready-made templates.)
- At the top, choose the type: Standard, Carousel or Limited-time offer. Most templates are Standard.
- Type a Template name.
- Choose a Category and type the Language code.
- Choose a Header if you want one. See Headers.
- Write the Message.
- Fill in an Example for each variable.
- Add a Footer (optional) and Buttons if you want them. See Buttons.
- Check the Preview, then click Save draft.
- On the template's card, click Submit to send it to Meta for review.
The Save draft button stays greyed out while the Before saving box lists problems. Fix each one and the button turns on.
What should I call my template?
The Template name can only use lowercase letters, numbers and underscores, like order_update or diwali_offer_2026. KiliChat changes capitals to lowercase and turns spaces and other symbols into _ as you type.
Customers never see the name. Pick one that tells your team what it's for.
TIP
Each name can be used once per language. If you see "A template with this name and language already exists", add something to the name, like order_update_v2.
Which language code do I use?
Type the code of the language your message is written in. Common ones:
| Language | Code |
|---|---|
| English | en (or en_US, en_GB) |
| Tamil | ta |
| Hindi | hi |
| Telugu | te |
| Malayalam | ml |
| Kannada | kn |
The code must match the language of the words. A Tamil message marked en is likely to be rejected.
You can have the same template name in several languages. Make one template per language, each with the same name and a different code.
How do variables work?
Variables are the parts that change for each person, like their name or order number. Write them as {{1}}, {{2}}, {{3}} and so on, in order:
Hi {{1}}, your order {{2}} has shipped. Expected delivery: {{3}}.For every variable, KiliChat adds an Example for {{1}} box (and so on). Meta's reviewers see these examples, so make them realistic: Priya, #1042, Friday.
You decide what goes in each variable later, when you send:
- In a broadcast or sequence, you fill in a Value for {{1}}. It can be fixed text, or
{{name}}(the contact's name),{{phone}}, or a contact field like{{attr.city}}. See Send a broadcast. - In a flow, the Template step has the same boxes.
- Through the API, you send the values in a list. See Send messages with the API.
What are the rules for the message?
| Part | Limit |
|---|---|
| Message | Required, up to 1,024 characters |
| Header text | Up to 60 characters, no variables |
| Footer | Up to 60 characters, no variables |
| Variables | {{1}}, {{2}}… in the message only |
Meta also rejects a message that starts or ends with a variable. KiliChat warns you: "Meta rejects messages that start or end with a placeholder. Add some words around it." For example, write Hi {{1}}, thanks! instead of {{1}}, thanks, and end with a full stop or a few words rather than {{2}}.
Writing tips that help approval
- Write in full sentences. Say who you are and why you're writing.
- Don't put several variables side by side (
{{1}} {{2}} {{3}}) with no words between them. - Avoid ALL CAPS, lots of emojis and pushy language like "Act now!!!".
- Don't ask for card numbers, passwords or OTPs (except in authentication templates).
- Make sure links point to your own real website.
Can I add formatting or emojis?
Yes. Emojis work as normal. WhatsApp formatting also works in the message: *bold*, _italic_, ~strikethrough~. The KiliChat preview shows the raw characters, but the customer sees the formatting.
What is the footer for?
The Footer (optional) is small grey text under the message. It's a good place for "Reply STOP to unsubscribe" on marketing templates. If someone replies STOP, KiliChat opts them out automatically. See Automatic replies and opt-out keywords.
Carousel and limited-time offer templates can't have a footer.
What happens after I save?
The template appears on the Templates page as a Draft. Nothing is sent to Meta yet. You can click Edit to change it, or Submit when you're ready. See Approval and rejection.
Can I write a template in two languages at once?
Not in one template. Make a separate template for each language, using the same name and a different language code.
Can I add a variable to the header?
No. KiliChat doesn't allow variables in text headers: "Headers can't have placeholders." Put the changing part in the message instead.
What errors might I see when saving?
| Message | How to fix it |
|---|---|
| Write the message. | The Message box is empty. |
| Give an example for each placeholder. | Fill in every Example for {{n}} box. |
| Meta rejects messages that start or end with a placeholder… | Add words before the first variable or after the last one. |
| The header can be up to 60 characters. | Shorten the header text. |
| Button text needs 1 to 25 characters. | Give every button a label, 25 characters at most. |
| Upload the header image (or video, document). | You chose a media header but haven't uploaded the file. |
| A template with this name and language already exists | Use a different name. |
| Upload header images, videos and documents here first | Upload the file with the button in the editor rather than pasting a link. |