Conditional Logic
Make your form react to what respondents answer. Show a follow-up question only when it's relevant. Require a phone number only when the respondent picks "Call me back". Skip technical questions for non-technical roles.
Adding a Logic Rule
- In the designer, type / and pick Logic (or click the Add logic button at the bottom of the field list).
- A logic block appears, anchored after the field above it.
- Configure the rule:
- If field — the field whose value is checked
- Condition —
equals,not equals,contains,is empty,greater than, etc. The conditions available depend on the field's type. - Value — what to compare against (text, number, or one of the field's options for selects)
- Action — what happens when the condition is met
- Target — the field or page the action applies to
The Four Actions
| Action | What it does | Target |
|---|---|---|
| Show field | Field is hidden by default; shown only when the rule's condition is met. | A form field |
| Hide field | Field is visible by default; hidden when the condition is met. | A form field |
| Require field | Adds dynamic required-ness on top of the field's static required setting. | A form field |
| Skip to page | Jumps the respondent forward to a specific page break. The Next button on the current page does the jump. | A page break |
Show vs. hide — pick the right default
If a field should be invisible most of the time, use Show field (it stays hidden until the rule fires). If a field should be visible most of the time, use Hide field (it shows by default and disappears when the rule fires). Don't combine the two on the same target — the result depends on rule order.
Conditions by Field Type
| Field type | Available conditions |
|---|---|
| Text, Email, Phone, URL | equals, not equals, contains, not contains, is empty, is not empty |
| Number | equals, not equals, greater than, less than, is empty, is not empty |
| Single Select, Status | equals, not equals, is empty, is not empty |
| Multi Select | contains, not contains, is empty, is not empty |
| Checkbox | equals (true/false) |
| Date | equals, not equals, is empty, is not empty |
How It's Evaluated
Logic runs in two places:
- Client-side as the respondent types — fields show, hide, and gain required-ness in real time.
- Server-side at submit — Ascend re-runs every rule against the submitted data before saving the row. This means tampered submissions can't bypass
require_fieldrules or smuggle in values for hidden fields.
When the server validates:
- Hidden fields are never required, even if their
requiredflag is on. - Hidden fields are never written to the database row, even if a value was sent.
- Conditionally-required fields show a
{label} is requirederror if empty.
Multiple Rules on the Same Field
Rules are evaluated in the order they're declared. If two rules contradict (one shows, one hides), the last matching rule wins for visibility. For requiredness, any matching require_field rule is enough to make the field required.
Common Patterns
| Pattern | Setup |
|---|---|
| "Other (please specify)" follow-up | Show field "Other text" if Reason equals Other |
| Conditional contact preference | Require field "Phone" if Contact method equals Phone |
| Branch on plan tier | Skip to page "Enterprise questions" if Plan equals Enterprise |
| Hide irrelevant questions | Hide field "Tax ID" if Country not equals US |
| Soft validation gate | Show field "Are you sure?" checkbox if Cancellation reason is not empty |
Limitations
- One condition per rule — no compound
AND/OR(yet). Chain rules instead, or combine fields into a select. - Skip-to-page can't go backwards.
- Logic doesn't support hidden URL prefill.
- File uploads can't be used as the condition field, only as the target.
Next
- Publishing & Sharing — Take the form live
- Responses — Where the answers go