Theme
Connections & Routing
Connections (also called edges) are the lines that link nodes together on the canvas. They define the order in which nodes execute during a conversation. Every flow is a directed graph: execution starts at the Start node and follows edges from one node to the next.
Creating a Connection
To connect two nodes:
- Hover over the output handle (small circle on the right or bottom of a node).
- Click and drag from the output handle toward the target node.
- Release on the input handle (small circle on the left or top of the target node).
- A curved edge appears linking the two nodes.
You can also create a connection and a new node in one step. Drag from an output handle and release on empty canvas space -- a node picker appears, and the new node is automatically connected.
TIP
If a connection does not appear, check that you are dragging from an output handle to an input handle. You cannot connect two outputs or two inputs together.
Canvas showing a user dragging a curved edge from a Start node output handle to an LLM Response node input handle
Edge Types
Default Edges
A default edge is a simple connection between two nodes. Execution passes from source to target unconditionally. Most connections in a flow are default edges.
Conditional Edges
Conditional edges originate from nodes with multiple output handles -- each handle represents a different outcome. The flow engine evaluates the node's logic and routes execution to the matching output.
| Node Type | Output Handles | Routing Logic |
|---|---|---|
| Condition | One per rule + default | First rule that evaluates to true; default if none match |
| API Call | Success, Error | Based on HTTP request outcome |
| Dialogflow CX | Success, Fallback | Based on intent confidence threshold |
| Google ADK Agent | Success, Error, Handoff | Based on agent execution result |
| CX Agent Studio | Success, Error, Handoff | Based on CES agent execution result |
| CX Multi-Agent | Success, Error, Handoff | Based on sub-agent routing outcome |
| Salesforce | Success, Error | Based on CRM operation outcome |
| Authenticate | Success, Failure, Timeout | Based on authentication outcome |
| IVR Menu | One per DTMF key + No Match | Based on caller's key press |
| Intent Router | One per intent group + Default | Based on detected intent |
| Loop | Continue, Exit | Based on iteration condition |
Edge Labels
Labels clarify what an edge represents. They are especially useful on conditional edges.
- Automatic labels: Condition, IVR Menu, and Intent Router nodes automatically label their edges with the rule name, DTMF key, or intent name.
- Custom labels: Click any edge, then type a label in the Config Panel. Use short text like "User verified" or "Payment failed".
How Conditional Routing Works
When execution reaches a node with multiple outputs, conditions are evaluated in order:
- Condition nodes: Rules are evaluated top to bottom. The first match determines the output. If none match, the default edge is followed.
- IVR Menu nodes: DTMF input is matched against configured keys. Unmatched input or timeout follows the No Match handle.
- Intent Router nodes: The intent variable is compared against each route. The first match wins. No match follows the Default handle.
┌──── [rule: tier = "premium"] ──── Premium Path
│
[Condition Node] ───────┼──── [rule: tier = "basic"] ────── Basic Path
│
└──── [default] ──────────────────── Fallback PathWARNING
If a conditional node has no default edge connected and no rules match, the conversation will end at that node. Always connect a default output to handle unexpected cases.
Condition node on canvas with three labeled output handles — premium, basic, and default — each connected to a different downstream node
Selecting and Deleting Edges
- Click an edge to select it. The edge highlights and the Config Panel shows its properties (source node, target node, source handle, label).
- Press
DeleteorBackspaceto remove the selected edge, or right-click and choose Delete. - Deleting an edge does not delete the nodes it connects.
Reconnecting Edges
To change where an edge points:
- Delete the existing edge.
- Draw a new connection from the source output handle to the desired target node.
You can also drag an edge's target endpoint directly to a different node -- hover over the endpoint until the cursor changes, then drag to a new input handle.
Loops and Cycles
OmniBots supports looping by connecting a node's output back to an earlier node. This is how multi-turn conversations work.
| Pattern | Structure | Use Case |
|---|---|---|
| Conversational loop | LLM Response -> Message -> back to LLM Response | Multi-turn AI chat |
| Retry loop | Collect Input -> Condition (valid?) -> back to Collect Input | Input validation with retries |
| Menu loop | IVR Menu -> Action -> back to IVR Menu | Repeated menu selection |
WARNING
The flow engine enforces a maximum turn count (configurable in flow settings, default 50) to prevent infinite loops. When the limit is reached, the bot sends the fallback message and ends the conversation.
Validation
The flow builder validates connections in real time. Common warnings:
- Disconnected node: A node with no incoming edge (except Start) is unreachable.
- Missing default edge: A Condition or Intent Router with no default output.
- Infinite loop risk: A cycle with no exit condition or turn limit.
- Duplicate output edge: Standard handles support one outgoing edge. A second connection replaces the first.
Warnings appear as yellow badges on nodes and in the Issues tab at the bottom of the builder.
Best Practices
- Label conditional edges so the flow is self-documenting.
- Always connect a default path on Condition and Intent Router nodes.
- Arrange nodes so edges flow left-to-right or top-to-bottom for readability.
- Prefer the Loop node over manual back-connections for controlled iteration with built-in limits.
- Test every branch using the conversation simulator to verify each path executes correctly.
