> ## Documentation Index
> Fetch the complete documentation index at: https://docs.holace.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Form Builder

> Build reusable intake forms with the drag-and-drop builder. Add fields, set required rules, and preview the public version before you ship it.

The form builder is where you turn an intake checklist into a public web form. Anyone in your firm with admin access can build, edit, and disable forms. No code required.

\[Screenshot: Forms list page — three cards showing Personal Injury Intake, Auto Accident Quick Form, Workers Comp]

## Create a new form

<Steps>
  <Step title="Open the Forms page">
    From the dashboard sidebar, click **Forms**. You'll see all forms your firm has built, plus stats for total forms, active forms, and submissions this month.
  </Step>

  <Step title="Click ‘Create Form’">
    Give the form a clear, descriptive name (clients won't see it, but your team will) and an optional internal description. Click **Create Form** to open the builder.

    \[Screenshot: Create New Form dialog with Name and Description fields]
  </Step>

  <Step title="Add fields">
    The builder has three columns:

    * **Field Types** (left) — the palette of available fields. Click any one to drop it onto the form.
    * **Form Fields** (middle) — your form's working canvas. Reorder, edit, or delete fields here.
    * **Field Properties** (right) — edits the currently selected field's label, placeholder, help text, required flag, and dropdown options.

    \[Screenshot: Form builder three-column layout — palette, canvas, properties]
  </Step>

  <Step title="Preview as a client would see it">
    Click **Preview** in the top right at any time. The canvas swaps for a live, disabled rendering of the form exactly the way submitters will encounter it.
  </Step>

  <Step title="Save">
    Hit **Save Form**. New forms are created as **inactive** by default — toggle them active from the Forms list when you're ready to start collecting submissions.
  </Step>
</Steps>

## Field types

The builder ships with eight field types covering the vast majority of intake use cases:

| Field             | Best for                                                  | Notes                              |
| ----------------- | --------------------------------------------------------- | ---------------------------------- |
| **Text Input**    | Single-line answers — names, addresses, claim numbers     | Free text                          |
| **Text Area**     | Long-form responses — incident description, injury notes  | Multi-line                         |
| **Email**         | Email addresses                                           | Format-validated automatically     |
| **Phone**         | Phone numbers                                             | Formats as a phone field on mobile |
| **Date**          | Dates of incident, birth, treatment                       | Native date picker                 |
| **Dropdown**      | Single-select from a fixed list — case type, state        | Define options                     |
| **Checkboxes**    | Multi-select — injury areas, symptoms, treatments         | Multiple selections allowed        |
| **Radio Buttons** | Single-select with all options visible — yes/no, severity | One selection only                 |

<Tip>
  Use dropdowns for long lists (states, providers) and radio buttons for short ones (yes/no, three-tier severity). Submitters fill out radio buttons faster because they don't have to open a menu.
</Tip>

## Field properties

Click any field on the canvas to edit it in the right-hand panel.

<Columns cols={2}>
  <Card title="Field Label" icon="tag">
    The question your client sees. Keep it conversational — "What happened?" reads better than "Incident Description."
  </Card>

  <Card title="Placeholder" icon="text-slash">
    Greyed-out hint inside the empty input. Use it for examples ("(555) 555-5555"), not for the question itself.
  </Card>

  <Card title="Help Text" icon="circle-info">
    Small text shown below the field. Best for clarification: "Found on your insurance card" or "Approximate is fine."
  </Card>

  <Card title="Required" icon="asterisk">
    Required fields show a red asterisk and block the form from being submitted until they're filled.
  </Card>
</Columns>

For dropdowns, checkboxes, and radio buttons, the Properties panel adds an **Options** editor where you can add, label, and remove choices.

\[Screenshot: Field Properties panel showing label, placeholder, help text, required toggle, and options list for a dropdown]

## Reordering and deleting

Each field on the canvas has up/down arrows and a trash icon. Use the arrows to reorder; the trash icon deletes immediately (there's no undo, but the form isn't saved until you hit **Save Form**, so refresh the page to bail out).

## Required-field rules

A form can be submitted only if every required field is filled with a valid value. The validation runs client-side first (so the submitter gets immediate feedback) and is re-checked server-side on submit. Email fields enforce a valid email format; phone fields are length-checked.

<Warning>
  Don't make every field required. Long required-field lists are the single biggest reason intake forms are abandoned. Only flag the fields you genuinely cannot move forward without — name, contact info, and the case-defining fact.
</Warning>

## Conditional logic

The current builder does **not** yet support show/hide rules based on previous answers (e.g., "show 'animal control contacted' only if case type is Dog Bite"). For now, build separate forms per case type if you need branching.

<Note>
  The signed-link intake form (sent after a client retains your firm) does support case-type-aware sections — auto, dog bite, slip & fall, workplace, malpractice, etc. That's a different flow from public lead-capture forms. See [Lead → Journey](/intake-forms/lead-to-journey).
</Note>

## Activating and deactivating

From the Forms list, click the **⋮** menu on any card and choose **Enable** or **Disable**. Disabled forms still exist (and keep their submissions), but the public URL returns a 404. Use this to retire seasonal campaigns or pull a misconfigured form offline without losing data.

<Note>
  Once you've built and tested your form, the next step is sharing it: [Share a Public Form](/intake-forms/sharing-public-forms).
</Note>
