> ## Documentation Index
> Fetch the complete documentation index at: https://docs.smartinterview.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Add skip logic and conditional questions

> Show or hide survey questions based on URL parameters. Configure display conditions per question to create adaptive respondent paths in your survey.

Display conditions (also called skip logic) let you show a question only when specific criteria are met. Instead of every respondent seeing every question, you define rules — such as "show this question only when the URL parameter `segment` equals `premium`" — so each respondent follows a path relevant to them. Conditions evaluate at the time a respondent reaches that point in the survey.

## How display conditions work

Each question can have one or more display conditions attached to it. A condition compares a named variable against a value using a comparison operator. When all conditions on a question evaluate to true, the question is shown. When any condition fails, the question is skipped and the respondent moves directly to the next question that does match.

Variables in conditions are **URL parameters** passed in when the survey link is opened. For example, a survey link like `https://app.smartinterview.io/en/survey-id/?segment=premium&region=fr` exposes `segment` and `region` as variables you can reference in conditions.

<Note>
  Display conditions evaluate against URL parameters at survey load time. They are not evaluated against answers given during the survey itself — use conditions to route respondents based on how they arrived at the survey (via panel parameters, CRM fields, or pre-filled data), not based on their in-survey answers.
</Note>

## Declaring variables

Before you can use a variable in a condition, declare it in **Settings → URL Parameters** (or the **Variables** section of the survey configuration). Declaring a variable lets you choose its type (text, number, or boolean), which determines which comparison operators are available when you build conditions.

Undeclared variables still work — you can type a variable name directly in the condition builder — but declared variables let you pick from a dropdown and restrict operators to ones that make sense for the type.

## Adding a display condition to a question

<Steps>
  <Step title="Select a question">
    Click the question you want to conditionally display in the left panel of the builder.
  </Step>

  <Step title="Open the Conditions panel">
    Below the questions list, click the **Conditions** toggle. The conditions panel expands to show any existing conditions for the selected question.
  </Step>

  <Step title="Add a condition">
    Click **Add condition**. A new condition row appears with three fields: variable, operator, and value.
  </Step>

  <Step title="Configure the condition">
    * **Variable:** Select a declared variable from the dropdown, or type a URL parameter name directly.
    * **Operator:** Choose a comparison operator (see the table below).
    * **Value:** Enter the value to compare against.
  </Step>

  <Step title="Save">
    The condition saves automatically when you change any field. The question now only displays when the condition is met.
  </Step>
</Steps>

## Supported operators

| Operator              | Symbol | Variable types        | Meaning                                        |
| --------------------- | ------ | --------------------- | ---------------------------------------------- |
| Equals                | `=`    | Text, number, boolean | Variable matches the value exactly             |
| Not equals            | `≠`    | Text, number, boolean | Variable does not match the value              |
| Greater than          | `>`    | Number                | Variable is greater than the value             |
| Less than             | `<`    | Number                | Variable is less than the value                |
| Greater than or equal | `≥`    | Number                | Variable is greater than or equal to the value |
| Less than or equal    | `≤`    | Number                | Variable is less than or equal to the value    |

<Note>
  Text and boolean variables only support `=` and `≠`. Number variables support all six operators.
</Note>

## Multiple conditions

When you add more than one condition to a question, **all conditions must be true** for the question to display (AND logic). There is no OR option at the question level — if you need OR behaviour, duplicate the question and give each copy a different condition.

## Example: segment-based routing

Suppose you have a survey distributed to two respondent groups. Your panel platform appends `?segment=premium` or `?segment=standard` to the survey URL for each respondent. You want Q3 to appear only for premium respondents.

1. Declare a variable named `segment` of type **text** in survey settings.
2. Select **Q3** in the left panel.
3. Open **Conditions** and click **Add condition**.
4. Set variable to `segment`, operator to `=`, value to `premium`.

Only respondents whose link includes `?segment=premium` will see Q3. Respondents with `?segment=standard` (or no `segment` parameter) skip directly to Q4.

<Tip>
  Test your conditions before publishing. Use **Test** mode in the builder header and open the survey URL with different parameter values appended to verify each path.
</Tip>

## Tips for building reliable conditions

* **Declare all variables before building conditions.** Declared variables give you type-aware operators and help you avoid typos in parameter names.
* **Check parameter names match exactly.** Variable names in conditions are case-sensitive and must match the URL parameter key exactly.
* **Use a consistent URL format.** Use standard query string format (`?a=1&b=2`) for reliable parameter passing across all distribution channels.
* **Test every path.** Open the survey URL with each expected parameter combination and use Test mode to confirm the correct questions appear.
