Display logic controls whether a specific question or section appears for a given respondent. If the condition is not met, the respondent simply never sees that question or section.
For how display logic fits with skip logic, randomization, and the Flow tab, see the Logic, Flow & Conditions hub.
How to add display logic to a question#
- Select the question on the canvas.
- In the properties panel, look for Display logic.
- Open the condition builder and set your rule — for example, "Show this question only if Q1 = Yes".
- Save the condition. A summary label will appear on the question card so you can see at a glance that logic is active.
If the condition is not met, the respondent simply never sees that question.
Hiding a question can also skip a Section Loop that loops over that question's choices later in the survey — when the respondent never saw the source question, there is nothing active to loop over, so the looped section is skipped. Loops set to All Choices, All Rows, or All Columns are never skipped this way.
How to add display logic to a section#
In the Flow tab, each section appears as a block. You can attach display logic to an entire section so that all questions inside it are skipped when the condition is false. This is useful for paths like "Show this section only to parents" or "Skip for non-customers".
See Flow editor for how sections and logic blocks appear on the visual map.
The condition builder#
Whenever you set up display logic, skip logic, or quota rules, you'll use the same condition builder dialog. Here's how it works:
- A condition is a single rule, like "Q3 = Very satisfied".
- A condition group bundles multiple conditions together with ALL (every condition must be true) or ANY (at least one must be true).
- You can nest groups inside each other for complex rules — for example, "Show if (Country = US AND Age = 18–24) OR (Country = UK AND Age = 25–34)".
- Each group can have a name to help you remember what it does.
When you close the dialog, a compact summary appears on the question or flow element so you can see what's configured without reopening it. Each answer in the summary shows its recode value in front of the label, for example "Q2 Gender Is Equal to 1) Male", so you can match the rule to your coded data at a glance. If you haven't set recode values, the number is the answer's position in the list.
Condition sources#
Every condition row starts by choosing what to look at. The same list is available on question display logic and on section display logic in the Flow tab:
| Source | What it checks |
|---|---|
| Question | An answer the respondent already gave |
| Global variable | The current value of a survey variable |
| Boolean | A plain True / False |
| Survey metadata | Session details such as language, panel, duration, or date |
| Loop number | Which pass of a Section Loop you are on (only inside a looped section) |
| Mode | Whether the survey is being taken in preview or through a published link |
Mode — preview vs published link#
Mode is the last entry in the source list. Pick it and the row becomes simply "Mode Is Preview" or "Mode Is Published Link" — there is nothing else to fill in.
- Preview means the preview you open from the build page.
- Published Link means a real, live distribution that respondents are taking.
Use it to keep test scaffolding out of live fielding — for example, put a Display Global Variables block behind "Mode Is Preview" so you can watch your variables while building, and real respondents never see it.
Note: A question or section with no Mode condition shows in both places, exactly as it always has. Adding the feature changes nothing about your existing surveys.
Operators by question type#
The condition builder automatically shows only the operators that make sense for the selected question type. You don't need to remember which operators apply — just select a question, and the dropdown updates.
Single choice#
| Operator | What it checks | Value input |
|---|---|---|
| Selected | Answer is exactly this option | Searchable answer dropdown |
| Not selected | Answer is not this option | Searchable answer dropdown |
| Is any of | Answer is any of these options | Multi-select checkbox dropdown |
| Is none of | Answer is none of these options | Multi-select checkbox dropdown |
| Not answered | Question was not answered | None |
| Answered | Question was answered | None |
Example: "Show Q3 only if Q1 Selected 'Yes'" or "Show Q3 if Q1 Is any of [Red, Blue, Green]".
Multiple choice#
Since respondents can select multiple answers, the operators reflect set logic:
| Operator | What it checks | Value input |
|---|---|---|
| Includes any of | At least one of these options was selected | Multi-select checkbox dropdown |
| Includes all of | ALL of these options were selected | Multi-select checkbox dropdown |
| Does not include | NONE of these options were selected | Multi-select checkbox dropdown |
| Not answered | Nothing was selected | None |
| Answered | At least one option was selected | None |
Example: "Show Q5 if Q2 Includes any of [Apple, Samsung]" — true if the respondent selected Apple or Samsung (or both).
Text (short text, long text, email, phone, zip code)#
| Operator | What it checks | Value input |
|---|---|---|
| Equals | Exact match | Text input |
| Not equals | Does not match | Text input |
| Contains | Answer includes this substring | Text input |
| Does not contain | Answer does not include this substring | Text input |
| Starts with | Answer begins with this text | Text input |
| Ends with | Answer ends with this text | Text input |
| Is one of | Answer matches any of these values | Text input (comma-separated) |
| Is not one of | Answer matches none of these values | Text input (comma-separated) |
| Is empty | Nothing was entered | None |
| Is not empty | Something was entered | None |
Example: "Skip to Section 3 if email ends with '@company.com'" or "Show Q4 if zip code starts with '90'".
Numeric (rating, NPS, slider)#
| Operator | What it checks | Value input |
|---|---|---|
| Equals | Exact numeric match | Number input |
| Not equals | Not this number | Number input |
| Greater than | Above this value | Number input |
| Less than | Below this value | Number input |
| Between | Within a range (inclusive) | Min and Max inputs |
| Is one of | Matches any of these numbers | Text input (comma-separated) |
| Is not one of | Matches none of these numbers | Text input (comma-separated) |
| Is empty | Not answered | None |
| Is not empty | Answered | None |
Example: "Show Q6 if NPS score is between 0 and 6" (detractors) or "Skip to thank-you if rating is greater than 8".
Date / Time / Date & Time#
| Operator | What it checks | Value input |
|---|---|---|
| Equals | Exact date/time match | Date/time input |
| Not equals | Not this date/time | Date/time input |
| After | Later than this date/time | Date/time input |
| Before | Earlier than this date/time | Date/time input |
| Between | Within a date/time range | Min and Max inputs |
| Is empty | Not answered | None |
| Is not empty | Answered | None |
Example: "Show section if appointment date is after 2025-01-01" or "Skip if date is between 2025-06-01 and 2025-06-30".
Matrix#
Matrix questions store a response per row (which column was selected). The operators work across rows:
| Operator | What it checks | Value input |
|---|---|---|
| Any row equals | At least one row has this column selected | Column dropdown |
| All rows equal | Every row has this column selected | Column dropdown |
| No rows equal | No row has this column selected | Column dropdown |
| Any row in set | At least one row's answer is one of these columns | Multi-select checkbox dropdown (columns) |
| All rows in set | Every row's answer is one of these columns | Multi-select checkbox dropdown (columns) |
| Is one of | Answer matches one of these columns | Multi-select checkbox dropdown (columns) |
| Is not one of | Answer matches none of these columns | Multi-select checkbox dropdown (columns) |
| Is empty | No rows answered | None |
| Is not empty | At least one row answered | None |
Example: "Show Q5 only if any row in the satisfaction matrix equals 'Very Dissatisfied'" or "Skip section if all rows in set [Good, Excellent]".
Ranking#
Ranking questions store an ordered list of items. The operators check positions:
| Operator | What it checks | Value input |
|---|---|---|
| Item ranked at | A specific item is at this exact position | Item dropdown + Position number |
| Item not ranked at | A specific item is NOT at this position | Item dropdown + Position number |
| Item in top N | A specific item is in the top N positions | Item dropdown + N number |
| Item in bottom N | A specific item is in the bottom N positions | Item dropdown + N number |
| Items ranked count = | The total number of ranked items equals this | Count number |
| Is empty | Nothing was ranked | None |
| Is not empty | At least one item was ranked | None |
Example: "Show Q8 if 'Price' is ranked in position 1" or "Show follow-up if 'Quality' is in top 3".
Items that the respondent did not rank are treated as not matching any position.
File upload#
| Operator | What it checks |
|---|---|
| Is empty | No file was uploaded |
| Is not empty | A file was uploaded |
File upload questions only support checking whether a file was provided or not.
Form fields#
| Operator | What it checks | Value input |
|---|---|---|
| Equals | Exact match | Text input |
| Not equals | Does not match | Text input |
| Contains | Includes this substring | Text input |
| Does not contain | Does not include this | Text input |
| Is empty | Not filled in | None |
| Is not empty | Filled in | None |
How the value input works#
The condition builder automatically picks the right value input based on the operator and question type:
- Answer dropdown — For equality operators (Equals / Not equals) on choice questions, you pick from the question's answer options.
- Multi-select dropdown — For set operators (Is any of, Includes any of, etc.) on questions with predefined options, a dropdown with checkboxes appears. Check/uncheck options to build your selection. The trigger shows your selected values.
- Column dropdown — For matrix equality operators, you pick from the matrix question's columns.
- Item + Position — For ranking operators, you pick an item from the ranking question and enter a position number.
- Min / Max range — For the Between operator, two number inputs appear with a "to" separator.
- Text input — For text-based operators or when no predefined options exist.
Tip: When you switch the source question to a different type, the operator automatically resets if the current operator isn't valid for the new question type. For example, switching from a text question (which supports "Contains") to a rating question (which doesn't) will reset the operator to "Equals".
Warning: Display logic hides content from the respondent — it does not change where they go next. Use Skip logic when you need to jump to another section or end the survey.
Related guides#
Was this page helpful?