WhatsApp API Platform
Chatbot

Nodes Reference

All 17 chatbot node types — triggers, messages, input, logic, integration, and action nodes with configuration options.

Every chatbot flow is built from nodes — the building blocks that define what happens at each step of a conversation. The editor provides 17 node types in six categories, listed in the node sidebar. Drag a node onto the canvas, then double-click it to configure.

In the app: Dashboard → Automation → Chatbot → [Edit] → node sidebar

Variables in any field

Wherever a field shows the </> icon, you can insert a saved value — customer info, a contact attribute, or a flow variable — instead of static text. See Triggers & Variables.


Triggers

Trigger nodes are the entry points of a flow. Which one fires depends on the chatbot's trigger type, set when you create it (see Triggers & Variables).

On First Message

Starts the flow on the first contact ever from a new customer, and fires once per contact. No configuration. Use it for onboarding and first-time welcome flows.

On Message

Starts the flow when an incoming message matches the chatbot's keywords or pattern. This is the entry point for keyword, exact-match, starts-with, and regex chatbots. The match itself is configured by the chatbot's trigger type and keywords, not on the node.


Message nodes

Nodes that send content to the customer. They're send-only: they don't wait for a reply. Use an input node when you need to capture an answer.

Send Message

Send text, an image, a video, or a document.

Config optionDescription
MessageThe message body. Supports variables with the </> picker
AttachmentOptional. Add attachment to include an image, video, or document

Send Message node showing the message text area and an Add attachment button

Add attachment opens a picker. Upload a new file, or pick one from your Media Library.

Add attachment dialog with an upload area and a grid of media library files

The selected file is confirmed in the dialog before you apply it.

Add attachment dialog confirming the selected media file

Once attached, the button becomes Change attachment, and the file name shows on the node.

Send Message node with an attached image and a Change attachment button

When to use: Welcome messages, confirmations, instructions, or sending media — any message where you don't need a reply.

Send CTA URL

Send a message with a single clickable button that opens a URL.

Config optionDescription
Body textThe message shown above the button. Supports variables
URLThe link the button opens, e.g. https://google.com
Button textThe button label, e.g. "Visit Website"

Send CTA URL node showing body text, URL, and button text fields

Personalize the body with the </> picker. Insert a customer field such as their name:

Send CTA URL body text with a customer name variable inserted

Or a contact attribute, referenced with dot notation:

Send CTA URL body text with a contact attribute variable inserted

When to use: Driving customers to a product page, a smart link, a booking page, or any external destination from inside the chat.


Input nodes

Nodes that send a message and wait for the customer's reply. The reply is captured for use later in the flow.

Ask Question

Ask a free-text question and wait for the customer to type a reply.

Config optionDescription
QuestionThe question text. Supports variables
Save response to variableThe variable that stores the reply. Pick one, or create a new one with +
Validation ruleOptional check applied to the reply
Invalid messageShown when validation fails, so the customer can retry

Ask Question node showing the question, save-to-variable, and validation rule fields

The Save response to variable dropdown lists existing variables, or use + to create one inline.

Save response to variable dropdown listing existing variables

Pick a validation rule to enforce the reply's format: None, Regex, Email, Phone, or Number.

Validation rule dropdown listing None, Regex, Email, Phone, and Number

With a rule set, an Invalid message appears for the customer if their reply doesn't pass.

Ask Question configured to save to a variable with Number validation and an invalid message

Validation saves cleanup

Use Email or Phone validation to ensure properly formatted data. On an invalid reply the customer sees your Invalid message and tries again; the flow only advances once the input is valid.

Ask Buttons

Send up to 3 quick-reply buttons and wait for the customer to tap one. Each button becomes its own branch.

Config optionDescription
Body textThe message shown above the buttons
Buttons (max 3)Each button's label. Add button to add another
Invalid message (optional)Shown when the customer types instead of tapping

Ask Buttons node showing body text, an Add button control, and an invalid message field

