Namespaces
Anything else resolves to nothing.
Deep paths
A path can go as deep as the data goes, including array positions:[object Object].
The clock
{{ now }} on its own is the current time as an ISO 8601 string. All of these are
UTC — a run has no single local timezone to be right about.
What each trigger supplies
{{ trigger.channel }} is available on every trigger that carries one. The rest depend
on which trigger started the run.
vars.booking.starts_at is an ISO 8601 date and time — the value a Wait until
reminder reads. See Conditions and branching.
Amounts and totals in trigger. and vars. arrive already formatted — ₹1,499.00 —
so a message body never has to do the arithmetic. The one exception is
vars.payment.amount_minor, which is the raw amount in the currency’s smallest unit
(paise for rupees). Use the formatted value as it is: putting a currency symbol in front
of it prints the symbol twice.
The picker also lists tokens for Tag added (trigger.tag_id) and Conversation
assigned (trigger.agent_id). Those triggers do not fire yet — see
Triggers.
Reading an earlier step
Every step publishes its result under its reference name, before the next step runs. That ordering is the point: step two can build its request out of step one’s response.- A step that runs after this one cannot be read. It could only ever be empty.
- A step on the other side of a branch cannot be read either. A step in an earlier branch that might have run is offered, marked Only if that branch ran.
Filters
Add a filter with|. They chain left to right.
A filter argument can be quoted, and a quoted argument may contain a
| or a dot. An
unrecognised filter name passes the value through untouched rather than blanking it.
Types are kept for a single token
If a field contains exactly one token and nothing else, the underlying value keeps its type. That is what lets a JSON body send"qty": 3 rather than "qty": "3", and
pass a whole object through as an object. The moment there is any text around the token,
the result is a string.