Field types
Every field type a Wapp collection can use, its configuration options, and how to pick one.
A collection's structure is a list of fields — each has a type, which determines what kind of value it stores, how it's edited, and what configuration it accepts. Cheqq supports 21 field types, grouped below.
Fields are tracked by ID, not name
Renaming a field never breaks existing data or formulas that reference it — Cheqq tracks fields by a stable internal ID underneath the display name.
Basic fields
| Type | Stores | Key configuration |
|---|---|---|
| Text | A single line of text | Hint text shown when empty, min/max length, a validation pattern |
| Long text | Multi-line text | Optional rich text formatting |
| Number | A numeric value | Format (plain decimal, percent, or currency + currency code), decimal precision (0–12), min/max |
| Duration | A length of time | Duration format (h:mm or h:mm:ss), sub-second precision, min/max |
| Checkbox | True/false | — |
| Date | A calendar date, optionally with a time | Include time, display format, timezone, highlight when overdue |
| URL | A web address | — |
| An email address | — |
Duration
A Duration field holds a length of time — how long a session runs, how long a task took — rather than a point on the calendar. Use it instead of a Number field called "Minutes": the field itself carries the unit, so the rest of Cheqq can act on it. A Calendar view can size its blocks from it, and totals and averages read back in the same format you typed.
Type it the way you'd say it. 1:30 is an hour and a half, 90 is ninety
minutes, and 2h 15m, 45m and 1.5h all work too. Pick the Duration
format to control how values read back:
| Format | 1:23 means | 90 means | Reads back as |
|---|---|---|---|
| h:mm | 1 hour 23 minutes | 90 minutes | 1:30 |
| h:mm:ss | 1 minute 23 seconds | 90 seconds | 1:30:00 |
Same text, different meaning
A bare 1:23 is hours-and-minutes in h:mm and minutes-and-seconds in
h:mm:ss — so choose the format before bulk-entering or importing values.
Fully qualified input like 1:23:45 means the same thing in both.
Precision adds sub-second decimals (0, 0.0, 0.00, 0.000) and
applies only to h:mm:ss, where seconds are actually shown.
Converting a Number field to Duration
Duration values are stored in seconds. Converting an existing Number field
reinterprets each value as a count of seconds, so a "Minutes" field holding
50 becomes fifty seconds, not fifty minutes. Cheqq asks you to confirm
first — if the numbers meant minutes or hours, convert a copy and check it
before deleting the original.
Choice fields
Select and multi-select both offer a fixed list of options, each with a label and a color drawn from 12 named presets (blue, green, red, amber, purple, pink, teal, orange, cyan, indigo, lime, rose) — new options cycle through the palette automatically. Select allows one value per record; multi-select allows several.
Structured fields
- JSON — a raw structured value. Constrain what shape is accepted with a schema mode:
object,array, orany. - File — one or more attachments. Configure whether multiple files are allowed, which MIME types are accepted, and a per-file size cap in MB. Each attachment tracks its name, MIME type, size, and (for images/video) dimensions or duration, plus a thumbnail that generates asynchronously.
Relational fields
- Relation — links a record to one or more records in another collection. See Relations for linking modes, display fields, and two-way sync.
Field Agents
Long text, single/multi-select, number, percent, currency, image, and video fields can each be converted into a Field Agent that generates their value with AI instead of direct entry, and a dedicated Deep Match kind writes real linked-record IDs from a semantic search. See Field Agents for output kinds, run modes, and examples.
System attribution fields
These fields are populated automatically by Cheqq and are always read-only in the grid — you can add them to a collection, but you can't type a value into them directly.
| Type | Populated with |
|---|---|
| Created by | Who created the record |
| Last modified by | Who last edited the record |
| Created time | When the record was created |
| Last modified time | When the record was last edited |
| User | A member reference you assign — configure whether it tracks all fields on the record or only specific ones you pick |
Notify on add is reserved
The User field type has a "notify on add" option in its configuration. It's present in the schema for an upcoming phase but doesn't send a notification yet — treat it as a no-op today.
Computed fields
Lookup, rollup, and formula fields calculate their value from other fields rather than storing direct input, and are always read-only in the grid. See Computed fields for how each works, with formula examples.
Choosing a primary field
Every collection has one primary field — the value shown as a record's title across relations, kanban cards, and list rows. Only single-value, directly-entered types are eligible: Text, Number, Duration, Date, URL, Email, and the system attribution types. Long text, Checkbox, Select, Multi-select, JSON, Relation, File, and all computed fields can't be the primary field. If a record's primary field is empty, Cheqq shows it as "Unnamed record" wherever it's referenced.
Example: a Deals collection
A simple CRM "Deals" collection might combine:
- Deal name (Text, primary field)
- Amount (Number, currency format, USD)
- Stage (Select — New, Qualified, Proposal, Won, Lost)
- Contact (Relation → Contacts collection, single link)
- Days in stage (Formula, computed from a date field — see Computed fields for the expression)
Continue with Layout types to see how this data can be viewed.