You are currently viewing 5 Examples of How to Use Skip Logic and Choice Filters to Get Better Survey Responses

Tailor and fine-tune your research with advanced skip logic, choice lists, and choice filters in SurveyCTO.

What is skip logic?

Skip logic, also known as “conditional branching” or “branch logic”, is a feature that allows you to change the question a respondent sees based on how they answer the previous or any other prior questions. 

Essentially, skip logic is a way to create a customized journey through your survey. 

For example, you might ask your respondent if they’re employed. If they answer “yes”, you could ask them what their job title is. If they answer “no”, you can bypass this question altogether and move the respondent onto the next question.

Why use skip logic in your surveys?

Skip logic is useful because it helps you create a more engaging survey, by asking only questions that are relevant to each respondent.

Asking respondents questions that don’t apply to them often elicits a random answer, which can skew your data and, in turn, your insights. Ask the right questions to the right person and you’ll get more accurate answers.

Since skip logic filters out some questions, your survey will also be shorter for some respondents. This means, you’ll save your respondents time — and they’re more likely to complete your survey. Win, win for both sides. In enumerator-facilitated surveys, this saves enumerators from the hassle of manually figuring out which question to ask next.

5 examples of how to use skip logic and choice filters in SurveyCTO

In SurveyCTO, skip logic is known as relevance. Within our “skip logic” function, we’ve implemented what are known as choice lists and choice filters, which you can use to further personalize your surveys.

What are choice lists?
Choice lists are pre-populated response options. They either contain and require single or multiple responses, and the response selected in the choice list can determine the subsequent questions your respondent sees. 

What are choice filters?
Once you’ve mapped out your choice lists for each of your questions, you can then add choice filters. Choice filters allow you to further filter the reponses your respondent sees based on other factors, like time of year.

For example, in this scenario below, we ask the question: What crops will you grow next season? With choice filters, we’re able to change the choice list of crops presented to the respondent depending on what time of year it is.

An animation of using choice filters inside SurveyCTO's online form builder to change the list of crops depending on what season it is.
Creating a select_multiple field with choice filtering in the online form designer

To do this, you’ll need to use the choice filter expression: “filter = ${season}”

So, if the next season is summer, you can create a choice list of summer crops by using “filter = ${summer}”. If the next season is winter, then you’ll need to use “filter = ${winter}”

Now that you know the difference between skip logic, choice lists, and choice filters, let’s jump into some examples of skip logic with choice filters that you can start applying to your SurveyCTO forms:

1. Use cascading selects to personalize and shorten choice lists

Cascading selects are used to personalize the list of answers a respondent sees based on their answer to the previous question. 

The most common application of cascading selects is location selection. By filtering response options (or choice lists) based on location selection, respondents will only see a list of options that are relevant to their previous response.

For example, responses could be filtered in this order: first by province, then by district, then by village, and then by household

Cascading selects not only make surveys easier to use, they also keep choice lists shorter because respondents only see relevant options.

2. Filter out prior selections in a select_one field

Asking follow-up questions is a great way to drill down to those all-important insights. But navigating follow-up questions can be tricky without the right tools. 

With SurveyCTO, you can focus on responses based on whether they were selected or not selected in a previous question. 

Perhaps you want to tailor your question around the answers that were not selected. Going back to the question about growing crops, you might want to know: 

“Of these remaining crops that you don’t grow at home, do you buy any of them at the market?”. 

To do this, you’ll need to use the functions, “not()” and “selected()” in your choice filter expression or instruction, like in this example below

not(selected(${crops_home},filter))

3. Use repeated fields and indexed-repeat()

Indexed-repeat() is a function you might need to use when you collect the same information about multiple people or items in a repeat group.

For a facility inspection, for example, you might need to ask a certain set of questions about a series of rooms. When deciding whether or not to use this filter, ask yourself this simple question: 

“Do I need to repeat the same set of questions X number of times, where X can be anywhere from 0 to many”.

4. Create versatile choice lists using static choice filters

When choice lists have a lot of overlap, SurveyCTO makes it easy to re-use choice lists and keep them to a minimum through static choice filtering. 

Maybe you need to give the respondent the opportunity to refuse to answer questions in your survey. This means you will need to include “Refuse” as an option in each choice list. 

However, if you ask for consent at the beginning of a survey, it doesn’t make sense to include “Refuse” as well as “Yes” and “No” as response options. To solve this, you would have more than one static choice list:

  • One when you want to present only the response options, “Yes” and “No”
  • And another choice list when you want to present “Yes”, “No” and “Refuse” as possible responses

Alternatively, you could also use just one choice list with all three response options and statically filter out “Refuse” when you only want “Yes” and “No” as response options. 

Statically filtering response options to create different versions of the same choice list can help make the same choice list more versatile. 

As your forms get more complex, with longer choice lists, being able to re-purpose similar choice lists in this way can be useful.

5. Use cross-category cascading selects when there’s overlap

Earlier you learned about cascading select choice filtering. Now, we’re going to dive into cross-category cascading select filtering — you can use this feature when you have categories that overlap. 

To help explain this feature, imagine a scenario where several organizations are working in partnership on the same project.

Org 1’s projectsOrg 2’s projectsOrg 3’s projects
Project AProject AProject B
Project BProject C
Project C
Organizations working on overlapping projects

In the example, above, you can see that:

  • Org 1 and 2 both coordinate on project A
  • Org 1 and 3 both work on projects B and C

Conventional cascading selection would not be able to display Project C if either Org 1 or Org 3 were selected. But SurveyCTO’s choice filtering is flexible enough to solve this.

By using a comma-separated list of values as the choice filter for each project, where each value in the list represents an organization, you can use the item-present() function to search each choice filter for the organization value, and filter out choices.

item-present(',',filter, ${org})

For example, if “org” is 2, the choice list is filtered down to choices with filter values that include “2” in their comma-separated list. 

In the “projects” choice list, this would mean choices 2 and 3 are filtered out, and only choice 1 is visible since it’s the only choice with a filter including “2” in the comma-separated list.

Want to try SurveyCTO’s skip logic filters? 

This article is an overview of what’s possible with the SurveyCTO skip logic filters. For more comprehensive documentation, visit our choice filter support center article.

Try out SurveyCTO. Start a free 14-day trial today.