Multiselect Block
The multiselect block lets users pick multiple options from a set. Requires channel mode: "interactive". Set send_on_change: true to fire an input_change webhook on every selection change; otherwise selections are only sent as part of card_state when a button is clicked.
Fields
| Field | Type | Required | Description |
|---|---|---|---|
type |
string | Yes | "multiselect" |
label |
string | No | Display label above the dropdown |
options |
Option[] | Yes | Array of selectable options |
selected_values |
string[] | No | Currently selected option values |
max_selections |
integer | No | Maximum number of selections allowed |
disabled |
boolean | No | Disables the dropdown |
clear_on_submit |
boolean | No | Reset to selected_values when any button in the card is pressed |
send_on_change |
boolean | No | Send an input_change webhook when selections change |
Option Object
| Field | Type | Required | Description |
|---|---|---|---|
value |
string | Yes | Value sent in the webhook payload |
label |
string | Yes | Display text shown in the dropdown |
Examples
Tag Selector
{
"type": "multiselect",
"label": "Tags",
"options": [
{ "value": "urgent", "label": "Urgent" },
{ "value": "billing", "label": "Billing" },
{ "value": "tech", "label": "Technical" },
{ "value": "feature", "label": "Feature Request" },
{ "value": "bug", "label": "Bug" }
]
}
With Pre-selected Values
{
"id": "category-select",
"type": "multiselect",
"label": "Categories",
"selected_values": ["billing", "urgent"],
"options": [
{ "value": "urgent", "label": "Urgent" },
{ "value": "billing", "label": "Billing" },
{ "value": "tech", "label": "Technical" }
]
}
Limited Selections
{
"type": "multiselect",
"label": "Pick up to 3 topics",
"max_selections": 3,
"options": [
{ "value": "sales", "label": "Sales" },
{ "value": "marketing", "label": "Marketing" },
{ "value": "engineering", "label": "Engineering" },
{ "value": "support", "label": "Support" },
{ "value": "hr", "label": "HR" }
]
}
Webhook Payload
Fired only when send_on_change: true. Triggered immediately on every selection change.
{
"type": "input_change",
"card_id": "card-uuid",
"payload": {
"block_type": "multiselect",
"value": ["billing", "urgent"]
}
}
The value is an array of the selected option value strings.
Tip: Selections are always included in the
card_stateof any button click, sosend_on_changeis only needed if you want to react to each selection immediately.
Patching
Update Selected Values
{
"id": "category-select",
"patch": {
"selected_values": ["tech", "feature"]
}
}
Disable After Submission
{
"id": "tag-select",
"patch": {
"disabled": true
}
}