FormWork FormWork

Form Structure

Understand how forms are organized with pages, fields, and nested structures.

Forms in FormWork are organized in a hierarchical structure that supports simple single-page forms as well as complex multi-step experiences.

Form Hierarchy

Form
└── Form Version (draft or published)
    └── Pages
        └── Fields
            └── Subfields (for groups and templated fields)

Pages

Pages are top-level containers that organize your form into logical sections.

Single-Page Forms

The simplest forms have just one page containing all fields. Users see everything at once and submit in one step.

Multi-Page Forms

For longer forms, split content across multiple pages:

  • Improve user experience with manageable chunks
  • Show progress through the form
  • Allow saving progress between pages

Creating Pages

  1. In the form builder, click Add Page
  2. Give the page a title
  3. Drag fields into the page
  4. Reorder pages by dragging the page tabs

Page Properties

PropertyDescription
IDUnique identifier (auto-generated, can customize)
TitleDisplayed to users as the page heading

Fields

Fields are the building blocks of your forms. Each field collects or displays information.

Field Organization

Fields can be:

  • Top-level - Directly on a page
  • Nested - Inside a group or container field
  • Repeatable - Allowed to collect multiple instances or values

Field Properties

Common properties for all fields:

PropertyDescription
IDUnique identifier within the form
TypeThe field type (text, select, group, etc.)
LabelDisplay label shown to users
DescriptionHelp text shown below the field
RequiredWhether the field must have a value
PlaceholderHint text shown when empty
Default ValuePre-populated value
ReadonlyPrevents user modification
Conditional LogicRules for showing/hiding
ValidationCustom validation rules

Field IDs

Every field has a unique ID used to:

  • Reference the field in conditional logic
  • Access answers in workflows
  • Target fields in the API

IDs must:

  • Contain only lowercase letters, numbers, and underscores
  • Start with a letter
  • Be unique within the form

Container Fields

Some fields contain other fields, creating nested structures.

Groups

Group fields organize related fields together visually and logically.

Contact Information (Group)
├── First Name (Text)
├── Last Name (Text)
└── Email (Email)

Group properties:

  • Layout - row or column arrangement
  • Fields - Nested field definitions

Repeatable Fields

Make a field repeatable to allow multiple values or instances:

Order Items (Repeatable Group)
├── Product Name (Text)
├── Quantity (Number)
└── Price (Number)

Users can:

  • Add new instances
  • Remove instances
  • Reorder instances

For a repeatable group, each instance contains the group’s nested fields. For repeatable scalar fields, each instance stores one value.

Templated Fields

Some field types automatically generate subfields:

Name Field:

Full Name (Name)
├── Title (Text) - optional
├── First Name (Text)
├── Middle Name (Text) - optional
└── Last Name (Text)

Address Field:

Address (Address)
├── Street (Text)
├── Street 2 (Text) - optional
├── City (Text)
├── State (Text)
├── Postcode (Text)
└── Country (Select)

Using Form Data

Submitted answers follow the same structure you build in the form: top-level fields, nested group values, and repeatable field instances. FormWork uses that structure when showing entries, running workflows, applying conditional logic, and exporting data.

For most form-building work, use the reference picker in the builder instead of writing paths manually. Developers who need exact path syntax can use the References & Data and API Reference docs.

Best Practices

Logical Grouping

Group related fields together for better UX and easier data management.

Consistent Naming

Use clear, consistent ID naming conventions across forms.

Page Length

Keep pages focused - too many fields on one page can overwhelm users.

Nesting Depth

Avoid excessive nesting - deep structures can be confusing to navigate.