1Enter the canvas
From the gallery
Click + Create New Workflow for a blank canvas, or click βοΈ Edit on a workflow card to open an existing one. The gallery slides out and the canvas slides in β the URL stays at /visual-designer.
Back to the list
The canvas top toolbar has a β Back button (aria-label "Back to list"). If you have unsaved changes a confirmation appears.
2Canvas anatomy
The canvas has four regions that work together: the left library, the centre canvas, the right activity bar, and the bottom IDE panel. Each is collapsible.
Library
| Region | What you do there |
|---|---|
| Left library | Search and drag nodes onto the canvas. Categories: Lifecycle (Start/End/Cancel), Systems (auto-loaded from your connected systems), AI Agents, Logic (Set Variable, For Each, If/Else, Log), Human (User Interaction). |
| Centre canvas | The React Flow canvas itself. Drag nodes around, draw edges, pan with the middle mouse button, zoom with the wheel. |
| Right activity bar | Vertical strip of tabs that swap the right panel content. EDITOR (JSON), EDGES, DATA, AI, TEST, PINS, RUN, plus a contextual NODE tab when a node is selected. |
| Bottom IDE panel | Console (run logs), Problems (validation issues), Timeline (per-node duration). Collapsible with Ctrl + `. |
| Floating actions (bottom-right of canvas) | Auto-layout, preview / read-only mode, last-run overlay, minimap, canvas settings. |
| Top toolbar | Back, workflow name, status badge, panel toggles, Save, Execute, AI describe-and-go strip. |
The top-right of the toolbar has three buttons that show/hide the left, bottom, and right panels independently. Use them when you want a "focus mode" with just the canvas visible.
3Node library
The left panel is a tree of node templates organised by category. The library is searchable and remembers your favourites.
Categories
- β Favorites β nodes you starred for quick access.
- π’ Lifecycle β Start (one per workflow, mandatory), End (final state), Cancel (terminate run).
- π Systems β every command from every system you registered in the System Editor. Each command becomes a node template (e.g.
EntraID βΊ Get user,Workday βΊ Get worker). - π€ AI Agents β agents available in your tenant. Each agent appears as a node you can call.
- π§ Logic β Set Variable, For Each, Log, If/Else conditional, Try/Catch.
- π€ Human β User Interaction (pauses the workflow until a person submits a form).
Search the library
Type into the search box at the top of the library to filter across all categories. Matches highlight inline. Clear the search to restore the full tree.
Click the star next to any node template to add it to Favorites. Favorites move to the top of the library and persist across sessions.
Where new system actions come from
System actions in the library are pulled from the System Editor. To add a new action, open the System Editor and add a command to the relevant system; refresh the canvas and the new command appears under its system in the library.
4Drag a node onto the canvas
Drag, drop, snap
Click and hold a node template in the library, drag it over the canvas, and release. The node snaps to the nearest grid intersection. A new node always starts disconnected β you draw the edge yourself.
Move, multi-select, delete
- Click and drag a node to reposition it.
- Hold Shift and click to add to a multi-selection. Drag the selection as a group.
- Press Delete or Backspace to remove selected nodes (this also deletes their edges).
- Right-click a node for the context menu: Configure, Test node, Run to this node, Pin output, Manage input pins, Duplicate, Delete.
5Configure a node
Click any node and the right activity bar adds a contextual NODE tab β that's the node properties editor.
The NODE properties panel
The properties panel shows everything about the selected node: identity, parameters, output mapping, advanced options.
Node Β· ServiceNow Β· Create incident
Pick a system action
For action nodes (system calls), the panel offers two cascading dropdowns: System first, then Action. Once chosen, the parameter list rebuilds automatically from the command definition (in the System Editor). Required parameters show a red *.
Bind values
Each parameter accepts a literal, an expression, or a token from the data context.
- Literal β type a plain value:
"IT Onboarding". - Token β click the {{ }} button next to the field to open the context picker. Pick from inputs, variables, or any upstream node's output.
- Expression β switch to expression mode for inline templating:
"{{ inputs.first_name }} {{ inputs.last_name }}".
Lists everything you can reference at this point in the graph. Greyed-out entries are downstream of the current node β they don't exist yet.
Role required
The role_required field is an authorization gate per node. When the workflow runs, the running identity must hold this role for the node to execute. Use it for sensitive actions (e.g. workflow:approve on an approval node).
6Draw edges between nodes
Connect two nodes
Hover the source node β small handles appear on its edges. Click and drag from a handle to the target node and release. A line snaps in. Edges are directional: from "this finished, do that next".
Edge actions overlay
Right-click any edge for the Edge Actions menu: Edit Edge, Enable / Disable, Duplicate, Delete.
- Enable / Disable grey-outs the edge without deleting it β handy for temporarily routing around part of the graph during testing.
- Duplicate creates a parallel edge between the same two nodes (useful when you want two independent conditions).
The EDGES panel
Click EDGES on the right activity bar to open a list of every edge in the graph. Useful when you have many edges and want to bulk-edit conditions or labels.
7Edge conditions and branching
By default an edge is unconditional β once the source node finishes, control flows along it. Add a condition to make the edge a branch.
Open the Edge Inspector
Right-click an edge β Edit Edge. The Edge Inspector slides in from the right with three fields: Label, Condition, and Description.
Write a condition
Conditions are expressions evaluated against the data context. Common patterns:
{{ nodes.create_user.output.status == "OK" }} {{ inputs.priority == "P1" }} {{ nodes.risk_score.output.value > 0.7 }}
If the expression evaluates truthy, the edge fires. If false, control does not flow this way β useful for if/else branches: two outgoing edges, one with each condition.
Labels show on the canvas
Whatever you type in Label appears on the edge in the canvas (e.g. "if approved"). Keep labels short and descriptive β they make the graph readable.
To express if/else, draw two edges out of a decision node β one with the condition, the other with the negation. Make sure exactly one will fire for any given run.
8Data manager (DATA panel)
The DATA panel is where you declare what the workflow takes as input, what variables it carries, and what it returns.
Inputs
Each input is a typed field the workflow expects when it runs. Define them in the DATA panel; they appear automatically in the Workflow Runner modal so callers can fill them. Common types: string, number, boolean, object, array.
Variables
Variables hold intermediate state during a run. Set them with a Set Variable node and read them anywhere downstream via {{ vars.name }}. Variables are useful when several nodes need the same computed value.
Outputs
Outputs are what the workflow returns to its caller. Bind each output to a node result or variable. The Workflow Runner displays outputs at the end of a run.
Last-run context
After a run, the DATA panel switches to Last-run context mode: every node's actual input and output is shown alongside the schema. Use this to debug why a downstream node received an unexpected value.
Anything in the DATA panel becomes pickable in the {{ }} context picker on every parameter field across the canvas.
9Keyboard shortcuts
All shortcuts are active when the canvas has focus and you are not in an editable field.
| Keys | Action |
|---|---|
| E | Toggle the EDGES panel. |
| D | Toggle the DATA panel. |
| A | Toggle the AI panel. |
| L | Auto-layout the graph (re-flow nodes). |
| Ctrl + B | Toggle the left library sidebar. |
| Ctrl + Shift + J | Toggle the JSON Editor panel. |
| Ctrl + ` | Toggle the bottom IDE panel. |
| Ctrl + S | Save workflow. |
| Ctrl + Z / Y | Undo / redo (50 steps). |
| F11 | Maximise the canvas (hide all panels). |
| ? | Open the keyboard-shortcut help overlay. |
| Esc | Close any open panel or modal. |
10The JSON editor panel
Every visual change has a textual representation. The EDITOR tab on the right activity bar shows that representation.
What's inside
The editor shows the workflow's intermediate representation (IR): nodes, edges, inputs, outputs, variables. Edits in this panel can be synced back to the canvas.
Toolbar actions
- Format β re-indents the JSON.
- Copy β copies the entire document.
- Download β saves the JSON to a file.
- Sync to canvas β applies your text edits to the visual graph. The canvas re-renders.
Until you click Sync to canvas, the canvas and the JSON editor are independent. The editor toolbar shows a yellow dot when there is unsynced text.
Maximise the editor
Click the β€’ icon (or use the right-panel mode buttons) to switch the editor to maximised mode β the canvas dims and the editor takes over the viewport. Helpful for long workflows.
11Validation & the Problems tab
Where validation runs
The studio validates the graph continuously. Any issue surfaces in the Problems tab of the bottom IDE panel and as a red dot in the activity bar.
Common problems: required parameter is empty, edge references a deleted node, expression has a syntax error, the graph has no Start node, two Start nodes exist.
Click to jump
Click any row in the Problems tab to focus the offending node or edge in the canvas. The properties panel opens automatically.
The Save button does not block on warnings; it lets you persist a workflow that doesn't yet validate. Execute, however, refuses to start a run while errors are present.
12Save the workflow
Click Save (or Ctrl+S)
The πΎ Save button on the canvas top toolbar persists the workflow back to the server. The toast confirms "Workflow saved"; the status badge moves from Draft to Active if this is your first save with no problems.
Versioning
Every save creates a new version. The card meta in the gallery shows the latest version number; older versions are kept for audit.
Permission required
Save is hidden when your role does not have visual-designer:workflow Β· edit. You can still open and read the canvas (view-only).