Where the condition lives
In the Page Editor, select a section, then open the Visibility group in the Properties panel on the right. The field is labeled Show When (CEL Expression). Any section type can carry a condition — not just Destination buttons. A Text block, a Banner, a whole Container (which hides its children with it), an ImageSection: all of them accept one. Leaving the field empty means the section is always visible. As you type, a Preview badge next to the field reads Visible or Hidden, evaluated against whichever Item you have selected in the editor. Switch the previewed Item to check the condition against real data instead of your base template.What a condition can look at
Everything the Page itself can bind to is available in a condition:Working examples
Show a section only for one equipment type:&&, ||, and !, and group with parentheses:
A wrong condition and an unmet condition look identical
If a condition references something that does not exist, the whole expression evaluates to false — silently. The visitor sees no error; the section simply is not there. Even in the editor, the Preview badge reads Hidden rather than Error, because a failed lookup is treated as a false result rather than as a failure. That makes these three situations indistinguishable at a glance:- A genuine miss — this Item really is not a forklift.
- A typo —
item.tpye == "forklift", or a field name whose capitalization does not match (field names are case-sensitive). - An invented value —
today > item.dueDate. There is notoday.timeexposes only the parts listed above — no absolute date and no date arithmetic, so “show this when the inspection is overdue” cannot be expressed. Use a status field you maintain (item.testStatus == "expired") instead of comparing dates.
Expression limits
Every condition is validated before it is evaluated, and a condition that breaks a limit is rejected in the editor rather than silently ignored:- Maximum 500 characters
- Maximum nesting depth of 10 for brackets and parentheses
- Maximum 20 operators
- Parentheses and brackets must balance
Before you add a condition
Ask whether showing everything is simpler. A Page with four buttons where people tap the one they need is easier to build, easier to debug, and easier for a contractor to understand than four conditions. Conditional Visibility earns its place when the wrong button is actively harmful — a crane inspection form on a forklift, for example. Also note that an ActionLink already hides itself when its own URL binding cannot resolve, with no condition needed — see ActionLink: The Destination Button. You do not need a condition to suppress a button that has nowhere to go.Related
- Conditional Destinations & Rule Priority — the other CEL mechanism: conditional routing rules choosing which URL a scan uses
- Device Detection & Routing — the
device.*fields you can test in a condition - Section Types — every section that can carry a condition
- Field Bindings & URL Templates — the
{{ }}syntax and full namespace reference