🔧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. 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. Variables allowed. Longer messages are sent as multiple segments.

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

Calendly

What it does: Integrates Calendly so users can check availability, list your event types, or create, reschedule, or cancel bookings from the conversation. Connect your Calendly account once per workspace; all Calendly nodes in the same bot use that connection.

Configuration (from the right sidebar):

Field
What to set

Connect

If not connected: click Authenticate with Calendly to sign in (OAuth). Done once per workspace.

Node name

Label (e.g. "Book a meeting").

Action

Check availability; List event types; Create booking (schedule event); Reschedule event; Cancel event.

Event type

(When needed) Select the Calendly event type from the dropdown (loaded from your account).

Variable mapping

Map Name, Email, Start time, Timezone, Notes to variables (e.g. {{client.name}}, {{client.email}}, {{customFields.selected_time}}). For reschedule/cancel, set Event or invitee URI (e.g. {{customFields.calendlyResult.inviteeUri}}).

Output field

Where to store the result (default: calendlyResult). Use in the next node (e.g. a Send Message with {{customFields.calendlyResult}}).

Continue on error

If on, the flow continues and the error is stored in the output field; you can branch with a Condition.

Connecting Calendly: When you click Authenticate with Calendly, you sign in with Calendly (OAuth). After you authorize, you are redirected back to the Workflow Builder (or the page you started from). If something goes wrong (e.g. invalid or expired authorization), you are still redirected back to the app with an error message so you can try again.

Tips: Use Create booking after collecting name, email, and a chosen time (e.g. from Options or a previous step). The result includes inviteeUri, eventUri, and status so you can send a confirmation message. For Reschedule or Cancel, pass the invitee or event URI from a previous Calendly result.


Zapier

What it does: Sends data outbound to a Zapier webhook (e.g. when a user completes a step) or waits for inbound data from Zapier (e.g. when a Zap runs and POSTs back to OnRaven). Use it to connect your bot to 5,000+ apps (CRM, sheets, email, etc.) without writing code.

Configuration (from the right sidebar):

Field
What to set

Node name

Label (e.g. "Send to Zapier").

Mode

Outbound — send a payload to a Zapier webhook when the flow reaches this node. Inbound — pause and wait for Zapier (or another system) to POST to your webhook URL; then continue with the received data.

Webhook

(Outbound) Select the Zapier webhook you created in Integrations → Zapier. The payload will be sent to that webhook URL.

Payload fields

(Outbound) Key/value pairs to send. For each: Key (e.g. contact_name, order_id), Value source — use variables like {{client.name}}, {{customFields.selected_option}}.

Output field

Where to store the webhook response (default zapierResult). Use in the next node (e.g. {{customFields.zapierResult}}).

Continue on error

If on, the flow continues even if the webhook call fails; the error is stored in the output field.

Wait for inbound

(Inbound) When on, the flow pauses until data is received at the webhook URL.

Tips: Create your webhook in Integrations → Zapier first, then select it in the node. For outbound, map conversation/contact data into payload fields so your Zap has context. For inbound, use the webhook URL shown in the node or in Zapier settings; when Zapier POSTs, the flow resumes with that data in custom fields. See Zapier & Make for setup and recipe examples.


Make (Integromat)

What it does: Same idea as Zapier — outbound sends data to a Make webhook when the flow reaches the node; inbound waits for Make (or any HTTP client) to POST to your OnRaven webhook so the flow can continue with the received data. Use it to connect your bot to Make scenarios and hundreds of apps.

Configuration (from the right sidebar):

Field
What to set

Node name

Label (e.g. "Send to Make").

Mode

Outbound — send a payload to a Make webhook. Inbound — wait for a webhook call before continuing.

Webhook

(Outbound) Select the Make webhook you created in Integrations → Make.

Payload fields

(Outbound) Key/value pairs; use variables (e.g. {{client.email}}, {{customFields.answer}}).

Output field

Where to store the response (default makeResult).

Continue on error

If on, the flow continues on webhook failure.

Wait for inbound

(Inbound) Pause until the webhook receives data.

Tips: Create the webhook in Integrations → Make first. You can run Automation rules when data arrives (e.g. create contact, create lead, add to audience, send message). See Zapier & Make for recipes.


OpenTable

What it does: Integrates OpenTable so users can check availability and make, modify, or cancel restaurant reservations from the conversation. Connect OpenTable once per workspace (OAuth); all OpenTable nodes use that connection.

Configuration (from the right sidebar):

Field
What to set

Node name

Label (e.g. "Check availability").

Action

Check availability; Make reservation; Modify reservation; Cancel reservation.

Date / Time / Party size

Use variables (e.g. {{customFields.selected_date}}, {{customFields.party_size}}). Format: date YYYY-MM-DD, time HH:mm.

Guest name / email / phone

(Make reservation) Variables like {{client.name}}, {{client.email}}.

Special requests

(Optional) Free text or variable.

Reservation ID

(Modify/Cancel) Variable from a previous OpenTable result (e.g. {{customFields.opentable_result.reservationId}}).

Output field

Where to store the result (default opentable_result).

Continue on error

If on, the flow continues and the error is stored in the output field.

Tips: Collect date, time, party size, and guest details in earlier nodes (e.g. Options or Send Message + user reply), then pass them into the OpenTable node. Use Check availability first, then Make reservation with the chosen slot. Store the result and use it in a confirmation message or for Modify/Cancel later.


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

Calendly

Connect (Authenticate with Calendly), Node name, Action, Event type, Variable mapping, Output field, Continue on error

Zapier

Node name, Mode (outbound/inbound), Webhook, Payload fields, Output field, Continue on error, Wait for inbound

Make

Node name, Mode (outbound/inbound), Webhook, Payload fields, Output field, Continue on error, Wait for inbound

OpenTable

Node name, Action (availability/reservation/modify/cancel), Date/Time/Party size, Guest fields, Reservation ID, Output field, Continue on error


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?