WABA templates
Create, sync, and submit WhatsApp Cloud API (Meta) message templates.
Open Channel → WABA → Templates.
What this page is for
Meta Cloud API message templates — language, category, header/body/footer/buttons, and Meta approval status.
Only approved templates can start business-initiated conversations outside WhatsApp’s customer service window. Kirisan creates and updates templates on Meta for you; Meta status in the list reflects their review outcome.
Pick a WABA device at the top — templates load and sync for that WhatsApp Business number.

Sample data shown.
Search and filter
Search is field-based — click the search area first, pick which column to search, then type your query.
| Step | What happens |
|---|---|
| 1. Click search | A Search in popup opens — you must choose a field before typing |
| 2. Pick a field | Name, Body, Category, or Language |
| 3. Type | Kirisan filters the table as you type (short debounce) |
After you pick a field, the search bar shows the field name on the left (for example Name ▼). Click it to switch fields — changing the field clears the query.
| Search field | Matches | Minimum length |
|---|---|---|
| Name | Template name that contains your query | 3 characters |
| Body | Body text that contains your query | 3 characters |
| Category | Marketing, Utility, or Authentication that contains your query | 3 characters |
| Language | Locale code (for example en_US) or its label that contains your query | 3 characters |
If you type fewer than three characters, Kirisan waits until the minimum is met and shows a short hint under the search bar.
On the same row as search (to the right):
- Meta status — All statuses, Pending, Approved, or Rejected
Click Sync anytime to pull the latest statuses and quality scores from Meta. If you do not see a template, pick the correct device, click Sync, then search again.
Pagination below the table appears when results span more than one page (25 rows per page).
Template list

| Column | Meaning |
|---|---|
| Name | Template id on Meta (lowercase letters, numbers, underscores — fixed after create) |
| Language | Locale code (for example en_US) |
| Category | Marketing, Utility, or Authentication |
| Body | Truncated body text preview |
| Meta status | PENDING, APPROVED, REJECTED, and other Meta states |
| Quality | Meta quality rating when available (High, Medium, Low) |
| Actions | Edit or view (read-only while pending), delete |
Rejected rows may show Meta’s reason under the status badge.
Create a template
- Select a WABA device, then click New Template.
- Set Name, Language, and Category (Meta rules apply — utility for transactional updates, marketing for promotions, authentication for OTP-style messages).
- Optionally add a Header (none, text, image, video, or document), required Body, optional Footer, and up to three Buttons (quick reply, URL, or call).
- Add
{{variables}}in header text, body, or URL buttons if needed. Fill sample values for each logical variable — Meta requires examples at submission time. - Check the Live Preview on the right.
- Click Submit to Meta. Status becomes PENDING until Meta approves or rejects.
Edit a template
Open a row with the edit (pen) icon when Meta allows changes — typically Approved, Rejected, or Paused templates.
- Pending or In appeal templates open read-only until Meta finishes review.
- Saving sends an update to Meta and usually sets status back to PENDING for re-review.
- Name and Language cannot be changed after the first create (Meta limitation).
Header, body, footer, and buttons
| Part | Notes |
|---|---|
| Header — Text | Optional. At most one variable. WhatsApp formatting: *bold*, _italic_, ~strike~, `code` |
| Header — Image / Video / Document | Public HTTPS sample URL — Kirisan uploads it to Meta for review and reuses it when sending |
| Body | Required. Up to 1024 characters. Same formatting as header text |
| Footer | Optional plain text — no variables |
| Buttons | Up to 3. URL buttons may include one variable (typically at the end of the link) |
Variables and sample values
WABA templates use Meta named parameters only in the message: {{name}}, {{dayofweek}}, {{sender}}, and so on.
Do not put Kirisan server tokens ([[dow]], [[date-…]], [[u-…]]) in the header, body, footer, or button text. Meta reviews the template copy you submit; only {{variables}} belong there.
Use Add variable / Insert, or type {{name}} in the body, text header, or URL button.
| Where | What you can use |
|---|---|
| Template text (body, header, URL path) | {{variables}} only |
| Sample values (Variables panel) | Plain text or [[dow]], [[date-dd-mm-yyyy]], [[u-support_phone]], … |