Each button you add gets its own row and its own outgoing edge. Connect each edge to the next node for that choice.

Ask Buttons node with two buttons, Interested and Not Interested

WhatsApp limit

WhatsApp allows a maximum of 3 buttons per message. For more options, use Ask List.

Ask List

Send a scrollable list of options grouped into sections, and wait for the customer to select one. Use it when you need more than three choices or want descriptions.

Config optionDescription
Body textThe message shown with the list button
SectionsGroups of rows. Add section to add a group
RowsEach row has a title (max 24 chars) and an optional description (max 72 chars). Add row to add one
Save selection to variable (optional)Stores the selected row
Invalid message (optional)Shown when the customer doesn't select from the list

Ask List node showing the body text, save-to-variable, row title and description fields

Build the list with as many sections and rows as you need. Each section groups related options under a heading.

Ask List node with a Mobile/Laptop section and a Clothes section containing rows

When to use: Menus with 4+ options, product or service categories, or any selection that benefits from descriptions.


Logic nodes

Nodes that control the path and manage data.

Condition

Branch the flow by comparing a variable against a value. Add one or more conditions; each row has a variable, an operator, and a value.

Config optionDescription
VariableThe variable to check
OperatorHow to compare (see below)
ValueThe value to compare against. Supports variables
Add conditionStack additional comparisons

Condition node showing variable, operator, and value with an Add condition button

The operator dropdown offers six comparisons: Equal to, Not equal, Greater than, Less than, Greater than or equal, Less than or equal.

Operator dropdown listing the six comparison operators

Stack multiple conditions to test more than one thing at once.

Condition node with a Greater than or equal comparison being added

Each condition compares a variable against a value, which can itself be another variable.

Condition node with a Less than or equal comparison and a value

When to use: Routing on a customer's answer, gating on a contact attribute, or checking an API result before the next step.

Set Variable

Assign a value to a variable, for storing data, setting a flag, or preparing a value for a later node.

Config optionDescription
VariableThe variable to set
ValueThe value to assign. Static text or another variable

Set Variable node with a variable selector and a value field

When to use: Storing computed or copied values, setting flags, or seeding a default before a Condition.


Integration nodes

Nodes that connect the flow to forms, your own APIs, and outbound messaging.

Send Form

Send a Form as a link button and wait for the customer to submit it. Submitted fields are saved to a variable for use later in the flow.

Config optionDescription
FormSelect one of your forms
Body textThe message shown with the form link
Button textThe button label (default: "Open Form")
Save response toAn object variable that stores the submission
Timeout (seconds)How long to wait for submission (0 = no timeout)

Pick the form to send from your published forms.

Send Form node with the form selector open, listing available forms

The submission is stored in an object variable — create one with + if you don't have it yet.

Create New Variable dialog set to the Object type for a form response

Once a form is selected, its available fields are listed (for example form_response.name, form_response.phone, form_response.rating) so you can reference individual answers downstream.

Send Form node showing the selected form, save-to variable, and the list of available fields

When to use: Lead capture, surveys, appointment booking, or any structured data collection mid-conversation.

HTTP Request

Call an external API and use the response in your flow — look up an order, check inventory, or create a record in your CRM.

Config optionDescription
MethodGET, POST, and so on
URLThe endpoint. Supports variables
HeadersKey-value pairs (e.g. an auth token). Add for more
Query paramsKey-value query string pairs. Add for more
Save response toThe variable that stores the response
TimeoutMax seconds to wait

HTTP Request node showing method, URL, headers, query params, save-to variable, and timeout

When to use: Order lookups, inventory checks, CRM writes, or any external data the flow needs to branch on.

Send Enotify Message

Send an outbound message via the Enotify API. Useful for notifying a different number than the one in the conversation.

Config optionDescription
API tokenYour Enotify API token
Phone numberThe recipient. A literal number, or a variable such as the contact's phone
MessageThe message text. Supports variables

