Good branching logic makes surveys shorter, more relevant, and less annoying. Great branching logic does that while remaining maintainable months later when you need to update something.
For a broader overview of branching concepts and best practices, see our Survey Branching Logic Guide. This page focuses on the specific capabilities Lensym provides.
Skip Logic vs Display Logic
These terms get used interchangeably, but they describe different mechanics. Understanding the distinction helps you choose the right approach.
Skip Logic (GO_TO)
Navigation control. When a condition is met, the respondent jumps to a specific question, skipping everything in between. The skipped questions are never shown.
Use when: You have entire sections that don't apply to certain respondents.
Display Logic (SKIP)
Visibility control. Individual questions are marked as skipped, but navigation continues normally. Other questions in between still appear.
Use when: Only specific follow-up questions should be hidden, not entire sections.
Lensym supports both. You choose the action type when creating a condition: GO_TO for skip logic, SKIP for display logic. You can mix them in the same survey.
Anatomy of a Condition
Every condition in Lensym follows the same structure: IF [source question] [comparison] [value] THEN [action]. Let's break down each component.
The Source Question
The source question is what you're evaluating. When you create a condition, you select which previous question's answer should be checked. Only questions that appear before the current node in the survey flow are available as sources. This prevents impossible conditions that reference future answers.
The condition builder shows question titles and types, so you can easily find the right source without memorizing question IDs.
Comparison Operators (14 Types)
Lensym supports 14 comparison operators, covering every practical need:
| Operator | Label | Description |
|---|---|---|
equals | is | Exact match |
not_equals | is not | Not equal |
is_empty | is empty | No response given |
is_not_empty | is not empty | Has any response |
contains | contains | Substring match |
not_contains | does not contain | Substring absent |
starts_with | starts with | Begins with value |
ends_with | ends with | Ends with value |
greater_than | is greater than | Numeric comparison |
less_than | is less than | Numeric comparison |
greater_than_or_equal | is greater than or equal to | Numeric comparison |
less_than_or_equal | is less than or equal to | Numeric comparison |
in | is one of | Value in list |
not_in | is not one of | Value not in list |
The available operators adapt to the source question type. Numeric questions show numeric comparisons; text questions show string operations; choice questions emphasize equals/not equals.
Target Value
The value you're comparing against. For multiple choice questions, this is typically one of the answer options. For numeric questions, it's a number. For text questions, it's a string.
Some operators don't require a target value (is_empty, is_not_empty). The interface hides the value field when it's not needed.
Logical Operators
When you need multiple conditions, logical operators define how they combine. This is where Lensym diverges from typical survey tools.
Basic: AND, OR
All conditions must be true
Proceeds only when every condition in the group evaluates to true. Use when you need multiple criteria satisfied simultaneously.
At least one condition must be true
Proceeds when any condition in the group is true. Use when multiple paths should lead to the same outcome.
Advanced: XOR, NAND, NOR, IMPLIES
These operators are hidden by default but available when you toggle "Advanced Mode." They're rarely needed, but when you need them, nothing else will do.
| Operator | Symbol | When it's true |
|---|---|---|
| XOR (Exactly One) | ⊕ | Exactly one condition is true, not multiple |
| NAND (Not All) | ↑ | At least one condition is false |
| NOR (None) | ↓ | All conditions are false |
| IMPLIES (If-Then) | → | If first is true, all others must be true |
XOR is useful for mutually exclusive paths. NAND catches exceptions. NOR handles "none of the above" scenarios. IMPLIES creates dependencies between conditions.
Action Types: GO_TO vs SKIP
When a condition evaluates to true, what happens? You define the action:
Immediately navigate to the target question, skipping everything in between. The respondent's next screen is the target question.
The specified questions won't appear, but navigation continues normally. Other questions in the sequence still show.
Nested Condition Groups
Real-world logic often requires nesting. "Show Question 10 if (Q1 is Yes AND Q2 is Yes) OR (Q3 is greater than 50)." That's a condition group inside another condition group.
Lensym supports unlimited nesting. You create a condition group, set its logical operator, add conditions or sub-groups, and the interface renders the hierarchy visually with indentation and connecting lines.
The condition builder prevents invalid constructions. You can't create circular references, and each group must have at least one condition. The UI disables operators that don't make sense for a single condition (like XOR with only one item).
Real-Time Evaluation
Conditions evaluate instantly as respondents answer. There's no page reload, no "please wait," no perceptible delay. When someone selects "No" on Question 1, the next screen already reflects that choice.
This happens client-side in the browser. Lensym's navigation engine processes all conditions locally, which means:
- No server round-trips for branching decisions
- Works offline once the survey loads
- Scales to any number of respondents without server load
- Respondents never see loading indicators for logic evaluation
The evaluation context includes all previous responses, so conditions can reference any earlier question regardless of how many questions came between.
The Visual Condition Builder
You don't write code to create conditions. The condition builder is a visual interface where you:
- Select a source question from a dropdown showing question titles
- Choose a comparison operator from a filtered list (based on question type)
- Enter or select the target value
- Set the action (GO_TO or SKIP) and target
Adding multiple conditions is a button click. Changing the logical operator is a dropdown. Creating nested groups uses the same interface recursively.
The builder validates in real-time. If you reference a question that's been deleted, you see a warning. If your condition can never be true (comparing a numeric question to text), the interface indicates the problem.
For power users, we're considering a future "code view" that shows conditions as expressions, but the visual builder handles every use case without it.
Common Branching Patterns
Screening/Qualification
IF age < 18 → GO_TO disqualification page
Filter out respondents who don't meet criteria early, before they invest time in irrelevant questions.
Role-Based Paths
IF role = "Manager" → GO_TO leadership section
IF role = "Individual Contributor" → GO_TO team member section
Different roles see different question sets tailored to their experience.
Follow-Up on Negative Responses
IF satisfaction < 3 → show open-ended "Why?" question
IF satisfaction >= 3 → SKIP the "Why?" question
Only ask for explanations when there's something to explain. Happy respondents skip the extra question.
Product-Specific Questions
IF products_used contains "Product A" → show Product A questions
IF products_used contains "Product B" → show Product B questions
Respondents only see questions about products they've actually used.
For more patterns and best practices, see our branching logic guide.
Common Questions
Can I see all conditions in my survey at once?
Yes. In the graph view, conditional edges are displayed with distinct styling. You can see at a glance which questions have branching and where they lead. Hovering over a conditional edge shows the condition summary.
What happens if multiple conditions are true?
Conditions are evaluated in order. The first condition that evaluates to true triggers its action, and evaluation stops. If you have multiple conditions, order matters. You can reorder conditions by dragging them in the condition panel.
Can conditions reference piped values or expressions?
Conditions currently reference raw question responses, not piped/calculated values. However, you can use expression piping within question text to show conditional content based on previous answers.
Can I test branching logic before publishing?
Yes. The preview mode lets you take the survey as a respondent and see exactly how branching works. You can also use the graph view to trace paths visually and verify that conditions lead where you expect.
Is there a limit to how many conditions I can create?
No hard limit. We've tested surveys with dozens of conditional edges without performance issues. The practical limit is maintainability: if you have more than 5-6 conditions on a single question, consider whether your survey design could be simplified.
Can I copy conditions between questions?
Not currently, but it's on our roadmap. For now, you'll need to recreate conditions manually if you want similar logic on multiple questions.
Ready to build intelligent surveys?
Advanced branching logic is available in Lensym's free tier. No upgrade required for any of the features described here.
On this page