Building Forms
Field settings
Every question has shared settings — title, required, placeholder — plus type-specific options like character limits, file restrictions, and validation rules. This page covers them all.
Accessing field settings
Type a question’s title and options straight on the canvas. Everything else lives in the block menu: click the drag handle on the block’s left edge (or tap the block indicator on touch) and pick from Turn into, Options, Validation, and the usual duplicate / move / hide / delete actions.
Common settings
These options appear on every question, whatever its type.
| Setting | What it does |
|---|---|
| Title | The question label respondents see — supports bold, italic, and links |
| Hide title / Show title | Hides the label but keeps the field. Useful when a paragraph above already says what to enter |
| Mark as required / Mark as optional | Questions start required: an asterisk shows and an empty answer blocks submission. Ranking and Documents are never counted as unanswered, and a question that logic hides is never required |
| Edit placeholder / Edit default value | One input, two modes. The placeholder is the grey hint that disappears once the respondent types; the default value is a real answer they can change or clear. Only Text Input, Text Area, Email, Website URL, Phone Number, and Number have both. Switch with this menu item or press ⌘ + D (Ctrl + D) inside the input |
A field’s key — the name automations prefill and read it by — is set in the Keys table, which the toolbar’s key icon opens for the whole form: one key per field, option, row and column. Leave a key empty to use the one derived from the title or label. Editing a key on a published form warns you that automations using the old key will break. Each option’s hint row also carries its key as a chip you can edit in place. See Field keys for how keys are derived, frozen at publish, and used by callers.
Adding help text
formbase is a document-style editor — to add help text or instructions for a question, insert a paragraph or heading block above or below the field on the canvas. Content blocks between questions are visible to respondents and work just like any other block.
Title visibility and data
Hiding a title does not remove the field from submissions. It still shows as a column header in exports, so give hidden-title fields a clear internal name.
Text options
Min length and Max length live under Validation in the block menu and apply to Text Input, Text Area, and Website URL. Text Area is the multi-line variant of Text Input — switch between them with Turn into.
Number options
Minimum and Maximum live under Validation and apply to Number, Star Rating, and a linear scale. Number also has Step: the answer must be a multiple of it, so a step of 1 accepts only whole numbers and 0.5 accepts halves. Leave it empty to accept any number.
Choice options
These settings apply to choice fields: Radio Buttons, Checkboxes, Dropdown, Ranking, Single Picture Choice, and Multi Picture Choice.
| Setting | Applies to | What it does |
|---|---|---|
| Options list | All choice types | The answers respondents pick from — click to edit, drag to reorder |
| Randomize order | Radio Buttons, Checkboxes, Dropdown, Ranking | Shuffles option order per respondent to reduce bias. The menu item reads Remove randomized order once it is on |
| Allow multiple / single selection | Single Picture Choice, Multi Picture Choice | Flips picture choice between one pick and several |
| Min / max selections | Checkboxes, picture choice | Under Validation — how few or how many options may be ticked |
Single options can also be hidden or preselected from the canvas: with the cursor in an option, press ⌘ + H (Ctrl + H) to hide it, or ⌘ + D (Ctrl + D) to select it by default.
Rating and scale options
Rating
The Star Rating field shows 5 stars by default. Use Increase max stars and Decrease max stars in the block menu to set anything from 1 to 10. Turn it into a linear scale from the same menu; the maximum carries over and the menu items become Increase / Decrease scale max.
Matrix
The Matrix / Grid field creates a grid of choices. Define Rows (the sub-questions) and Columns (the answers). The respondent picks one column per row. Under Validation you can Require all rows or set Min answered rows.
File upload and payment options
File upload
File Upload takes Min files, Max files, Max size (MB), and Accepted types under Validation. See File uploads & signatures for the details.
Payment
The Payment field collects a one-time charge. Set the Amount and Currency on the block — USD, EUR, GBP, JPY, CAD, AUD, CHF, SEK, NOK, DKK, NZD, SGD, HKD, AED, or TRY. Each currency has a minimum charge (0.50 for USD and EUR), and publishing is blocked until Stripe is connected and the amount is valid. See Payment collection.
Default values from other fields
A field’s default value can come from another field in the same form instead of fixed text — a hidden field (for example a URL parameter) or a calculated field. It works on the six inputs that have a default-value slot: Text Input, Text Area, Email, Website URL, Phone Number, and Number.
To set it up:
- Click into the field’s input.
Type @ as the first character. A menu lists your hidden and calculated fields; keep typing to filter.
Pick a field. The input switches to default value mode on its own and shows the field as a chip, for example @recipient.
To remove the reference, click the × on the chip, press Backspace, or press ⌘ + D again.
If you want a literal @ instead — a placeholder like @yourhandle — press Esc to close the menu and keep
typing; the input stays in the mode it was in. A chip turns red when its field has been deleted; re-adding a field with the same name
reconnects it.
The chip replaces the field’s placeholder text. The @ only opens the menu as the first character, so a default like
jeff@example.com stays plain text.
When someone opens the form, the field is pre-filled with the referenced value — for example, a link ending in
?recipient=Jeff fills a Text Input that references the recipient hidden field with “Jeff”. How it behaves:
- Respondents can change or clear the value. Their own answer is never overwritten.
A calculated field fills the input with the first value it has — usually its initial value. Later changes from logic rules don’t replace what is already in the input.
If the referenced field has no value, the input starts empty. A Number field also stays empty when the value isn’t a number (for example
?age=abc).- The submission stores both values: the hidden or calculated field, and the question’s final answer.
See Hidden fields and Calculated fields.
Examples
Contact form — Email field marked required, Text Area for message with a placeholder “Tell us how we can help…”, Phone Number field marked optional with a paragraph below it: “We’ll only call if we need to clarify your request”
NPS survey — Star Rating set to 10 stars, followed by a Text Area (hidden by default, shown via logic when the score is 6 or below) with placeholder “What could we improve?”
Product order — Number field for quantity with min 1 / max 100, Checkboxes for add-ons, and a payment field whose amount is driven by a calculated field
Event RSVP — Radio Buttons for attendance, Checkboxes for dietary requirements with randomized order to avoid bias, Date Picker with an earliest date set
Validation rules
Validation runs as the respondent fills out your form. formbase highlights bad input inline and refuses to submit until everything passes.
Built-in by field type
Each question type checks its own shape, with nothing to configure. Email checks the address format. Website URL accepts http and https links only and rejects a host that is not a real domain. Phone Number checks the number against the selected country. Number, Date Picker, and Time Picker reject anything that is not a number, a date, or a time.
On Business, an email question can additionally require verification — the respondent confirms that address with a one-time code before the form accepts the submission. The toggle sits under Validation → Verification. See respondent email verification.
Optional rules per field
Open the block menu and pick Validation. The rules on offer depend on the question type; these are the exact menu labels.
| Rule | Applies to | Effect |
|---|---|---|
| Min length / Max length | Text Input, Text Area, Website URL | Character count, measured after trimming spaces |
| Regex | Text Input, Text Area, Website URL, Email | Answer must match the pattern |
| Minimum / Maximum | Number, Star Rating, linear scale | Limits the numeric range |
| Step | Number | Answer must be a multiple of the step; 1 means whole numbers only |
| Earliest date / Latest date | Date Picker | Bounds the allowed dates |
| Earliest time / Latest time | Time Picker | Bounds the allowed times |
| Min selections / Max selections | Checkboxes, picture choice | How many options may be ticked |
| Require all rows | Matrix / Grid | Every row must have an answer |
| Min answered rows | Matrix / Grid | How many rows must be answered |
| Min files / Max files | File Upload | How many files per submission |
| Max size (MB) | File Upload | Largest allowed size per file |
| Accepted types | File Upload | Pick from .pdf, .docx, image/*, .zip and more |
| Require email verification | Email (Business) | Respondent confirms the address with a one-time code |
Radio Buttons, Dropdown, Toggle Switch, Signature, Ranking, Payment, and Schedule appointment take no validation rules — required or not is the only choice. Inside a repeating group, email verification is not offered.
Custom pattern examples
US ZIP code —
^\d{5}(-\d{4})?$Hex color code —
^#[0-9a-fA-F]{6}$URL-friendly slug —
^[a-z0-9-]+$
A value that doesn’t match shows a generic “Invalid value” error, so add a paragraph near the field describing the format you expect. An invalid regex is ignored and never blocks submission. Length rules count characters after trimming leading and trailing spaces.
How validation runs
formbase checks validation live in the browser as the respondent types. Format and rule errors appear immediately with an inline message; a “This field is required” error appears once the field has been touched, or when the respondent tries to submit.
Don't validate sensitive data with regex alone
For things like credit cards or government IDs, use the appropriate field type or integration. Regex catches shape, not validity.