Skip to main content

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:

typenamelabel
textfull_nameWhat is your name?
select_one yes_noconsentDo you consent to continue?
integerageHow 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_namenamelabel
yes_noyesYes
yes_nonoNo

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 typeUse it for
textShort free-text answers
integer / decimalNumeric input
select_one <list>Pick exactly one option
select_multiple <list>Pick several options
dateDate picker
noteDisplay-only text (no input)
begin_group / end_groupGroup related questions onto a screen

A minimal example

A two-question consent flow:

survey

typenamelabel
select_one yes_noconsentDo you consent to take part?
textfull_nameWhat is your full name?

choices

list_namenamelabel
yes_noyesYes
yes_nonoNo

Bringing the XLSForm into Hop

  1. Author your flow as an .xlsx XLSForm using the structure above.
  2. In Hop, open the Flow Builder and import the XLSForm.
  3. 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.