Nodes Reference
Every node available in ChatYug Chatbot Builder (v1) and Trial Chatbot Builder V2. Shared nodes work in both builders; v2-only nodes appear only in the V2 palette.
Quick index
| Node | Type ID | v1 | v2 |
|---|---|---|---|
| Start | start | Yes | Yes |
| Send Message | message | Yes | Yes |
| Show Buttons | interactive_buttons | Yes | Yes |
| Show List | interactive_list | Yes | Yes |
| Wait for Input | wait_for_input | Yes | Yes |
| Condition | condition | Yes | Yes |
| Advanced Condition | advanced_condition | Yes | Yes |
| API Call | api_call | Yes | Yes |
| Database Action | database_action | Yes | Yes |
| Human Handoff | human_handoff | Yes | Yes |
| End Flow | end | Yes | Yes |
| Send Media | send_media | — | Yes |
| Switch/Case | switch | — | Yes |
| Set Variable | set_variable | — | Yes |
| Delay | delay | — | Yes |
| Loop | loop | — | Yes |
| Select Flow | flow_selector | — | Yes |
| Template Message | template_message | — | Yes |
| WhatsApp Notify | whatsapp_notify | — | Yes |
Shared nodes (v1 + v2)
Start
Purpose: Entry point of every flow. The conversation begins here when a customer message matches the flow’s trigger keywords.
When to use: Always present — do not remove. Configure keywords on the flow (v1 save prompt / flows list, or v2 Flow Settings), not as a separate palette node.
- v1: Start step shows “Triggered when customer sends keyword”
- v2: Fixed START node on the canvas
Send Message (message)
Purpose: Send plain text to the customer.
When to use: Greetings, confirmations, instructions, or any single text reply.
| Field | Required | Notes |
|---|---|---|
| Message Content | Yes | Supports variables (v1: {variable_name}; v2 commonly {{variable_name}}) |
Example: Hi {{customer_name}}, your order is confirmed.
Next: Connect to one following node.
Show Buttons (interactive_buttons)
Purpose: WhatsApp interactive reply buttons (max 3).
When to use: Small menus where the customer must pick one option.
| Field | Required | Notes |
|---|---|---|
| Body Text | Yes | Message shown above the buttons |
| Buttons | Yes | Up to 3; each has a title/label |
| Variable Name | No | Store the selection for later conditions/messages. Empty uses default response variables |
| Button Mode (v2) | No | Static buttons or Dynamic from an API data source |
| Data Source / Title Field / ID Field (v2 dynamic) | If dynamic | Variable holding options array; field names for title and id |
Auto variables (v1): selections can populate button_response, last_selection, last_selection_title, or your custom variable name.
Next: Each button routes to a different next node (branching).
Show List (interactive_list)
Purpose: WhatsApp list message (up to 10 rows).
When to use: Longer menus than three buttons (services, products, categories).
| Field | Required | Notes |
|---|---|---|
| Header Text | No | Optional list header |
| Body Text | Yes | Main prompt |
| Button Text | Yes | Label on the list open button (default often “View Options”) |
| List items / rows | Yes (static) | Title + optional description; max 10 |
| Variable Name | No | Store selection; empty may default to button_response / list response vars |
| List Mode (v2) | No | Static or Dynamic (from API variable) |
| Data Source / Title / Description / ID fields (v2) | If dynamic | Map API array fields; optional pagination checkbox |
Next: Customer row selection continues the flow (and can branch by stored variable + condition).
Wait for Input (wait_for_input)
Purpose: Ask a question and store the customer’s free-text reply in a variable.
When to use: Collect name, email, phone, order ID, or any typed answer.
| Field | Builders | Notes |
|---|---|---|
| Prompt Message | v1 + v2 | Question sent to the customer |
| Save / Store Response In (variable name) | v1 + v2 | v1 empty default: last_input |
| Validation Type | v1 + v2 | v1: any, email, phone, number, date (DD/MM/YYYY), regex. v2: any, number, email, phone |
| Min / Max (number), custom regex + error message | v1 | Shown when validation is number or regex |
| Max Retry Attempts | v1 | Default 3 (range 1–10) |
| Retry Message / Error Node ID | v1 | Custom fail message; optional node after max retries |
Next: Continues to the next node after a valid reply (or error path in v1 after max retries).
Condition / Simple Condition (condition)
Purpose: Branch true/false on a single variable comparison.
When to use: Simple yes/no or value checks.
| Field | Notes |
|---|---|
| Variable to Check | Variable name (with or without braces depending on builder habit) |
| Operator | v1: equals, not_equals, contains, not_contains, greater_than, less_than. v2: equals, contains, greater_than, less_than |
| Value | Comparison value |
Next: True path and false path to different nodes.
Advanced Condition (advanced_condition)
Purpose: Multiple conditions combined with AND or OR.
When to use: Multi-rule eligibility (e.g. plan is Premium AND age > 18).
| Field | Notes |
|---|---|
| Logic Operator | AND (all true) or OR (any true) |
| Conditions list | Each row: variable, operator, value. v1 operators include equals, not_equals, greater/less (and or equal), contains, starts_with, ends_with, is_empty, is_not_empty, in_list, regex_match |
Next: True / false branches like Simple Condition.
API Call (api_call)
Purpose: Call an external HTTP API and optionally save/extract response fields into variables.
When to use: CRM lookups, order status, pricing, ERP, or any live data.
| Field | Notes |
|---|---|
| Method | GET, POST, PUT, PATCH, DELETE (v1 lists all; v2 properties panel includes common methods) |
| API URL | Required; may embed variables |
| Headers (JSON) | Optional auth and content-type headers |
| Request Body | For POST/PUT/PATCH |
| Save Full Response To | Variable name for raw response |
| Extract Specific Fields (JSON) | Map variable → JSON path (e.g. {"price": "data.price"}) |
| Timeout (ms) | v1; default 10000 |
| Success / Error Message | Optional customer-facing messages |
| Continue on Error | Checkbox to keep flowing if the call fails |
Example URL: https://api.example.com/customer/{{user_phone}}
Database Action / Save to Database (database_action)
Purpose: Persist conversation data.
When to use: Capture leads/tags (v1) or write structured fields to a table (v2).
v1 fields: Contact Phone (default {customer_phone}), Contact Name, Email, Company, Tags (comma-separated), Success Message, Error Message, Continue on Error.
v2 fields: Action Type (e.g. INSERT), Table Name, Fields (JSON object of column → value).
UI labels differ slightly (“Save to Database” in v1 vs “Database Action” in v2) but share type id database_action.
Human Handoff / Transfer to Human (human_handoff)
Purpose: Stop bot automation for the conversation and hand off to a human agent.
When to use: “Talk to agent”, escalations, or failed self-serve paths.
| Field | Notes |
|---|---|
| Handoff / Transfer Message | Text sent when transferring (v2 default: “Transferring you to a human agent...”) |
| Department | v2; default general |
| Priority / notify options | v1 exposes transfer configuration (e.g. priority) in the edit modal |
End Flow (end)
Purpose: Finish the session.
When to use: Terminal step after a successful path or goodbye.
| Field | Notes |
|---|---|
| Final / End Message | Optional closing text (v2 default: “Thank you! Conversation ended.”) |
Next: None — conversation ends.
v2-only nodes
Send Media (send_media)
Purpose: Send image, video, or document in the session.
| Field | Notes |
|---|---|
| Media Type | image, video, or document |
| Media File | Optional upload from the properties panel |
| Media URL / Meta Media ID | Required; public URL or Meta media ID |
| Caption / Text | Optional |
Session media still requires an open WhatsApp customer service window when sending free-form media.
Switch/Case (switch)
Purpose: Multi-way branch on one variable (like a switch statement).
| Field | Notes |
|---|---|
| Variable to Check | Required |
| Cases | Each case: value, label, target node |
| Default Case | Node if no case matches |
Set Variable (set_variable)
Purpose: Assign or update a session variable without waiting for customer input.
| Field | Notes |
|---|---|
| Variable Name | Required |
| Operation | set, append, increment, decrement |
| Value | Required for set/append; can reference {{other_variable}} |
Delay (delay)
Purpose: Pause before continuing.
| Field | Notes |
|---|---|
| Delay (Seconds) | 0–3600; default 5 |
| Delay (Minutes) | Optional 0–60 |
| Show Wait Message | Optional “Please wait...” style message |
Loop (loop)
Purpose: Repeat a section of the flow.
| Field | Notes |
|---|---|
| Loop Type | count (N times), array (iterate items), condition (while true) |
| Max Iterations | For count; default 5 (max 100) |
| Array Variable | For array type |
| Condition Variable / Operator / Value | For condition type |
| Loop Back Node | Node to return to each iteration |
| Exit Node | Node when the loop finishes |
Select Flow (flow_selector)
Purpose: Jump execution into another saved chatbot flow (modular flows).
| Field | Notes |
|---|---|
| Select Flow | Required; choose from saved flows |
| Pass Variables | Default on — share current session variables |
| Return to Current Flow After Completion | Optional; continue parent flow after child ends |
| Return To Node | Where to resume in the parent flow |
Template Message (template_message)
Purpose: Send an approved Meta WhatsApp template from inside the flow.
When to use: Outside the 24-hour session window, or whenever you need an approved template format.
| Field | Notes |
|---|---|
| Template Name | Required; must be approved in Meta |
| Language Code | Default en |
| Template Variables | Values for {{1}}, {{2}}, … placeholders |
| Media ID / Media Type | Optional header media (image, video, document) |
This is different from flow templates (pre-built chatbot graphs). See Templates & Facilities.
WhatsApp Notify (whatsapp_notify)
Purpose: Send an internal/alert WhatsApp message to staff numbers (parallel to the customer conversation).
| Field | Notes |
|---|---|
| Recipient Numbers | Required; one per line or comma/semicolon separated |
| Notification Message | Required; can include variables |
| Parse Variables | Checkbox; default on |
Example: Alert sales: New lead {{customer_phone}} requested callback.
Connecting nodes
- v1: Steps are ordered in the list; conditions and buttons define branches in node config.
- v2: Drag connection handles between nodes on the canvas; condition/switch/loop nodes expose multiple targets (true/false, cases, loop/exit).
Always end every path with End Flow or Human Handoff so sessions do not hang without a terminal state.