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_state of any button click, so send_on_change is 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" }
    ]
  }
}