---
title: "Fields and the field library - Workflow Forms"
description: "Field types, layout blocks, default fields, validation and how one field is shared by every form that uses it."
canonical: "https://docs.workflow-forms.app/fields-and-the-field-library"
---

# Fields and the field library

Fields live in a library. You define a field once - its type, label, placeholder, help text, options and validation - and place it on any number of forms. The **Fields** page lists the library with each field's type, handle, whether it is required and how many forms use it.

## Field types

| Type | What the visitor sees |
| --- | --- |
| Text | A single line of text |
| Long text | A text area for several lines |
| Email | An email address, checked for a valid format |
| Phone | A phone number |
| Number | A number, with an optional minimum and maximum |
| Date | A date |
| Dropdown | One choice from a list |
| Radio buttons | One choice, all options visible |
| Checkbox | A single box, on or off |
| Checkboxes | Several choices from a list |
| Consent checkbox | A checkbox whose label is the consent text. The text can contain a link, for example to your privacy policy |
| Hidden | Not shown. Sends a fixed value or one filled automatically |

There are no file upload fields.

## Layout blocks

Layout blocks structure a form. They have no value: nothing is submitted for them and they cannot be used in a condition.

| Block | Notes |
| --- | --- |
| Heading | Size Large (H2), Medium (H3) or Small (H4) |
| Paragraph | Text. Line breaks are kept, and it can contain Liquid and simple HTML such as links, bold text and lists |
| Image | An https image link, for example from Content > Files, with a description for screen readers and a maximum width |
| Divider | A thin line between parts of the form |
| Spacer | Empty space with a height you set |
| Page break (next step) | Everything after it is the next step of the form. See [Conditions and multi-step forms](https://docs.workflow-forms.app/conditions-and-multi-step-forms.md) |

## Default fields

Email, Name, First name, Last name, Phone, Subject, Message, Company, Order number, Website, Address, ZIP code, City, Country, Date of birth, Newsletter consent and Privacy consent are default fields. They are always in your library. You can edit them and take them off a form, but they cannot be deleted.

## Create a field

On **Fields**, select **Create field**, or use **New custom field** in the form editor's **Add field** menu.

A field's page has two tabs: **General** with the settings below, and **Translations** with the field's texts in other languages.

| Setting | Notes |
| --- | --- |
| **Label** | The text shown above the field |
| **Type** | One of the types above. The type is fixed once the field is in use in the editor |
| **Handle** | The key the value is stored and sent to Flow under, for example `order_number`. Lowercase letters, digits and underscores. It cannot change later |
| **Placeholder**, **Help text**, **Default value** | Optional texts and a prefilled value |
| **Required** | Whether the field must be filled. A form can override this for itself |
| **Options** | For Dropdown, Radio buttons and Checkboxes: each option has a **Label** (shown) and a **Value** (stored) |

## Liquid and HTML in texts

Labels, placeholders, help texts, default values, option labels and the text of Heading and Paragraph blocks can contain Liquid, and labels, help texts, headings and paragraphs also a small set of HTML (links, bold, italic, underline, line breaks, paragraphs and lists). Shopify runs the Liquid on your storefront, so a default value can pre-fill a field with the logged-in customer's email, and a label can link to your privacy policy. A text with broken Liquid cannot be saved.

See [Liquid and HTML in your texts](https://docs.workflow-forms.app/liquid-and-html-in-texts.md) for the details and examples to copy.

## Validation

- **Minimum length** and **Maximum length** for text fields.
- **Minimum** and **Maximum** for numbers.
- **Pattern** - a regular expression the whole value must match.

All checks (required, email format, phone format, number, date, lengths, pattern, valid options) run on our server, not in the visitor's browser. When a visitor sends the form, or moves to the next step of a multi-step form, the server checks the values and answers with the errors, which are shown at the fields in the visitor's language.

- The error messages ship with the app in English, German, French, Spanish, Italian and Dutch. Other languages see them in English.
- A pattern is checked with a time limit. A pattern that takes too long on a value counts as not matching, so keep patterns simple.
- A single value can be at most 5,000 characters.

## Consent checkboxes

A consent checkbox has one text: its **Label**. A link is part of that text, written as HTML. There are no separate link settings.

- **Required** - the form cannot be sent without the box checked.
- **This is email marketing consent** - when checked by the visitor, the Form submitted trigger sends `Marketing consent: true`, for example to subscribe the customer in a workflow. Workflow Forms itself does not create or update customers.

The default field **Privacy consent** is a required consent checkbox that reads "I have read and agree to the privacy policy", with the words "privacy policy" linking to your store's own privacy policy, the one you manage under **Settings > Policies** in your Shopify admin. If your store has no privacy policy there, edit the label and point the link at your own page. The exact label is in [Liquid and HTML in your texts](https://docs.workflow-forms.app/liquid-and-html-in-texts.md).

## Hidden fields

A hidden field always sends its **Default value**, or a value from **Fill automatically with**:

- `utm_source`, `utm_medium`, `utm_campaign`, `utm_term` or `utm_content` from the link the visitor came through
- Page address
- Previous page (referrer)
- Logged-in customer ID

## One field, many forms

A field belongs to the library, not to a form. Editing a field - on the **Fields** page or by clicking it in the form editor - changes it on every form that uses it. The editor tells you how many forms that is.

Three things are set per form, on the placement: the **Label on this form**, **Required**, and the conditions.

Deleting a field removes it from every form that uses it. Submissions keep their values.

## Translations

A field's label, placeholder, help text and options can be translated per language on the field's **Translations** tab; that translation applies on every form that uses the field. A form can override it for itself in the editor's translate view. Translations can contain Liquid and HTML like the texts they translate. See [Languages](https://docs.workflow-forms.app/languages.md).

## Next steps

- [Liquid and HTML in your texts](https://docs.workflow-forms.app/liquid-and-html-in-texts.md) - Liquid and HTML in labels, help texts and default values.
- [Conditions and multi-step forms](https://docs.workflow-forms.app/conditions-and-multi-step-forms.md) - show a field only for certain answers.
- [The form editor](https://docs.workflow-forms.app/the-form-editor.md) - place and arrange fields.
- [Shopify Flow triggers](https://docs.workflow-forms.app/shopify-flow-triggers.md) - how values reach Shopify Flow under their handles.
