Workflow Reference

Workflows are directed acyclic graphs (DAGs) that define how data flows through triggers, AI reasoning, conditional logic, and actions. Each workflow is a visual canvas of connected nodes that execute in dependency order.

Node Types

Trigger Nodes

Every workflow starts with a trigger node. The trigger defines what event starts the workflow and what data is available to downstream nodes.

Trigger Type Source Data Available
chat Chat widget message trigger.message, trigger.visitor, trigger.history
email Inbound email trigger.from, trigger.subject, trigger.body, trigger.thread
webhook GitHub, Jira, custom trigger.payload, trigger.headers
schedule Cron expression trigger.scheduledAt, trigger.frequency
database CRM data change trigger.record, trigger.changeType, trigger.source
manual Dashboard button trigger.input (user-provided)

AI Nodes

AI nodes send data to a language model and return the response. They support two execution modes:

Standard mode — the node sends a prompt and receives a single response:

System: You are a lead scoring agent...
User: 
→ Response: { "score": 85, "reason": "Enterprise company, active evaluation" }

Tool use mode — the node can call tools (actions) during reasoning. The AI decides which tools to call, processes the results, and continues reasoning:

System: You are a customer support agent. Use the available tools to help the visitor.
User: 
→ Tool call: crm_lookup_contact({ email: "[email protected]" })
→ Tool result: { name: "Jane Smith", plan: "enterprise", ... }
→ Response: "Hi Jane! I can see you're on the Enterprise plan..."

AI Node Configuration

Field Description
model AI model to use (claude-haiku, claude-sonnet)
provider Model provider (anthropic)
systemPrompt Instructions defining the agent's role and behaviour
temperature Creativity level (0.0 = deterministic, 1.0 = creative)
maxTokens Maximum response length
outputFormat Expected output format (text, json)

Conditional Nodes

Conditional nodes route the workflow down different paths based on field values.

Operator Description Example
equals Exact match category equals "support"
contains Substring match message contains "pricing"
greater_than Numeric comparison score greater_than 80
in Value in list category in ["sales", "presales"]
matches Regex match email matches "@enterprise\\.com$"
exists Field is present visitor.company exists

Each condition maps to a target handle (output port). If no condition matches, the defaultHandle is used.

AI Output + Conditionals

When branching on AI output, instruct the AI node to return structured JSON with a known field (e.g. "category": "support"). Conditional nodes work best with predictable, structured values rather than free-text.

HITL Nodes

HITL (human-in-the-loop) nodes pause workflow execution until a human takes action.

Field Description
mode Review type: review
blocking If true, workflow pauses until human acts. If false, continues and corrections are retroactive.

When a HITL node activates, the pending item appears in the HITL Review page with the full conversation context and the agent's draft response.

Action Nodes

Action nodes perform operations on external systems:

Action Description
email.send_email Send an email via connected integration
email.reply_email Reply to an email thread
hubspot.update_contact Update a HubSpot contact record
hubspot.create_deal Create a new HubSpot deal
github.create_issue Create a GitHub issue
github.comment_issue Comment on a GitHub issue
github.create_pull_request Open a pull request
chat.send_response Send a response to the chat widget
workflow.execute Trigger another workflow (sub-workflow)

Action configuration uses data.app + data.action + data.config:

{
  "data": {
    "label": "Send Follow-up",
    "app": "email",
    "action": "send_email",
    "config": {
      "to": "",
      "subject": "Thanks for chatting with us",
      "body": ""
    }
  }
}

Code Nodes

Code nodes run isolated container sessions for custom logic. They can read input data, execute arbitrary code, and return structured results.

Field Description
image Container image to use
timeout Maximum execution time in milliseconds

Input data is mounted at /tmp/io/input/ and results are written to /tmp/io/output/result.json.

Execution Order

Nodes execute in topological order based on their connections. A node only runs after all of its upstream dependencies have completed.

Skipped Branches

When a conditional node's condition is not met, the entire downstream branch is skipped. Skipped status propagates through all nodes that depend exclusively on the skipped branch.

Exception: If a node has multiple incoming connections and at least one non-skipped parent has executed, the node will run. This handles convergence points where multiple branches merge.

Template Variables

Any node can reference the output of an earlier node using template variables:

Syntax Description
`` Data from the trigger node
`` Text output of a named node
`` JSON field from a named node
`` Workflow-level settings

Template variables are resolved at execution time. If a referenced node was skipped, the variable resolves to an empty string.

Workflow Run History

Every workflow execution is logged with:

  • Start time and duration
  • Node-by-node results — input, output, and status for each node
  • Routing decisions — which conditional branches were taken and why
  • Tool calls — which tools the AI called and their results
  • Errors — stack traces and error messages for failed nodes
  • Skipped nodes — which nodes were skipped and which branch caused the skip

View run history by clicking on a workflow and selecting the Runs tab.

Next Steps