🔧Configure each bot node
This page explains how to configure every node type in the Workflow Builder. Click a node on the canvas to open the right sidebar; the fields you see there are described below. The labels and options match the configuration panels you see when you click a node in the Workflow Builder. For an overview of the builder and how to connect nodes, see Workflow Builder (deep dive).
Triggers
Start Trigger
What it does: Entry point when a new conversation begins. Every flow has one.
Configuration: None. Connect the Start node to the first message or step (e.g. a Send Message or Options Menu).
Tips: Don’t add a second Start unless you’re building a separate flow. The flow runs from Start → next node → … until it hits a Break, Transfer to Agent, or Switch Bots.
Webhook Trigger
What it does: Starts the flow when an external system calls a webhook URL (e.g. CRM, order system, calendar).
Configuration:
Webhook path
URL path for the webhook endpoint (e.g. /webhook/order-created). The full URL is shown in the builder or in your channel settings; use it in your external system to send POST/GET requests.
Tips: After you add the node, copy the webhook URL and register it in your CRM, Zapier, or other tool. Connect the Webhook Trigger to the next node (e.g. Send Message or HTTP Request) that should run when the webhook is called.
Trigger Word (Keyword Trigger)
What it does: When the user sends a message that matches certain keywords, the flow can jump to a node, send a message, set a custom field, switch to another bot, or end the conversation. Useful for "stop", "agent", or menu shortcuts. Keyword triggers are always global and checked before any message processing.
Configuration (from the right sidebar):
Trigger Name
Short name for this trigger (e.g. "Keyword Trigger").
Trigger Keywords
Type each keyword and press Enter to add it. Quick-add buttons: help, cancel, stop, menu. Keywords are stored in lowercase.
Match Type
Contains (anywhere in message); Exact Match (full message); Starts With; Ends With; Regular Expression.
When Triggered, Do:
Go to Node — choose Target Node from the dropdown (connect an edge to that node); Send Message — Message to Send; Set Field — Field Key (e.g. customFields.myField) and Field Value; Switch Bot — Target Bot ID; Close Chat — Close Reason: User Requested, Completed, Cancelled.
Options
Case sensitive matching; Interrupt current flow when triggered; Global trigger (always active) — always on for keyword triggers; Continue flow after action — after the action, continue processing the message normally; Priority — High (checked first), Normal, Low (checked last).
Tips: Use priority to control which trigger runs when several could match. For "Go to Node", connect an edge from the Trigger Word node to the target node; the sidebar shows "Connected to: [node name]".
Logic & flow
Condition (If/Else)
What it does: Splits the flow based on a condition (e.g. "if variable X equals Y"). Conditions are created automatically when you connect edges from this node to target nodes; each connection gets one condition row. One condition can be Set as default fallback (if no other condition matches).
Configuration:
Condition Name
A short name for this node (e.g. "Check budget").
Compare Input Against
User Input (Last Message) — compare against the user's last message; Custom Field — compare a stored variable; Conversation State — compare conversation state.
Custom Field Key
Shown only when Compare Input is Custom Field. The key to read (e.g. user_choice, selected_option).
Conditions
One row per connected target: Operator (Equals, Not Equals, Contains, Does Not Contain, Starts With, Ends With, Greater Than, Less Than, Greater Than or Equal, Less Than or Equal, Matches Regex, Is Empty, Is Not Empty, Is Number, Is Email), Value to compare (not shown for Is Empty, Is Not Empty, Is Number, Is Email), Then go to (target node). Toggle Set as default fallback on one condition for "If no match, go to".
Execution Options
Case sensitive comparison; Trim whitespace before comparing (default on).
Tips: Connect edges from this node to the nodes you want to branch to; conditions are created for each connection. Use Set Variable or JavaScript before the Condition if you need to store a user answer or computed value first.
Time Delay
What it does: Pauses the flow for a set time (seconds, minutes, or hours), then continues to the next node. Useful for simulating human-like response times, scheduling follow-ups, or timed sequences.
Configuration (from the right sidebar):
Node Name
Label for this node (e.g. "Time Delay").
Quick Select
One-click presets: 5 sec, 30 sec, 1 min, 5 min, 15 min, 1 hour, 24 hours.
Custom Delay
Number (1–999) + unit: Seconds, Minutes, Hours, Days.
Delay Type
Fixed Delay; Random (between min/max); Scheduled Time.
Random Range
Shown when Delay Type is Random: Min and Max (e.g. 1 to 60).
Execute At
Shown when Delay Type is Scheduled: time picker (e.g. 09:00).
Options
Show typing indicator during delay; Cancel delay if user sends message; Auto-execute next node after delay (default on).
Tips: Use short delays (e.g. 2–5 seconds) between messages to simulate typing. Use longer delays for follow-ups (e.g. “We’ll message you in 2 hours”).
Loop
What it does: Jumps to another node in the flow (back to a previous step or forward to any node). Used for “back to main menu” or “try again”.
Configuration:
Node Name
Label for this node (e.g. "Loop").
Loop Type
Go to Node (Jump); Repeat Current Node; Restart from Beginning; Iterate Over Array.
Target Node ID
Shown when Loop Type is Go to Node. The node ID to jump to.
Array Source
Shown for Iterate Over Array. Path to the array (e.g. customFields.items).
Current Item Variable / Index Variable
Shown for Iterate. Variable names for current element and index (defaults currentItem, currentIndex).
Loop Limit
Max iterations (1–100). Prevents infinite loops.
Exit Condition (Optional)
No Exit Condition; When Field Equals Value (Field to Check, Exit When Equals); When Field Exists (Field to Check); When User Says Keyword (Exit Keywords, comma-separated e.g. "exit, stop, done").
Options
Track iteration count in customFields; Reset counter on re-entry.
Tips: Set a reasonable Loop Limit and consider an Exit Condition to avoid infinite execution. Use a Condition or Break somewhere in the loop to allow an exit.
Break
What it does: Ends the conversation flow. Optionally sends a final message before ending.
Configuration:
Node Name
Label (e.g. "End Conversation").
Close Reason
Completed Successfully; User Requested; Session Timeout; Error Occurred; Transferred to Agent; Custom Reason.
Custom Close Reason
Shown when Close Reason is Custom Reason. Free text.
Farewell Message (Optional)
Message to send before closing.
Options
Send farewell message; Save conversation transcript; Allow user to reopen conversation; Trigger webhook on close.
Webhook URL
Shown when Trigger webhook is On. URL to call when the conversation closes.
Tips: Connect the last meaningful step (e.g. a Send Message or “We’re done” path) to the Break so the flow has a clear end.
Switch Bots
What it does: Transfers the conversation to a different bot (e.g. Sales bot, Support bot). The current flow stops and the other bot’s flow takes over.
Configuration:
Node Name
Label (e.g. "Switch Bot").
Select Target Bot
Dropdown of your bots (loaded from the app).
Handoff Message (Optional)
Message to send before switching.
Start At Node (Optional)
Node ID in the target bot to start from; leave empty to start from the beginning.
Options
Preserve conversation context; Preserve custom fields; Send handoff message; Log bot switch in analytics.
Tips: Use for department handoff (e.g. “Support” vs “Sales”) or language-specific bots. The target bot must exist and be Active.
Actions (sending content)
Send Message
What it does: Sends a text message to the user. You can use variables (e.g. {{contact.firstName}}) in the text. Optionally wait for a reply or auto-execute the next node.
Configuration (from the right sidebar):
Action Name
Short name for this step (e.g. "Welcome message").
Template
(Optional) Select a template: Order_VIP_Welcome, Order_Confirmation, Shipping_Update, or "Select a template" (empty).
Message
The text to send. Character count shown (e.g. /160 chars). Type {{ to open the variable picker (contact fields, custom fields, etc.). Placeholder: "Type your message... (type {{ for variables)".
Execution Options
Wait for user response (Prompt) — flow waits for reply before continuing; Auto-execute next node — continue immediately.
Execution Delay
(Optional) Number + unit (Minutes, Hours, Days) to delay sending (default 0).
Tips: Keep messages short and clear. Use variables for personalization (e.g. “Hi {{contact.firstName}}!”). For buttons or choices, use an Options Menu node after the message.
Send Voice Message
What it does: Sends an audio/voice message to the user (e.g. pre-recorded greeting or explanation).
Configuration:
Audio URL
A public URL to the audio file (e.g. MP3, OGG). The channel must support voice messages.
Transcription
(Optional) Text transcription of the audio for accessibility or fallback display.
Tips: Use a stable, public URL. Some channels have limits on duration or file size.
Send Email
What it does: Sends an email to the user outside the chat (e.g. confirmation, receipt, PDF). The “To” address usually comes from contact data or a variable.
Configuration:
Subject
Email subject line. You can use variables (e.g. Order {{order_id}} confirmed).
Body
Email body (plain text or HTML, depending on what the builder supports). Variables are supported.
To
Recipient email. Usually a variable (e.g. {{contact.email}}) or a field from the conversation.
Tips: Ensure your account has Email channel or email-sending set up. Use a clear subject so the email isn’t missed or marked spam.
Send SMS
What it does: Sends an SMS to the user’s phone (e.g. reminder, verification code). Often used when the main conversation is on another channel.
Configuration:
Message
SMS text. Keep it short (e.g. 160 characters for a single segment, depending on carrier). Variables allowed.
To
Phone number. Usually a variable (e.g. {{contact.phone}}) in E.164 format (e.g. +1234567890).
Tips: SMS has character limits and cost per message. Use for short, important notifications. Ensure the SMS channel (or equivalent) is connected for your account.
Options Menu
What it does: Shows the user a set of clickable options (buttons or list). Each option can be connected to a different next node (e.g. “Sales” → one message, “Support” → another).
Configuration (from the right sidebar):
Menu Title
The title for this menu (e.g. "Main menu").
Question / Message
The question or prompt above the options (e.g. "What can I help you with?").
Display Type
How options appear (platform limits in UI): Reply Buttons (max 3; WhatsApp, Messenger, Instagram); Quick Replies (max 13; Messenger, Instagram); List Menu (max 10; WhatsApp); Text List (numbered; all platforms); Generic Template (cards with image & buttons; Messenger, Instagram); Button Template (max 3; Messenger, Instagram); Catalog (WhatsApp); Single Product (WhatsApp); Product List (max 30; WhatsApp).
Options
For each option: Label, Operator (Equals, Contains, Starts With, Number Equals), Match value, Then go to (target node). One can be Set as default fallback. Options are created when you connect edges to target nodes.
Execution Options
(If shown) Wait for user response; Case sensitive matching.
Tips: Keep option labels short. Connect each option’s output handle to the correct next node (Message, Condition, or another flow). Use 3–5 options for a main menu so it’s not overwhelming.
Code & integrations
HTTP Request
What it does: Calls an external API (GET, POST, PUT, DELETE) to fetch or send data. You can use variables in the URL, headers, and body. Response data can be saved into variables.
Configuration (from the right sidebar):
Node Name
Label (e.g. "HTTP Request").
Request URL
The API endpoint. Use {{variable}} for dynamic parts (e.g. https://api.example.com/{{customFields.endpoint}}).
Method
GET, POST, PUT, DELETE.
Headers
Key/value pairs (e.g. Header name, Header value). Add as many as needed.
Content Type
application/json (default) or other.
Request Body
For POST/PUT, the body (JSON or other). Variables allowed.
Save Response Data
Output fields: JSON path (e.g. data.results[0].value) and Variable name to store the result.
Request Options
Timeout (ms), etc. Use Test tab to try the request with test variable values.
Tips: Store API keys in environment or secrets if the builder supports it; don’t hardcode them in the flow. Use the response in a Condition or Set Variable if you need to branch or save data.
JavaScript
What it does: Runs custom JavaScript in the flow (e.g. calculations, formatting, validation). The result can be stored in a variable.
Configuration:
Node Name
Label for this node (e.g. "JavaScript").
JavaScript Code
The code to run. Context (e.g. contact, customFields) per builder docs.
Output Fields (Save to customFields)
Variable names (e.g. totalPrice, formattedDate). Code returns an object; properties saved to these custom fields. Add/remove as needed.
Execution Options
Toggles. Timeout (ms) (default 5000).
Tips: Keep code short and safe. Avoid side effects (e.g. network calls) unless the builder allows it. Use for logic that’s easier in code than with many Condition nodes.
Set Variable
What it does: In the app, the Set Variable node uses the default configuration panel: Node Name and Description. Use it to label the step; actual variable assignment is often done via JavaScript (return an object) or by saving HTTP Request or Options outputs. Use Description to note what variable(s) this step sets.
Tips: Set variables after user input (e.g. after Options or a message that waits for response) so you can branch with Condition or personalize with Send Message. Variables are usually available as customFields.variableName or in the variable picker.
Human handoff
Transfer to Agent
What it does: Hands the conversation to a human agent in the Inbox. The flow stops and the conversation appears for an agent to reply.
Configuration:
Node Name
Label (e.g. "Transfer to Agent").
Handoff Message
Message shown to the user when the transfer happens.
Priority
Low, Medium, High, or Urgent.
Department (Optional)
Route to a department (e.g. Sales, Support, Billing).
Options
Send handoff message to customer; Block bot until agent responds; Send notification to available agents; Include conversation transcript.
Handoff Reason (for agents)
Internal note explaining why this was transferred.
Tips: Always set a friendly handoff message. Use priority and department so the right team picks up the conversation.
AI & knowledge
Knowledge Base
What it does: Searches your uploaded documents and FAQ for an answer and can reply with the best match (if your account has this feature).
Configuration:
Knowledge Base
Dropdown: AI Agent Knowledge Bases (per-agent, with doc count) or Standalone Knowledge Bases (e.g. Customer Support KB, Product Information KB, FAQ KB).
Search Query
Query to run. Can use variables.
Max Results
Number 1–10 (default 5).
Confidence Threshold
Slider 0–100% (default 70%). Minimum score for an answer to be used.
Execution Options
Wait for user response (Prompt); Auto-execute next node.
Tips: Use for product docs, FAQs, and policies. Connect the "answer found" output to a Send Message or AI Response, and the "not found" output to a fallback or Transfer to Agent.
AI Response
What it does: Uses an AI agent to generate a reply (open-ended answers, personalized text). Optionally can run in “autopilot” for longer conversations.
Configuration:
Node Name
Label for this node (e.g. "AI Response").
**Select AI Agent ***
The AI agent to use (dropdown). Required.
Conversation Settings
Max History Messages (default 10).
Fallback Message
Message to show if the AI fails or errors.
Max Conversation Turns (Optional)
When using autopilot, max turns before continuing.
Keyword Actions
(Optional) Keywords that trigger actions.
System Prompt Override
(Optional) Override the agent default system prompt for this node.
Store Response In Field
Custom field name to store the AI reply.
Execution Options
Toggles for wait/auto-execute, etc.
Tips: Write a clear system prompt so the AI stays on brand and on task. Use autopilot for open-ended support; use it Off when you want to control the next step (e.g. then show an Options Menu).
MCP Tool
What it does: Calls an external tool via the Model Context Protocol (e.g. Google Calendar, HubSpot, Salesforce) to create events, fetch data, or update systems.
Configuration:
Node Name
Label for this node (e.g. "MCP Tool").
**Select MCP Server ***
The MCP server (dropdown of active servers; shows tool count). Required.
**Select Tool ***
The specific tool (dropdown; name and description). Required.
Input Mapping
For each tool parameter: value using {{customFields.fieldName}} or static. View/Hide Schema shows input JSON schema.
Store Result In Field
Custom field for the tool output (e.g. mcpResult, calendarEventId).
Error Handling
Continue on error. Error Fallback Message when on: message to send if the tool fails.
Tips: Ensure the MCP server and tool are set up and connected in your account. Use Set Variable or Condition after the MCP node to branch or message based on the result.
Quick reference table
Start Trigger
None
Webhook Trigger
Webhook path
Trigger Word
Trigger Name, Trigger Keywords, Match Type, When Triggered Do (goto/send/set field/switch bot/end), Options, Priority
Condition
Condition Name, Compare Input Against, Custom Field Key, Conditions (operator, value, Then go to, default fallback), Execution Options
Time Delay
Node Name, Quick Select, Custom Delay, Delay Type, Random Range / Execute At, Options (typing, cancel on message, auto-execute)
Loop
Node Name, Loop Type, Target Node ID, Array Source, Item/Index variables, Loop Limit, Exit Condition, Options
Break
Node Name, Close Reason, Custom Close Reason, Farewell Message, Options, Webhook URL
Switch Bots
Node Name, Select Target Bot, Handoff Message, Start At Node, Options
Send Message
Action Name, Template, Message, Execution Options, Execution Delay
Options Menu
Menu Title, Question/Message, Display Type, Options (label, operator, value, Then go to, default fallback), Execution Options
HTTP Request
Node Name, Request URL, Method, Headers, Content Type, Body, Save Response Data, Timeout
JavaScript
Node Name, JavaScript Code, Output Fields
Set Variable
Node Name, Description (default panel)
Transfer to Agent
Node Name, Handoff Message, Priority, Department, Options, Handoff Reason
Knowledge Base
Knowledge Base, Search Query, Max Results, Confidence Threshold, Execution Options
AI Response
Node Name, Select AI Agent, Conversation Settings, Fallback, Autopilot, Keyword Actions, System Prompt Override, Store Response, Execution Options
MCP Tool
Node Name, Select MCP Server, Select Tool, Input mapping, Store Result In Field, Error Handling
Node types and data format (backend / AI reference)
The following matches the flow schema used by the backend and AI flow generation (e.g. when generating or validating flows programmatically). Use this as a reference for node type names and the shape of each node’s data in the flow JSON.
Node types (backend):
bot_start
Entry point (required, exactly one per flow).
message
Send text message to user.
options
Present choices to user with buttons.
condition
Branch based on conditions (true/false outputs).
time_delay
Wait before next action (delayMinutes in config).
http_request
Make external API call.
javascript
Execute custom code.
ai_agent
Use AI to generate response.
agent
Escalate to human agent.
break
End flow path.
Flow structure: A flow is represented as { nodes: [...], edges: [...] }. Each node has tempId, type, name, position, and data. Edges have source and target (node tempIds).
Data formats by node type (for flow JSON):
Node type
data shape (reference)
message
{ "type": "message", "title": "name", "message": { "value": "text content", "type": "text" } }
options
{ "type": "options", "title": "name", "options": [{ "label": "Option 1", "value": "opt1" }] }
condition
{ "type": "condition", "title": "name", "condition": "expression", "trueLabel": "Yes", "falseLabel": "No" }
time_delay
{ "type": "time_delay", "title": "name", "delayMinutes": 60 }
agent
{ "type": "agent", "title": "Transfer to Agent" }
break
{ "type": "break", "title": "End" }
ai_agent
{ "type": "ai_agent", "title": "name", "agentId": null } (or specific agent ID)
Rules used by flow generation and validation:
Every flow must start with a
bot_startnode.Every path must end with
break, agent handoff, or a loop back.Marketing flows should include an opt-out option.
Complex scenarios should offer human handoff.
time_delayshould be used sparingly (e.g. max 24 hours).Nodes are laid out with readable positions (e.g. x: 100–1000, y: 100–800; vertical spacing ~150px, horizontal ~250px).
Source: flow generation and validation logic in the identity module (e.g. flow-ai.service). The UI may show slightly different labels (e.g. “Start Trigger” for bot_start, “AI Response” for ai_agent, “Transfer to Agent” for agent).
For connecting nodes and testing your flow, see Workflow Builder (deep dive). For variables you can use in messages and conditions, see Workflow Builder (deep dive) – Variables in messages.
Last updated
Was this helpful?
