
Comparators by type
Not every comparator applies to every type. Thealways comparator is the default branch and applies to any type.
between takes a pair of values (two numbers or two dates); any_of takes a list.
Literal value or variable
The right-hand side of a rule can be a literal value or another variable (variable-to-variable comparison). Both sides must resolve to the same type. Variable comparison is allowed for:equals, not_equals, contains, starts_with, ends_with, and the ordering comparators (greater_than, less_than, before, after, etc.); not for between, any_of, or always. Multiple choice cannot be compared against a variable.
Variables
Built-in variables:
Custom variables: declared per version (lowercase name, type text/number/date/boolean, required or not, with an optional default) and referenced as
custom.<name> or {{ name }} in templates. Their values come from the enrollment or the run.
Where rules can live
- On a question or a webhook, a rule may only read that node’s own value.
- Any condition that crosses items (another question, a variable, another webhook, or variable-to-variable comparison) must live on a decision node.
- A flow phrase allows at most one rule, and it must be
always.