Cheat sheet
Quick reference for the canvas - template syntax, router operators, handles, keyboard shortcuts and a pre-publish checklist.
A one-page reference for building on the canvas. Each section links to the full explanation.
Templates
| Write | Means |
|---|---|
{{state.name}} | A value in state |
{{state.order.id}} | A nested field |
{{input}} | The previous node's result |
${state.name} | Older syntax, still accepted |
${CREDENTIALS.NAME} | A workspace credential |
{state.tier} | A variable as a Router condition value |
Type {{ in a field to open the variable picker. More in Variables and templating.
Router operators
| Operator | Meaning |
|---|---|
| is / is not | Strict equality: 5 and "5" differ |
| is (loose ==) / is not (loose !=) | Equality that converts types |
| greater than, greater or equal, less than, less or equal | Numeric comparisons |
| contains / not contains | Text or list contains the value |
| starts with / ends with | Text begins or ends with the value |
Conditions are checked top to bottom and the first match wins. Put default last. See Router.
Output handles
| Node | Handles |
|---|---|
| Router | one per condition, default |
| API, Integration | success, failure (while Failure path is on) |
| Filter | true, false (followed in voice projects only) |
| Form | submit, cancel, failure |
| Collect Payment | paid, failed |
| Approval | approved, rejected |
| Loop | each item, done |
| Parallel | branch 1 … branch N, done |
More in Connections.
Function node
(input) => {
// input is the previous node's result; state holds the session's variables
const amount = Number(input);
if (Number.isNaN(amount) || amount <= 0) {
return { valid: false };
}
return { valid: true, amount };
}Save the result with Output variable, then branch on it in a Router, for example state.check.valid is true. See Function.
Keyboard shortcuts
| Action | Mac | Windows |
|---|---|---|
| Search nodes on the canvas | ⌘F | Ctrl + F |
| Undo / redo | ⌘Z / ⇧⌘Z | Ctrl + Z / Ctrl + Shift + Z |
| Edit selected node | ⌘E | Ctrl + E |
| Duplicate node | ⌘D | Ctrl + D |
| Delete selected | Delete / Backspace | Delete / Backspace |
| Group selected nodes into a frame | ⌘G | Ctrl + G |
| Add sticky note | Shift + N | Shift + N |
| Toggle comment mode | C | C |
| Open cursor chat | / | / |
| Area select | Shift + drag | Shift + drag |
| Multi-select | ⌘ + click | Ctrl + click |
| Command palette | ⌘K | Ctrl + K |
| All shortcuts | ? | ? |
Before you publish
- Every node is connected, and nothing is left unreachable.
- Every Router has a default, placed last.
- Every failure handle on API and Integration nodes goes somewhere.
- Invalid input leads to a helpful message and a way to try again.
- Output variable names are descriptive and spelled the same everywhere they are read.
- Secrets are stored as credentials, not typed into fields.
- Every branch has been walked in the simulator.
Then publish.
Related
Last reviewed 24 September 2026