Field types and conditional logic
Standard field types
| Type | Key config |
|---|---|
text | label, placeholder, required, max_length |
email | label, required, confirmation (show confirm field) |
phone | label, required, format (any/intl/us) |
number | label, required, min, max, step |
date | label, required, min_date, max_date |
time | label, required, format (12h/24h) |
textarea | label, rows, max_length |
select | label, required, choices, multiple, allow_other |
radio | label, required, choices |
checkbox | label, choices, required_count |
toggle | label, on_label, off_label, default |
file | label, accept (mime types), max_size_mb, max_files |
hidden | name, value (supports merge tags) |
html | content (static HTML block) |
section_break | title, description |
page_break | next_label, back_label (multi-step pagination) |
honeypot | none (invisible CAPTCHA, auto-inserted) |
Common keys on every field: id (auto-generated), type, label, name, required, placeholder, css_class, conditions.
Conditional logic
Every field accepts a conditions rule that shows or hides it based on other fields' values.
json{
"action": "show",
"match": "all",
"rules": [
{ "field": "field_abc", "operator": "is", "value": "Yes" },
{ "field": "field_xyz", "operator": "is_not_empty" }
]
}| Operator | Effect |
|---|---|
is | Equals |
is_not | Does not equal |
contains | Value contains string |
not_contains | Value does not contain string |
greater_than | Numeric > |
less_than | Numeric < |
is_empty | No value |
is_not_empty | Has any value |
action is show or hide. match is all (AND) or any (OR).
Logic is evaluated client-side in real time, then re-evaluated server-side on submit so hidden fields cannot be force-submitted by bypassing JavaScript.

