🔧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:

Field
What to set

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):

Field
What to set

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 MessageMessage to Send; Set FieldField Key (e.g. customFields.myField) and Field Value; Switch BotTarget Bot ID; Close ChatClose 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; PriorityHigh (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:

Field
What to set

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):

Field
What to set

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:

Field
What to set

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:

Field
What to set

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:

Field
What to set

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):

Field
What to set

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:

Field
What to set

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:

Field
What to set

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:

Field
What to set

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):

Field
What to set

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):

Field
What to set

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:

Field
What to set

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:

Field
What to set

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:

Field
What to set

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:

Field
What to set

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:

Field
What to set

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

Node
Main config fields (right sidebar)

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):

Type
Description

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:

  1. Every flow must start with a bot_start node.

  2. Every path must end with break, agent handoff, or a loop back.

  3. Marketing flows should include an opt-out option.

  4. Complex scenarios should offer human handoff.

  5. time_delay should be used sparingly (e.g. max 24 hours).

  6. 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?