Auto-strip and warning
If you type or paste [[dow]], [[date-…]], or [[u-…]] into template text (body, header, footer, or buttons), Kirisan:
- Removes the token immediately — it cannot stay in the message
- Shows an amber warning under the body
- Shows a toast once per edit session
The helper line under the body reminds you: use {{dayofweek}} (or another variable name) in the message, and put [[dow]] in that variable’s sample value instead.
On submit, Kirisan also rejects any remaining [[…]] in template text on the server as a safety net.
Sample values and Meta review
Meta requires a literal example for every {{variable}} in the submitted text. In the Variables panel you can type either:
- Fixed text — for example
Alexfor{{name}} - Server tokens — for example
[[dow]]for{{dayofweek}}
Kirisan resolves [[…]] to real text before sending the template to Meta. Meta never sees [[dow]] — it sees Sunday (or the current weekday when you submit). Your stored sample can keep [[dow]] so the next edit still auto-updates; only the Meta payload uses the resolved literal.
Example — order update
Template body (what Meta approves):
Hi {{name}}, your order {{order_id}} is confirmed.
Expected delivery: {{dayofweek}}. | Variable | Sample you enter | Sent to Meta as example |
|---|---|---|
name | Alex | Alex |
order_id | ORD-1024 | ORD-1024 |
dayofweek | [[dow]] | Sunday (resolved at submit time) |
If you paste Expected delivery: [[dow]] into the body, Kirisan strips [[dow]] and prompts you to use {{dayofweek}} with sample [[dow]] instead.
At send time, Send → Send and the Send API can pass a different value for each recipient and each {{variable}}.
Reusing the same variable name
Meta does not allow the same {{param}} name to appear more than once in a component (for example twice in the body). Kirisan handles this automatically:
- You can type the same variable multiple times while editing.
- As you type, Kirisan rewrites duplicates in real time:
- 1st occurrence →
{{sender}} - 2nd →
{{sender_1}} - 3rd →
{{sender_2}} - and so on
- 1st occurrence →
- The Variables panel still shows one row per logical name (
sender) with one sample value. - On submit, Meta receives unique param names; every suffix uses the same sample and the same value at send time.
Example — what you type:
This is a message from {{sender}}. We will check whether {{sender}} is registered on our contact list. Meanwhile, {{sender}} should wait until further notification. What Kirisan stores and sends to Meta:
This is a message from {{sender}}. We will check whether {{sender_1}} is registered on our contact list. Meanwhile, {{sender_2}} should wait until further notification. Variables panel: one field — sender — with a single sample (for example a phone number or display name).
Do not add separate sample rows for sender_1 or sender_2; Kirisan maps them from sender automatically.
Variable naming rules
- Lowercase letters, numbers, and underscores only (for example
order_id, notOrder-ID). - Names are normalized to lowercase when saved.
- Header text and URL buttons: at most one logical variable each (duplicates of the same name still auto-suffix if you paste them).
Delete a template
Use the delete (trash) icon on a row. Kirisan asks for confirmation, then removes the template from Meta and your Kirisan cache.
Use approved templates
After APPROVED (or REINSTATED):
- Open Send → Send, pick the WABA channel and device, and choose the template from the dropdown.
- Fill recipient fields and any
{{variables}}for that send. - Or reference the template from campaigns, schedules, autoreply (WABA channel), and the Send API.
If Meta rejects a template, read the reason on the list row, edit the content, and save to resubmit.
Related
- Devices — connect Cloud API numbers with Connect with Meta
- WABA overview — inbox and channel context
- Message variables —
[[date-…]],[[u-…]], and incoming{{sender}}shortcuts - API send — deliver approved templates programmatically