Each menu consists of rows, and each row contains one or more cells. A cell represents a visual and interactive unit on the UI. The behavior, appearance, and data flow of a cell are defined by its
form
, and based on that form, certain fields within the cell become applicable or relevant. Cell Behavior
Each cell can include:
- A visual component (label, icon, image, etc.)
- An input or output form (e.g., text field, radio button, toggle)
- An optional
next
action, which defines what happens after the cell is triggered โ like opening a new menu, tab, product, or URL.
This hierarchical structure allows for modular and flexible UI composition, where user interaction can dynamically change the interface flow into a diagram or tied to the menu JSON schema!
Field | Type | Required | Access | Description |
cell_id | String | Conditional | ๐ต Read-only | Unique identifier for the cell. Used to reference and manage the cell independently. cell ID has priority over callback if provided. |
callback | String | Yes | ๐ต Read-only | User-defined identifier triggered when the cell is interacted with. Must be provided when creating a cell. However, the form itself becomes read-only once the cell is saved, meaning it cannot be changed in future updates. |
cell_order | Number | Yes | ๐ต Read-only | Defines the horizontal order of the cell within the row. Must be provided when creating a cell. However, the form itself becomes read-only once the cell is saved, meaning it cannot be changed in future updates. |
form | String | Conditional | ๐ต Read-only | Type of cell UI (e.g., dropdown , radio , button ). Must be provided when creating or updating a cell. However, the form itself becomes read-only once the cell is saved, meaning it cannot be changed in future updates. |
style | String | Conditional | ๐ต Read-only | Style of cell UI. Must be provided when creating a cell. However, the form itself becomes read-only once the cell is saved, meaning it cannot be changed in future updates. |
version | String | Optional | ๐ต Read-only | System-generated random version after each cell update. |
headline | String | Optional | ๐ก Conditionally Writable | Headline of the cell, if supported by the form. |
subhead | String | Optional | ๐ก Conditionally Writable | Subhead or secondary heading. |
label | String | Optional | ๐ก Conditionally Writable | Field label used for forms or inputs. |
sublabel | String | Optional | ๐ก Conditionally Writable | Field sublabel used for forms or inputs |
body | String | Optional | ๐ก Conditionally Writable | Content body text within the cell. |
helper | String | Optional | ๐ก Conditionally Writable | Helper or supporting text to guide users. Usually displayed beneath the cell for additional context or instructions. |
error | String | Optional | ๐ก Conditionally Writable | Error message shown when validation fails. Usually displayed beneath the cell, replacing the helper/supporting text. |
prefix | String | Optional | ๐ก Conditionally Writable | Text displayed at the beginning of the input field. |
suffix | String | Optional | ๐ก Conditionally Writable | Text displayed at the end of the input field. |
placeholder | String | Optional | ๐ก Conditionally Writable | Placeholder text for input fields. |
bg_image | String | Optional | ๐ก Conditionally Writable | Background image (light mode). |
bg_image_dark | String | Optional | ๐ก Conditionally Writable | Background image (dark mode). |
image | String | Optional | ๐ก Conditionally Writable | Image displayed in the cell (light mode). |
image_dark | String | Optional | ๐ก Conditionally Writable | Image for dark mode. |
icon | String | Optional | ๐ก Conditionally Writable | Leading icon in the cell. |
trailing_icon | String | Optional | ๐ก Conditionally Writable | Icon shown at the end of the cell. |
trailing_text | String | Optional | ๐ก Conditionally Writable | Text shown after cell content. |
second_trailing_icon | String | Optional | ๐ก Conditionally Writable | Optional secondary trailing icon. |
max | Number | Optional | ๐ก Conditionally Writable | Maximum allowed value for inputs. |
min | Number | Optional | ๐ก Conditionally Writable | Minimum allowed value for inputs. |
step | Number | Optional | ๐ก Conditionally Writable | Step value for numeric or range inputs. |
divider | Boolean | Yes | ๐ก Conditionally Writable | If true, a divider line will be displayed beneath the cell. Defaults to false. Applicable only to forms that support visual separation. |
font_size | Optional | ๐ก Conditionally Writable | Font size settings for text elements. | |
text_align | Optional | ๐ก Conditionally Writable | Alignment settings for content inside the cell. | |
submit | String | Conditional | ๐ต Read-only | Target API scope to determine which values are submitted when the cell is triggered. Must be provided when creating a cell. Cannot be changed after the cell is saved.
โข cell โ sends only the current cellโs value.
โข menu โ sends values of all cells in the current menu.
โข all โ sends all values filled or triggered across all menus. |
next | Optional | ๐ต Read-only | Defines next action: open component/menu, or execute function. Must be provided when creating a cell. Cannot be changed after the cell is saved. | |
value_type | String | Optional | ๐ก Conditionally Writable | Expected type of the value (e.g., string , number ). Must be provided when creating a cell. Cannot be changed after the cell is saved. |
option | Optional | ๐ก Conditionally Writable | Available selectable input options for the cell (e.g., dropdown, multi-choice, radio). Required only for forms that involve user selection from predefined values. | |
value | Optional | ๐ก Conditionally Writable | Current or default values depending on the form (e.g., dropdown, multi-choice). | |
cache | Boolean | Yes | ๐ก Conditionally Writable | If true , persists cell state until explicitly updated. Defaults to false . |
cell_query | Optional | ๐ก Conditionally Writable | The app's query field accepts one of two values: Location : to ask the user to share a location or map point.Contact : to ask the user to share their contact number. | |
nav_type | String | Optional | ๐ก Conditionally Writable | null (default) shows the navigation button for Channel, Group, or Contact. Use 'admin' to show the admin navigation button in the chat setting. |