Send Enotify Message node with empty API token, phone number, and message fields

Fill in the token, recipient, and message body.

Send Enotify Message node filled in with a token, phone number, and message

When to use: Internal alerts, notifying a second number, or sending a confirmation through the API.


Action nodes

Nodes that act on the conversation and the contact: assignment, tagging, attributes, and tickets.

Assign to Agents

Assign the conversation to one or more specific agents in Team Chats.

Config optionDescription
Select agentsTick the agents to assign the conversation to

Assign to Agents node showing a checkbox list of agents

Once saved, the node shows the assigned agent on the canvas.

Assign to Agents node placed on the canvas with the assigned agent shown

When to use: Routing to a known account manager, VIP handling, or direct assignment based on flow logic.

Assign to Skillset

Route the conversation to a skillset. The next available agent with that skill picks it up.

Config optionDescription
Select skillsetsTick one or more skillsets to route to

Assign to Skillset node showing a checkbox list of skillsets

You can route to several skillsets at once.

Assign to Skillset node with two skillsets selected

When to use: Skill-based routing after the bot identifies the need (for example, customer chose "Technical issue" → Technical Support skillset).

Add/Remove Tags

Add or remove tags on the customer's contact during the flow.

Config optionDescription
Add tagsTick the tags to add
Remove tagsTick the tags to remove

Add/Remove Tags node with separate Add tags and Remove tags checkbox lists

Add and remove in the same node — useful for swapping a contact from one stage tag to another.

Add/Remove Tags node with a different combination of tags selected

When to use: Auto-categorizing leads ("interested", "hot_lead"), marking flow completion, or clearing outdated tags.

Set Attribute

Update one or more contact attributes on the customer's profile.

Config optionDescription
Attribute assignmentsEach row: Select attribute, then a Value (static text or a variable)
Add assignmentSet additional attributes in one node

Set Attribute node showing an empty attribute assignment row

Choose the attribute and give it a value. Add more assignments to set several at once.

Set Attribute node with Display Name set to a value

When to use: Saving preferences, recording data collected in the flow, or updating profile fields for later segments.

Create Ticket

Create a support ticket from the conversation.

Config optionDescription
Subject (required)Ticket subject. Supports variables
DescriptionTicket detail. Supports variables
PriorityLow, Medium, High, or Urgent
AssigneesAgents to assign the ticket to
TagsTags to apply to the ticket
Save ticket number to variableStores the new ticket's number for later use

Create Ticket node showing subject, description, priority, assignees, and tags

Set the urgency with the priority dropdown.

Create Ticket node with the priority dropdown showing Low, Medium, High, and Urgent

Pick assignees and tags, and optionally save the new ticket's number to a variable to reference it later.

Create Ticket node showing assignees, tags, and the save-ticket-number-to-variable option

The completed node carries everything an agent needs to pick the ticket up.

Create Ticket node fully configured and ready to save

When to use: Logging issues that need follow-up, capturing complaints, or any conversation that should become trackable work.


Quick reference

NodeCategoryWaits for input?Key use
On First MessageTriggerStart on first-ever contact
On MessageTriggerStart on keyword / pattern match
Send MessageMessageNoText, image, video, document
Send CTA URLMessageNoMessage with a link button
Ask QuestionInputYesFree-text input with validation
Ask ButtonsInputYesUp to 3 button choices
Ask ListInputYesScrollable list selection
ConditionLogicNoBranch by comparison
Set VariableLogicNoStore / set a value
Send FormIntegrationYesCollect a form submission
HTTP RequestIntegrationNoCall an external API
Send Enotify MessageIntegrationNoOutbound message via API
Assign to AgentsActionNoAssign to specific agents
Assign to SkillsetActionNoRoute by skillset
Add/Remove TagsActionNoTag the contact
Set AttributeActionNoUpdate contact attributes
Create TicketActionNoCreate a support ticket

How is this guide?

On this page