single_select renders a list of radio buttons. The user picks exactly one option. All options are visible at the same time — best for 2–6 choices where you want the options to be immediately scannable.
For longer option lists or when space is limited, use dropdown instead.
Submission value type: string (the selected value)
Field properties
| Property | Type | Required | Description |
|---|
id | string | Yes | Unique identifier within the form. Becomes the key in submission data. |
type | "single_select" | Yes | Must be single_select. |
label | string | LocaleMap | Yes | Label shown above the options. |
options | Option[] | Yes | The list of choices. See below. |
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. |
single_select does not support searchable. Use dropdown if you need a searchable list.
Options
Simple format — value and label are the same string:
options:
- Software Engineer
- Product Manager
- Designer
Structured format — explicit value stored; label displayed:
options:
- value: eng
label: Software Engineer
- value: pm
label: Product Manager
- value: design
label: Designer
Structured with LocaleMap — translated labels:
options:
- value: eng
label:
en: Software Engineer
es: Ingeniero de Software
- value: pm
label:
en: Product Manager
es: Gerente de Producto
- value: design
label:
en: Designer
es: Diseñador
The value is what gets stored in submission.data. The label is what the user sees.
Validators
required
An option must be selected.
Default error message: This field is required.
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
The role field from the job application form with fully localized options:
version: 1
title:
en: Join the team
es: Únete al equipo
sections:
- id: main
title:
en: Apply to work with us
es: Solicita trabajar con nosotros
fields:
- id: full_name
type: short_text
label:
en: Full name
es: Nombre completo
- id: role
type: single_select
label:
en: Role you're applying for
es: Puesto al que aplicas
options:
- value: eng
label:
en: Software Engineer
es: Ingeniero de Software
- value: pm
label:
en: Product Manager
es: Gerente de Producto
- value: design
label:
en: Designer
es: Diseñador
validators:
- required
- id: email
type: email
label:
en: Email address
es: Correo electrónico
next: done