multiple_select renders a list of checkboxes. The user can select any number of options — zero, one, or many. Use it when multiple answers are valid.
Submission value type: string[] (array of selected value strings)
Field properties
| Property | Type | Required | Description |
|---|
id | string | Yes | Unique identifier within the form. Becomes the key in submission data. |
type | "multiple_select" | Yes | Must be multiple_select. |
label | string | LocaleMap | Yes | Label shown above the checkboxes. |
options | Option[] | Yes | The list of choices. See below. |
searchable | boolean | No | Adds a text filter above the checkboxes. Useful for long option lists. |
validators | Validator[] | No | Validation rules applied before the section is submitted. |
visible_when | string | No | JS expression; field is shown when truthy, hidden otherwise. Hidden fields are excluded from submission data. |
Options
Simple format — value and label are the same string:
options:
- JavaScript
- TypeScript
- Python
- Go
Structured format — explicit value stored; label displayed:
options:
- value: js
label: JavaScript
- value: ts
label: TypeScript
- value: py
label: Python
Structured with LocaleMap — translated labels:
options:
- value: js
label:
en: JavaScript
es: JavaScript
- value: ts
label:
en: TypeScript
es: TypeScript
- value: py
label:
en: Python
es: Python
The value is what gets stored in submission.data. The label is what the user sees.
Validators
required
At least one option must be selected.
Default error message: This field is required.
type: min
Minimum number of selections.
validators:
- type: min
value: 2
message: Please select at least 2 skills.
| Property | Type | Required | Description |
|---|
value | number | Yes | Minimum number of options that must be selected. |
message | string | LocaleMap | No | Error shown when too few options are selected. |
Default error message: Must select at least {value} options.
type: max
Maximum number of selections.
validators:
- type: max
value: 3
message: Please select no more than 3 skills.
| Property | Type | Required | Description |
|---|
value | number | Yes | Maximum number of options that can be selected. |
message | string | LocaleMap | No | Error shown when too many options are selected. |
Default error message: Must select no more than {value} options.
Validators run in the browser before each section is submitted. They enforce UX constraints, not security guarantees. If you need server-side validation, implement it in your webhook receiver.
Full example
A skills selection field with search enabled, requiring between 1 and 3 selections:
version: 1
title: Skills assessment
sections:
- id: main
title: Tell us about your skills
fields:
- id: skills
type: multiple_select
label: Which of these do you work with?
searchable: true
options:
- value: js
label: JavaScript
- value: ts
label: TypeScript
- value: py
label: Python
- value: go
label: Go
- value: rust
label: Rust
- value: java
label: Java
- value: cs
label: C#
- value: cpp
label: C++
validators:
- required
- type: min
value: 1
message: Please select at least one skill.
- type: max
value: 3
message: Please select no more than 3 skills.
next: done