Select Block
The select block renders a single-select dropdown. Requires channel mode: "interactive". Set send_on_change: true to fire an input_change webhook when the selection changes; otherwise the value is only sent as part of the card_state when a button is clicked.
Fields
| Field | Type | Required | Description |
|---|---|---|---|
type |
string | Yes | "select" |
label |
string | No | Display label above the dropdown |
options |
Option[] | Yes | Array of selectable options |
selected_value |
string | No | Currently selected option value |
placeholder |
string | No | Placeholder text when nothing is selected |
disabled |
boolean | No | Disables the dropdown |
clear_on_submit |
boolean | No | Reset to selected_value when any button in the card is pressed |
send_on_change |
boolean | No | Send an input_change webhook when selection changes |
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
Status Selector
{
"type": "select",
"label": "Set Status",
"options": [
{ "value": "pending", "label": "Pending" },
{ "value": "processing", "label": "Processing" },
{ "value": "completed", "label": "Completed" },
{ "value": "cancelled", "label": "Cancelled" }
]
}
With Default Selection
{
"id": "priority-select",
"type": "select",
"label": "Priority",
"selected_value": "medium",
"options": [
{ "value": "low", "label": "Low" },
{ "value": "medium", "label": "Medium" },
{ "value": "high", "label": "High" },
{ "value": "critical", "label": "Critical" }
]
}
With Placeholder
{
"type": "select",
"label": "Assign To",
"placeholder": "Select a team member...",
"options": [
{ "value": "alice", "label": "Alice" },
{ "value": "bob", "label": "Bob" },
{ "value": "carol", "label": "Carol" }
]
}
Webhook Payload
Fired only when send_on_change: true. Triggered immediately when the user picks an option.
{
"type": "input_change",
"card_id": "card-uuid",
"payload": {
"block_type": "select",
"value": "completed"
}
}
The value is the value field from the selected Option object.
Tip: The selected value is always included in the
card_stateof any button click, sosend_on_changeis only needed if you want to react immediately without waiting for a button press.
Patching
Update Selected Value
{
"id": "priority-select",
"patch": {
"selected_value": "high"
}
}
Replace Options
{
"id": "assignee-select",
"patch": {
"options": [
{ "value": "dave", "label": "Dave" },
{ "value": "eve", "label": "Eve" }
]
}
}