Message variables
Built-in, custom, and inbound placeholders for templates and sends.
Open Resources → Variables.
What this page is for
Variables is the reference for every placeholder Kirisan can substitute at send time — server-resolved time tokens, account-wide custom constants, and incoming shortcuts derived from inbound messages.
Use this page when writing templates, autoreply responses, Flow text, spreadsheet cells, or webhook payloads. Copy tokens directly from the dashboard — each row has a copy button.

Sample data shown.
The page has three tabs:
| Tab | Syntax | Purpose |
|---|---|---|
| Time | [[date-…]], [[time-…]], [[dow]], [[review]], … | Server-resolved date, time, and submission tokens |
| Custom | [[u-name]] | Your account-wide key–value placeholders (manage the list here) |
| Incoming | {{message}}, {{sender}}, {{name}}, … | Inbound envelope shortcuts for autoreply, Flow, and webhooks |
Time tab
The Time tab lists every built-in [[…]] token Kirisan resolves on the server when a message is sent.
| Group | Tokens | When to use |
|---|---|---|
| Submissions | [[review]] | Numbered summary of a respondent’s answers — only inside a Submission review message |
| Date & time | [[date-dd-mm-yyyy]], [[time-hh:mm]], [[dow]], [[tod]], … | Greeting lines, timestamps, day-of-week logic |
How time tokens work
- Token matching is case-insensitive —
[[DATE-DD-MM-YYYY]]works the same as[[date-dd-mm-yyyy]]. - Unknown names are left untouched —
[[foo]]is sent as-is. - Inside
date-/time-prefixes, any character that is not a format token (space, slash, colon, comma, etc.) is copied verbatim. [[…]]time tokens never collide with per-recipient{{name}}merge fields from Send → Send or the Send API.
The dashboard shows a live example next to each token (refreshed every second). Scroll down for the Date & time format tokens reference table and a full Example message block.
Common patterns:
| Token | Example output |
|---|---|
[[date-dd-mm-yyyy]] | 25-06-2026 |
[[date-mmmm dd, yyyy]] | june 25, 2026 |
[[time-hh:mm]] | 14:30 |
[[dow]] | Thursday |
[[tod]] | afternoon (15–17) |
Custom variables
Switch to the Custom tab to define account-wide constants as [[u-<name>]] tokens.

Sample data shown.
| Control | What it does |
|---|---|
| Add variable | Create a new name + value pair |
| Search | Filter by name or value |
| Placeholder (violet chip) | Click to copy [[u-…]] |
| Active toggle | Only active variables are substituted; inactive ones stay literal in the message |
| Edit / Delete | Update or remove a row |
Naming rules
- Name: letters, numbers,
_and-, max 50 characters (stored lowercase). - Each name becomes
[[u-<name>]]— for examplesupport_phone→[[u-support_phone]].
Example
| Name | Value |
|---|---|
support_phone | +62 812-0000-0000 |
promo_url | https://example.com/june |
In a template or autoreply message:
Questions? WhatsApp us at [[u-support_phone]] or visit [[u-promo_url]] Update the value on the Custom tab once — every message that references the token uses the new value on the next send.
Custom tokens use the [[u-…]] prefix so they never collide with built-in [[date-…]] tokens or per-recipient {{name}} fields from sends.
Incoming tab
The Incoming tab documents {{…}} shortcuts derived from Kirisan’s unified incoming_message JSON envelope — the same shape used by autoreply, Flow, Webhooks, and webhook test.

Sample data shown.
Sub-tabs:
| Sub-tab | Contents |
|---|---|
| Overview | {{message}}, {{sender}}, {{name}}; Flow top-level keys; HTTP webhook extras |
| Full WhatsApp field reference | |
| Telegram | Full Telegram Bot API field reference |
Mustache shortcuts (all channels)
| Token | Meaning |
|---|---|
{{message}} | Primary user-visible line — body text, caption, or callback data |
{{sender}} | Reply target id — WhatsApp peer or Telegram chat id |
{{name}} | Display name after normalization |
In Flow, every top-level envelope key ({{event}}, {{device}}, {{channel}}, …) is also available. Nested objects stringify as JSON unless overridden by the friendly names above.
For the full outbound webhook JSON shape, see Incoming message payload and Webhooks → Test.
Where placeholders work
- WhatsApp, WABA, and Telegram templates
- Email templates
- Autoreply, Flow, and spreadsheet responses
- Campaign and scheduled sends (same substitution pipeline)
WABA templates use Meta {{named}} parameters in the message text only. If you type [[dow]] in the body, Kirisan strips it and shows a warning — put [[dow]], [[date-…]], or [[u-…]] in sample values instead; Kirisan resolves them to literal text before Meta review. See WABA templates → Variables and sample values.
Per-recipient {{variables}} from Send → Send or the Send API still override template defaults for that recipient — use custom [[u-…]] tokens when you need the same constant everywhere.
Related
- Files — hosted media for templates and autoreply attachments
- Webhooks — configure endpoints in the dashboard
- Webhook payloads — JSON delivered to your HTTPS URL
- Send → Send — per-recipient merge fields alongside templates