Skip To Content

Cascading and external selects

Cascading selects

Cascading selects are used to restrict a list of available answers based on the answer to a previous question. This will make your surveys easier to use, keeping choice lists small, by only presenting relevant options to users.

Follow these steps to use cascading selects in your survey:

  1. Enter the values for the choice lists on the choices tab.
  2. Add one or more columns for the cascading select criteria (for example, country, state, city, suburb).
  3. Enter the relevant value for each choice in the extra columns.
  4. Repeat for each choice list in the hierarchy.

Once the choice lists have been completed, you'll need to create a choice_filter column on the survey tab. This column will hold the expression used to restrict your choice lists.

To see cascading selects in action, download this sample.

Cascading selects can only be used with select_one questions. Choice filters cannot be applied to select_multiple questions. In addition, the values used in the name field of the choices sheet must be text, not numeric.


When reviewing the results of a survey with a question that uses a cascading select, only the name of the choice that is submitted will be displayed. This is different from the behavior of select_one questions without a choice filter, where the label of the choice is displayed instead.

Use the jr:choice-name function in another question to return and store the label associated with the choice from a select_one question. Conceptually, this can be represented by jr:choice-name(string value, 'question name').

In jr:choice-name(${city_choice}, '${city_choice}'), the first parameter represents the selected value, and the second is the name of the question. The name of your select_one question must be defined inside quotes.

The jr:choice-name function can be used in any string question. When using a hidden question, be sure to also define its bind::esri:fieldType and bind::esri:fieldAlias.

See the sample survey for cascading selects linked above for an example implementation.

External selects

The choice lists associated with cascading selects can become large and impact the performance of your forms. Survey123 has an option to save these lists in an external file and load them into the survey on demand.

To implement this option, create a tab on the spreadsheet for your survey named external_choices. This new tab should contain the same column headings as the choices tab. When the survey is published, values from the external_choices tab will be saved in a file called itemsets.csv in the media folder of your survey project, rather than as part of the form item. To reference the choice lists on the external_choices tab, use select_one_external to prefix the list name.


External selects are designed to work with choice lists associated with a cascading select only. Only choices with an applied choice filter will be added to the itemsets.csv file.