Authoring flows with XLSForm
XLSForm is a widely used standard for authoring forms in a spreadsheet. If you already build forms with tools like ODK, KoboToolbox, or Ona, you can use that same skill set to author flows for Hop — then bring the spreadsheet into the Flow Builder.
This page covers the essentials. For the full XLSForm reference, see xlsform.org →.
The spreadsheet at a glance
An XLSForm is a single spreadsheet with (at least) two sheets:
survey — the questions
Each row is a question (or a structural element like a group). The three core columns are:
type | name | label |
|---|---|---|
text | full_name | What is your name? |
select_one yes_no | consent | Do you consent to continue? |
integer | age | How old are you? |
type— what kind of input it is (see common types below).name— the field name used in the response data (no spaces).label— the text the person actually sees.
choices — the options for select questions
list_name | name | label |
|---|---|---|
yes_no | yes | Yes |
yes_no | no | No |
The list_name ties a set of options back to a select_one / select_multiple
question in the survey sheet.
settings — optional metadata
A settings sheet can define the form title and other top-level options.
Common question types
| XLSForm type | Use it for |
|---|---|
text | Short free-text answers |
integer / decimal | Numeric input |
select_one <list> | Pick exactly one option |
select_multiple <list> | Pick several options |
date | Date picker |
note | Display-only text (no input) |
begin_group / end_group | Group related questions onto a screen |
A minimal example
A two-question consent flow:
survey
| type | name | label |
|---|---|---|
| select_one yes_no | consent | Do you consent to take part? |
| text | full_name | What is your full name? |
choices
| list_name | name | label |
|---|---|---|
| yes_no | yes | Yes |
| yes_no | no | No |
Bringing the XLSForm into Hop
- Author your flow as an
.xlsxXLSForm using the structure above. - In Hop, open the Flow Builder and import the XLSForm.
- Hop converts the spreadsheet into flow screens and components, which you can then refine visually before publishing.
:::note Keep the source file
When you import an XLSForm, Hop keeps the original .xlsx with the flow so you
can download it, edit it, and re-upload a revised version.
:::
:::tip Validate before you import
A clean XLSForm imports cleanly. If a column name is misspelled or a
list_name doesn't match, the flow won't build as expected — double-check your
type, name, and choices columns first.
:::
👉 Next: head to Using Hop to publish your flow and put it in front of people.