FormWork documentation
Operators Reference
Every condition operator and the value types on which it is available.
Operators are shared by field/page display logic, field validation, workflow conditions, and reference filters. The builder filters the list using the left-hand value’s type.
Quick chooser
| Need | Use |
|---|---|
| Exact scalar match | Equals / Does not equal |
| Numeric or chronological ordering | Greater/Less comparisons |
| Character, selection, or instance count | Length operators |
| Text or array membership | Contains / Does not contain |
| Text prefix, suffix, or regex | Starts with / Ends with / Matches pattern |
| Validate text format | Is email, URL, number, integer, float, alpha, alphanumeric |
| Test a toggle | Is true / Is false |
| Check presence | Is empty / Is not empty |
Complete operator table
| Builder label | Key | Value needed | Available types |
|---|---|---|---|
| Equals | eq | Yes | String, number, boolean, date, datetime, time |
| Does not equal | neq | Yes | String, number, boolean, date, datetime, time |
| Greater than | gt | Yes | Number, date, datetime, time |
| Greater or equal to | gte | Yes | Number, date, datetime, time |
| Less than | lt | Yes | Number, date, datetime, time |
| Less or equal to | lte | Yes | Number, date, datetime, time |
| Length equals | length_eq | Yes | String, array |
| Length not equals | length_neq | Yes | String, array |
| Length greater than | length_gt | Yes | String, array |
| Length greater or equal to | length_gte | Yes | String, array |
| Length less than | length_lt | Yes | String, array |
| Length less or equal to | length_lte | Yes | String, array |
| Contains | contains | Yes | String, array |
| Does not contain | not_contains | Yes | String, array |
| Starts with | starts_with | Yes | String |
| Ends with | ends_with | Yes | String |
| Matches pattern | matches_pattern | Yes | String |
| Is email | is_email | No | String |
| Is URL | is_url | No | String |
| Is number | is_number | No | String |
| Is integer | is_integer | No | String |
| Is float | is_float | No | String |
| Is alpha | is_alpha | No | String |
| Is alphanumeric | is_alphanum | No | String |
| Is true | is_true | No | Boolean |
| Is false | is_false | No | Boolean |
| Is empty | is_empty | No | String, number, boolean, date, datetime, time, array |
| Is not empty | is_not_empty | No | String, number, boolean, date, datetime, time, array |
Repeatable parents
When the selected reference represents a repeatable parent rather than one child instance, the builder deliberately limits operators to:
length_eq, length_neq, length_gt, length_gte, length_lt, length_lte, is_empty, and is_not_empty.
Choose a child/instance reference when you need to compare the values inside it.
Meaning by type
- String length counts characters; array length counts items or repeatable instances.
- String contains checks text content; array contains checks membership.
- Date/time comparisons use chronological order.
- Empty checks are the clearest way to test absence; do not approximate emptiness with Equals and a guessed blank value.
- Is number/integer/float validate text that represents those formats; a true Number field already has numeric type.
When design-time type is unknown, such as some dynamic workflow output, the editor may show the full set. Runtime data must still be compatible.
Right-hand values
Operators marked Value needed accept a typed literal or compatible reference. Operators without one are complete predicates by themselves.
For practical configuration, return to Conditional Logic or Validation Rules.