A pipeline is the orchestration layer above individual agents. Where an agent does one thing (review the invoice, score the lead, draft the reply), a pipeline strings them together with control flow - run agent A, branch on its output, fan out to three parallel sub-runs, gather the results, ask a human, post to the ERP. The Workflow Canvas is the visual editor you build pipelines in.
Open the Workflow Canvas
- Sidebar > Suites > Solution > Workflow Canvas
- New Pipeline starts from blank; New from Template starts from one of the bundled industry pipelines (see the Industry Pipelines guide)
- Pipelines are scoped to your tenant; bindings, triggers, and runs all live inside the tenant boundary
Node types
- agent_call - invokes a specific agent with mapped inputs; the agent's output becomes available downstream
- condition - if/else split based on a JSON-path expression against the run state
- switch - multi-way branch based on a value; more readable than chained conditions
- loop - for-each over a list, or while a condition holds; configurable max iterations as a guardrail
- parallel - fan out to N parallel child nodes, gather all results before continuing (fan-in)
- human_review - pause for a HITL approval (see the HITL Checkpoints guide)
- http_call - hit an external HTTP endpoint with mapped headers + body
- db_query - read/write the tenant's data via the platform's typed query API
- email - send a templated email (uses the Email Templates pipeline you built in CRM)
- rule - a no-LLM deterministic transform, useful for cheap normalisation steps
Edges: data flow + control flow
Edges between nodes carry both data (the upstream node's output becomes the downstream node's input) and control (which node runs next). The default mapping is pass-through; tighten it on the edge panel with explicit field mappings when you want to be precise.
Runs
- Trigger a run via: API push, scheduled cron, app event binding (most common), or manual button on the Canvas
- Each run writes a PipelineRun row and a PipelineStepRun row per node executed
- Status transitions: pending -> running -> [completed | failed | paused_for_review | cancelled]
- Open the Runs tab to see each run's full trace - inputs, outputs, durations, costs per node
Debugging
- Click any step in a failed run to see its inputs, outputs, error, and stack trace
- Replay the step in isolation via the Replay button - re-runs that one node with the same inputs
- Branch into a debug pipeline that copies your run state and lets you tweak + re-run
- Set breakpoints on the canvas: nodes can be marked "pause here on next run" for inspection