On WhatsApp, lists are displayed as a native dropdown menu. It is the best option when you have between 4 and 10 options.
General configuration
- Header: Message title (maximum 60 characters)
- Content: Main message (maximum 1,024 characters, required)
- Button name: Text on the button that expands the list (maximum 20 characters)
Options
Each option has:- Option name: Text visible in the list (maximum 24 characters)
- Description: Additional text below the name (optional, maximum 72 characters)
Dynamic options
If the options come from variable data, enable dynamic mode:- Source variable:
{{$memory.options}} - Label template:
{{item.name}} - Description template:
{{item.detail}}
Variables in messages
Advanced configuration
Mandatory selection
When enabled, the user must choose an option from the list 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,
inquiry_reason).
Value saved with static options
When options are defined manually, the name of the selected option is saved as plain text. Example with these options:| Option |
|---|
| Sales |
| Technical Support |
| Billing |
| Returns |
Value saved with dynamic options
When options are generated from a source variable, the complete object from the array to which the selected option belongs is saved. Suppose{{$memory.services}} 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 option:
Use data from the selected object (dynamic options)
Use data from the selected object (dynamic options)
With the complete object saved, you can inform the user with the exact data of the chosen service:
Personalize the AI Agent response
Personalize the AI Agent response
Pass the object to the AI Agent node so it adapts its response:
List expires
If the user does not select any option within the configured time:- Send text: Displays an expiration message
- Redirect to skill: Takes the user to another flow
Example
Configuration:- Header:
How can I help you? - Content:
Select an option from the list - Button name:
View options - Options: Sales, Technical Support, Billing, Returns