Build your agent
Workflows
Workflows let you script multi-step agent responses for predictable conversations — FAQ trees, lead qualification, handoff triggers — that fire before the LLM runs. They are deterministic, free of inference cost, and easy to author in a visual canvas.
Where workflows sit in the pipeline
Every visitor message goes through three filters in order:
- Curated answer match — exact-question / fixed-answer pairs.
- Workflow match — keyword-triggered scripts.
- RAG retrieval + LLM generation — the default path for anything that didn't match above.
Activation requirements
A workflow only fires when three conditions align:
- Status — must be
active. Workflows start asdraftfor staging;disabledpauses without deleting. - Agent scope — either workspace-wide (
agent_id IS NULL) or pinned to a specific agent. - Trigger match — the visitor message must match the configured keywords using one of three modes:
any(default) — at least one keyword appears as a substring.all— every keyword must appear.exact— the trimmed, lowercased message equals the keyword exactly.
Step types
| Step | Function |
|---|---|
message | Send a chat bubble. Supports variable interpolation. |
question | Pause the flow, capture the visitor's reply into a variable. |
branch | Conditional routing based on captured values. |
tag_lead | Append one or more tags to the conversation's lead record. |
webhook | Fire-and-forget POST or GET to an external URL. |
escalate | Route to a human operator inbox. |
Features
- Variable interpolation — reference captured values inline with
{{var_name}}. - Loop guard — branches are limited to 32 jumps per turn, so a misconfigured loop can't lock the runtime.
- Two editors — a visual canvas (default) for non-technical authors, a linear form view for fast edits.
- Status tracking — draft / active / disabled with the same UX as agents.
Note. Bulk delete and the same selection patterns from the Agents index also work on /app/workflows.