Skip to main content
Image
Dynamically renders content from an API response stored in a variable. Use Dynamic data when the content or options are not known in advance and need to be fetched at runtime, such as available appointment slots, order history, branch locations, live inventory, or product lists.
Available on the Premium plan and above.
Dynamic data can generate: Using this block, you can dynamically display list items for,
  • Button
  • Carousel
  • Option (WhatsApp and SMS)
  • List (WhatsApp)
  • Reply button (WhatsApp)
  • File
Use Options or List when you define the choices yourself. Use HTTP request when you need to retrieve API data without rendering it as dynamic content.
Dynamic data renders the generated content according to the capabilities of the channel. On supported channels, users see the configured interactive component.

Using the Dynamic data block

1

Fetch the data

Use the HTTP request action block to call your API.Configure the request with the endpoint, authentication, headers, query parameters, or request body required by your API.
2

Store the response

Store the complete API response in a variable.For example:
Make sure you store the entire payload response in the variable. Do not append an object path after the response when mapping it to the variable.
3

Configure Dynamic data

Add the Dynamic data action block after the HTTP request block and connect it to the next step.Select the response variable in Data variable, then select how you want to render the response using Render as.

HTTP request configuration

Before configuring Dynamic data, configure the HTTP request that retrieves the data. For example:
For a POST request:
Dynamic data does not make the API request itself. The HTTP request block retrieves the data, and Dynamic data uses the response stored in the selected variable.

Configuration

Data variable

Select the variable containing the complete API response. For example:

Render as

Choose the type of content that Dynamic data should generate.

Bot asks this question

Enter the question or message displayed before the dynamic content. For example:
You can reference variables in the question by typing #.

Response mapping

Map the fields from the API response to the fields required by the selected render type. For example, for a Button:
  • Button title — the text displayed to the user.
  • Button payload — the value associated with the selected button.
For example:

Array path

The array path identifies where the list of items is located in the response. For example:
The array path is:
The fields inside each item can then be mapped using:
Use [*] when you want to retrieve a field from every item in an array.

Empty response handling

Handle cases where the API request succeeds but does not return any items. For example:
Use a clear message or connect the empty-response path to an alternative flow.

Save response

Select the variable where the user’s selected response should be stored.

Save button payload response

Select a variable to save the button payload when the user selects an item. The button payload is a value you define for each item. It can be different from the text displayed on the button and can be used later in a Condition block to determine which path the user should follow. For example:
You can use the payload later when an internal ID or another value is required by a subsequent API request.

Configuring list items

After selecting the render type, map the object paths from the API response to the fields required by that render type. For example, if the payload response stored in the variable is:
To render product_id as a button, use:
The [*] indicates that the field should be retrieved from every item in the array. The resulting buttons are:
If the response is wrapped inside a result object:
the object path becomes:

Nested JSON

Nested JSON is one of the most common areas where object-path mapping can become confusing. When the field you need is nested inside multiple objects, include every level of the response in the object path. For example:
The list of items is inside:
Use this as the array path.
When mapping nested JSON, start from the root of the stored response and follow each level until you reach the field you need. Add [*] at the array level.

Output paths

Use the output paths to handle the different results of the Dynamic data request. Connect each path to the appropriate next block in your flow.
Add an alternative message or flow for empty responses and failed requests so the conversation does not stop unexpectedly.

Variables set

Dynamic data can save the user’s selected response and, where applicable, the selected button payload. For example:
Save the selected response as:
and the payload separately as:
These variables can be used in subsequent blocks, conditions, or API requests.

Common mistakes

Make sure the HTTP request stores the complete API response in the Data variable.If only part of the response is stored, Dynamic data may not be able to access the fields you need.
Include every level of the JSON structure.
Use [*] when mapping a field from every item in an array.
If the stored response is:
the correct path is:
not:
Use result[*].product_id only when the response actually contains a result array.
If the response contains:
do not use:
Include every level between the array and the field you want.

Advanced settings

Enable this option to let users search through the dynamically generated items.Use it when the API returns a large number of items and users need an easier way to find a specific item.
Enable this option to allow users to select multiple items from the dynamically generated options.Use it when the user needs to choose more than one item.
Enable this option to allow users to enter a text response instead of selecting one of the dynamically generated options.
Choose how dynamically generated buttons are arranged:
  • Horizontal — displays buttons next to each other.
  • Vertical — displays buttons one below another.
Choose the order in which dynamically generated buttons are displayed:
  • A–Z — sorts buttons alphabetically from A to Z.
  • Z–A — sorts buttons alphabetically from Z to A.
  • Random — displays buttons in a random order.
  • As defined — keeps the same order as the items returned by the API.
Select As defined when the order returned by your API is important and should be preserved.
Enable this option to display an informational message with additional context for the dynamically generated content.Use it when users need additional instructions or context before making a selection.
Last modified on November 6, 2026