General configuration
- Header: Message title (maximum 60 characters)
- Content: Main message that accompanies the buttons (maximum 1,024 characters on WhatsApp, 640 on Facebook/Instagram)
- Footer: Additional text below the content (optional)
Options
Each button has:- Option name: Text visible on the button (maximum 20 characters)
- Description: Additional context text (optional, maximum 72 characters)
Button types
| Type | Behavior |
|---|---|
| Postback | Sends a payload to the flow and continues along the connected route |
| URL | Opens a web page in the browser |
| Phone | Initiates a phone call |
Dynamic options
If the options come from variable data (for example, a list of products from your API), you can enable dynamic mode instead of defining them manually. Configure:- Source variable: The variable that contains the list (for example,
{{$memory.products}}) - Label template: How each option is displayed (for example,
{{item.name}} - ${{item.price}}) - Description template: Additional text per option (for example,
{{item.description}})
Variables in messages
You can use variables in the header and content:Advanced configuration
Mandatory selection
When enabled, the user must tap a button to continue. If they type free text, they will see a customizable error message (maximum 250 characters).Response variable
Saves the option the user selected in a memory variable for later use in the flow. How to configure it:- Enable the Save response toggle.
- Enter the variable name (for example,
department).
Value saved with static options
When buttons are defined manually, the payload of the chosen button is saved as plain text. Example with these buttons:| Button | Payload |
|---|---|
| Sales | sales |
| Technical Support | support |
| Billing | billing |
Value saved with dynamic options
When buttons are generated from a source variable, the complete object from the array to which the selected option belongs is saved. Suppose{{$memory.departments}} contains:
Use cases
Route the flow based on the selection (static options)
Route the flow based on the selection (static options)
Connect a Conditional node and create a branch for each payload:
Use data from the selected object (dynamic options)
Use data from the selected object (dynamic options)
With the complete object saved, you can use it directly in messages or subsequent nodes without additional queries:
Personalize the AI Agent response
Personalize the AI Agent response
Pass the selection as context to the AI Agent node:
Single-use button
After the first selection, the buttons are deactivated. You can configure what happens next:- Send text: Displays an informational message
- Redirect to skill: Takes the user to another flow
Button expires
If the user does not select any button within the time configured in your organization:- Send text: Displays an expiration message
- Redirect to skill: Takes the user to another flow