Built with Chinaski

Form Fields

Fields are the questions a form asks. Every field has a type, a name (internal), a label (visible), validation rules, and an optional visible-when condition. The builder screen (Forms → edit → Fields) supports creating, re-sorting, editing, and deleting fields; field names are unique within a form.

Field types

The palette covers:

  • Text, textarea — free text (the usual contact fields).
  • Email, tel — format-validated single-line fields.
  • Select / dropdown, radio buttons, checkbox list — option-based fields; you supply the options one per line. Checkboxes-type controller fields can drive conditional display of other fields.
  • Single checkbox and consent checkbox — a single opt-in. The consent type is intended for policy-agreement lines.
  • Address — a structured composite (line 1/line 2, city, state, postal, country) that is gathered and stored as one unit.
  • File upload — see below.
  • Number, date — validated numerically and regionally by your pattern.

Validation

  • Required — enforced server-side; conditionally hidden fields are skipped (a field hidden because its controlling condition isn’t met is never demanded).
  • Length / value / pattern rules — per-field minimum and maximum length, minimum/maximum numeric or date values, and a regular-expression format (“does not match the required format” error otherwise).
  • Names follow a single rule: lowercase letters, numbers, and underscores (they’re the machine names echoed in webhooks, emails, and CSV exports).

Editing behavior

  • Re-rendering after a validation error keeps visitors’ answers filled in, including across checkbox groups.
  • Forms pre-fill from URL query parameters on first load (e.g. linking to the form with ?email=… fills the email field for the named fields) — handy for personalized campaign links.
  • Field edits save as part of the form; a field’s history rides along with the form’s version counter — deleting a field only affects future submissions, not stored ones (which snapshot the answers as data at submit time).

File uploads

  • Uploads are checked by actual content type (magic bytes), not by extension; the stored filename’s extension always matches the content type.
  • SVG is deliberately not accepted for safety (it can carry active content).
  • Each form has a total upload quota setting; uploads must therefore fit the form’s quota.
  • Uploads are stored on the CMS server. Whether uploaded files are publicly accessible or admin-only is a per-form switch (prv internet-accessible or admin-only download). Deleting a submission deletes its uploaded files too.

Conditional display

Any field can be set to show only when another field carries a particular value — e.g. a “Company name” field that appears only when “Organization = yes” is ticked. The controller field can be any field type including a checkbox; the matched value(s) for checkbox-list controllers compare after clicking. Hidden-by-condition fields aren’t validated on submit, since they were never shown.