Appearance
Collections & Fields
Open a collection's Fields tab and click Add Field to add a column. Every field has a Key (its internal name, can't be changed later), a Label (what people see), and a Type, plus type-specific options.
Field types
| Type | Use for | Notable options |
|---|---|---|
| Text / Long Text | Short or multi-line text | min/max length, placeholder, optional QR/barcode scan button |
| Number | Plain numbers | min, max, step, prefix/suffix, decimal places |
| Price | Currency-formatted numbers | currency code, decimal places |
| Boolean | A true/false toggle | — |
| Date / Date & Time / Time | Date and time values | — |
| Enum | A dropdown of fixed, labeled, colour-coded options | add/remove options, allow multiple selections |
| Reference | A link to a record in another collection | target collection, which field to display, search field, allow multiple, an optional barcode-scan search |
| Image / File | Uploaded media | accepted file types, max size, allow multiple |
| Geolocation | A GPS coordinate, captured from the device | — |
| Address | A postal address | — |
| Phone Number | A phone number | — |
| List (virtual) | A live, computed list of related records | source collection, display field, sort |
| Complete List | An embedded mini-table of related records, rows are clickable | source collection, which columns to show, sort |
| Drawing / Signature | A signature or sketch pad, stored as an image | stroke colour/width, background colour, max size |
| Barcode / QR | Displays a barcode or QR code rendered from the field's value | format (QR, CODE128, EAN-13, UPC), render size |
| Table | An embedded mini-table for structured sub-data you type in yourself | columns (key + header) |
Computed fields
Turn on Computed and a field's value is calculated from a formula instead of typed in — it recalculates every time it's shown, and whatever's typed into the underlying field (if anything) is ignored. A computed field can:
- Reference other fields on the same record —
MULTIPLY({quantity}, {unit_price}) - Follow a reference field —
{product.name} - Look at other records live —
COUNT(COLLECTIONSELECT("orders", 'EQUAL({customer},{_THISRECORD.id})'))
See Expressions for the full formula reference.
Initial value
A field can have an initial value — a formula that runs once when the create form opens, to pre-fill it. Common examples: NOW() for a created-at timestamp, or 0 for a starting quantity.
Show and validate
Two more optional, formula-driven behaviours live on every field:
- Show field only if — hides the field (and clears its value, unless it's computed) when the formula is false. Good for "only show this if the record is in a certain state."
- Valid if — marks the field invalid on submit if the formula is false, with an optional custom error message.
Flags
- Required — can't be left blank.
- Read only — shown, but can't be edited on the form.
- Is label field — one per collection. Its value is used whenever the record needs a short, recognizable name — in a reference picker's dropdown, for instance. Usually a name or title field.
