# Choosing a Field Type _A guide to selecting the right field type for your data._ --- ## Overview When you add a field to a form in the Notebook Editor, the [ADD A FIELD dialog](../shared-settings/adding-a-field.md) presents nearly two dozen field types across eight tabs. This guide helps you choose the right one by matching your data requirements to specific fields. It covers design principles, a quick comparison of every field type, and decision logic organised by the kind of data you need to capture. For a complete list of field types with links to configuration guides, see [Field Types](../index.md). For guidance on combining fields into effective forms, see [Form Design Patterns](../form-design/form-design-patterns.md). ## Design Principles Five principles will help you design forms that work well in the field: - **Minimise recording friction.** Reserve fields for information only humans can provide — the platform automatically captures user identity, timestamps, and location. Design for environmental extremes: bright sunlight, rain, cold fingers, and gloved hands. - **Prefer controlled vocabularies over free text.** Structured choices prevent errors at the point of collection, support cross-project comparability, and make exported data immediately ready for analysis. Use an "Other" option to handle exceptions. - **Design for the full data lifecycle.** Consider how data will be exported, analysed, and preserved. Automatic provenance (who, when, where) and navigable relationships between records save time downstream. - **Use progressive disclosure.** Keep forms simple by default, and reveal detailed fields only when needed — for example, showing measurement fields only when a "Record detailed measurements?" checkbox is ticked. - **Expect the unexpected.** Controlled vocabularies and tight form structure are essential for analysis-ready data, but fieldwork always produces serendipitous discoveries and unanticipated complications. Build in escape valves: include a free-text observations field at the record level for general notes, and enable Annotation and Uncertainty on individual fields so collectors can flag unusual values, note recording conditions, or document exceptions without breaking the structured data. These are your "margins of the page." ## Quick Comparison The tables below summarise every field type by category, matching the tabs in the ADD A FIELD dialog. ### Text | Field Type | Purpose | Good For | | ---------------------------------------------------------------- | -------------------------- | ----------------------------------------------- | | **Text field** (single-line) | Brief text entry | Codes, identifiers, short labels | | **Text field** (multi-line) | Extended text entry | Narrative descriptions, observations | | **[Email](../text-fields/email-field.md)** | Validated email input | Contact addresses | | **[Templated String](../text-fields/templated-string.md)** | Auto-generated text | Human-readable record identifiers | | **[QR / Barcode Scanner](../text-fields/qr-barcode-scanner.md)** | Camera-based scanning | Specimen barcodes, equipment tags (mobile only) | | **[Address](../text-fields/address.md)** | Structured address capture | Site locations, property details | > **Note:** A single **Text field** entry in the chooser now covers both > single-line and multi-line text — enable the multi-line option in the field > settings for extended narrative. The legacy > [FAIMS Text Field](../text-fields/faims-text-field.md) and > [Multi-line Text Field](../text-fields/multiline-text-field.md) entries are > deprecated; existing fields remain supported. ### Numbers | Field Type | Purpose | Good For | | -------------------------------------------------------------------------- | ---------------------------------- | ----------------------------------------------------- | | **[Number Input](../number-fields/number-input.md)** | Numeric entry with optional bounds | Measurements, counts, ratings, percentages, pH (0–14) | | **[Auto Incrementing Field](../number-fields/auto-incrementing-field.md)** | Sequential identifiers | Specimen numbers, catalogue IDs | | **[Percentage Slider](../number-fields/percentage-slider.md)** | Slider percentage entry | Canopy cover, quick 0–100 estimates | > **Note:** [Controlled Number](../number-fields/controlled-number.md) is > deprecated; existing fields remain supported. Use **Number Input** with > minimum and maximum bounds for new bounded-numeric fields. ### Date and Time | Field Type | Purpose | Good For | | --------------------------------------------------------------- | ------------------------------------------------------ | ---------------------------------------------------- | | **[Date time picker](../date-time-fields/date-time-picker.md)** | Date and time selection, optional one-tap "Now" button | Observation moments, event timing, scheduled records | | **[Date picker](../date-time-fields/date-picker.md)** | Date-only selection | Excavation dates, permit dates | | **[Month picker](../date-time-fields/month-picker.md)** | Month-and-year selection | Seasonal data, approximate dates | > **Note:** [Date and Time with Now button](../date-time-fields/date-time-now.md) > is deprecated as a separate field type; existing fields remain supported. > Use **Date time picker** with **Show "Now" button** enabled for new > one-tap-timestamp fields. ### Media | Field Type | Purpose | Good For | | --------------------------------------------------- | --------------- | ------------------------------------ | | **[Take Photo](../media-fields/take-photo.md)** | Camera capture | Context photos, specimen images | | **[Upload a File](../media-fields/attach-file.md)** | File attachment | PDFs, spreadsheets, audio recordings | ### Location | Field Type | Purpose | Good For | | ------------------------------------------------------ | ------------------------- | ------------------------------------ | | **[Take point](../location-fields/take-gps-point.md)** | Single coordinate capture | Find spots, sample locations | | **[Map field](../location-fields/map-input.md)** | Interactive map drawing | Site boundaries, transects, polygons | ### Choice | Field Type | Purpose | Good For | | -------------------------------------------------------------------------- | ------------------------ | --------------------------------------- | | **[Select one option](../choice-fields/radio-group.md)** | Visible single selection | Yes/no flags, short lists of 2–10 items | | **[Select Multiple](../choice-fields/multi-select.md)** | Multiple selection | Multi-attribute recording | | **[Select Field (Hierarchical)](../choice-fields/hierarchical-select.md)** | Nested vocabulary tree | Taxonomies, large lists (>20 items) | > **Note:** [Checkbox](../choice-fields/checkbox.md) and > [Select Field](../choice-fields/select.md) are deprecated; existing fields > remain supported. Use **Select one option** for new yes/no toggles and > single-selection lists. ### Relationship | Field Type | Purpose | Good For | | ------------------------------------------------------------------- | -------------------------- | ----------------------------------- | | **[Add Related Record](../relationship-fields/related-records.md)** | Bidirectional record links | Parent–child and peer relationships | ### Display | Field Type | Purpose | Good For | | ---------------------------------------------- | ---------------------- | ------------------------------ | | **[RichText](../display-fields/rich-text.md)** | Formatted instructions | Procedures, warnings, headings | ## Which Field Type Do I Need? Work through the section that matches your data type. Each one walks you through the key decisions. ### Text and Identifiers If a value, e.g., for an identifier, can be **generated automatically** from other fields — such as a feature identifier combining an auto-incrementing feature number plus the feature type — use a **[Templated String](../text-fields/templated-string.md)**. Doing so produces a _human-readable record identifier (HRID)_, which is essential; without one, the system defaults to opaque UUIDs. If a **controlled vocabulary** exists or could be developed for the data, use a choice field (see [Choices and Controlled Vocabularies](#choices-and-controlled-vocabularies) below). If the text is **predictably brief** (under about 100 characters) — a code, a name, a short label — use a **Text field** with the multi-line option left off (the default). If you expect **extended narrative**, like paragraph-length descriptions or detailed observations, use a **Text field** with the **multi-line** option enabled and set **Rows to display** to the desired initial height. If the value can be **read from a physical label** — such as a QR code on a sample bag or a barcode on equipment — use **[QR / Barcode Scanner](../text-fields/qr-barcode-scanner.md)** (mobile only). This eliminates transcription errors for pre-labelled items. For **specialised validation**, use the matching field type: - Email addresses → **[Email](../text-fields/email-field.md)** - Physical addresses → **[Address](../text-fields/address.md)** ### Numbers If the value has **known valid ranges** (e.g., pH 0–14, percentage 0–100), use a **[Number Input](../number-fields/number-input.md)** and configure its minimum and maximum bounds. Number Input enforces the same range constraints that the deprecated Controlled Number field provided. For **percentage-style values** where a **slider** is clearer than typing, use a **[Percentage Slider](../number-fields/percentage-slider.md)** — integer values on a configurable 0–100 scale with optional step size (for example steps of 5 or 10). If the value is a **sequential number**, e.g., for an identifier (specimen 001, 002, 003…), use an **[Auto Incrementing Field](../number-fields/auto-incrementing-field.md)**. Be aware that the sequence cannot be reset mid-project, but that different devices can be assigned different ranges for the same field. For **general numeric data** — measurements, counts, calculations — use a **[Number Input](../number-fields/number-input.md)**. ### Dates and Times Choose based on the level of temporal detail you need: - **Date and time** (any combination — current moment, historical, scheduled) → **[Date time picker](../date-time-fields/date-time-picker.md)** — the recommended date-and-time field. Enable **Show "Now" button** for one-tap capture of the current timestamp; leave it off if collectors will only enter specific dates manually. - **Date only** (excavation date, permit date) → **[Date picker](../date-time-fields/date-picker.md)**. - **Month and year only** (seasonal records) → **[Month picker](../date-time-fields/month-picker.md)**. > **Note:** [Date and Time with Now button](../date-time-fields/date-time-now.md) > is deprecated as a separate field type. Existing fields keep working; for > new forms, use **Date time picker** with **Show "Now" button** enabled. ### Choices and Controlled Vocabularies The number of options and the selection type determine which field to use: **For single selection:** - **2 states (yes/no, present/absent)** → **[Select one option](../choice-fields/radio-group.md)** with two choices such as "Yes" and "No". - **ca. 2–10 options** → **[Select one option](../choice-fields/radio-group.md)** — all choices are visible, making selection fast on mobile. - **Many options or hierarchical structure** → **[Select Field (Hierarchical)](../choice-fields/hierarchical-select.md)** — supports searching and tree navigation. > **Note:** [Checkbox](../choice-fields/checkbox.md) and > [Select Field](../choice-fields/select.md) (the legacy dropdown) are > deprecated. Existing fields keep working; for new forms use **Select one > option** instead. **For multiple selection:** - Use **[Select Multiple](../choice-fields/multi-select.md)** regardless of list size. Configurable as a dropdown or expanded checklist. For fewer than about 10 options, the expanded checklist works well. ### Photos and Files - **Photographs in the field** → **[Take Photo](../media-fields/take-photo.md)** — integrates with the device camera and preserves GPS metadata on mobile. Can also upload photos, supporting workflows that mix on-device and external cameras. - **Documents, drawings, or other files** → **[Upload a File](../media-fields/attach-file.md)** — accepts any file type. On mobile, prefer **[Take Photo](../media-fields/take-photo.md)** for photography workflows that may involve image capture with the on-device camera. On desktop, use **[Upload a File](../media-fields/attach-file.md)** for diverse document and media types. ### Location and Spatial Data - **A single GPS coordinate** → **[Take point](../location-fields/take-gps-point.md)** — one-tap capture with accuracy metadata. - **Boundaries, transects, or areas** → **[Map field](../location-fields/map-input.md)** — draw points, lines, and polygons on a base map. Requires an internet connection for initial tile loading (offline maps are experimental). - **Both point and area data** → combine both field types in the same form. > **Note:** location accuracy is better on mobile devices than > on desktop browsers. ### Record Relationships - **Parent–child or peer connections** between records → **[Add Related Record](../relationship-fields/related-records.md)** — creates bidirectional links with defined relationship types. ## Common Mistakes - **Using free text when a controlled vocabulary would work.** This creates inconsistent data that requires extensive cleaning. Add an "Other" option to controlled lists for exceptions. - **Requiring unnecessary precision.** Do not demand exact measurements when estimates suffice, or impose ranges that are too tight — match precision to your actual research needs. - **Ignoring platform constraints.** QR / Barcode Scanner is mobile only; Map field requires an internet connection; location accuracy in the web app on desktop may be poor. Design for your actual deployment platform. - **Over-using required fields.** Marking fields as required "just in case" antagonises users if applied to minor omissions, and too many alerts in the interface hide the important ones. Only require fields that are truly essential. - **Creating deeply nested relationships.** Avoid nesting beyond three or four levels — it makes navigation cumbersome in the field. - **Designing only for desktop.** Test your form on the actual mobile devices your team will use. - **Insufficient testing before deployment.** Deploy your {{notebook}} under realistic conditions well before fieldwork begins. Problems that are invisible on a desktop — awkward field order, missing vocabulary options, impractical required fields — only surface when someone fills in real data on a mobile device at a real site. Discovering these issues mid-campaign is costly to fix. ## Things to Keep in Mind - **Every form needs a human-readable identifier.** Without a **[Templated String](../text-fields/templated-string.md)** configured as the HRID, records appear as opaque identifiers (e.g., "rec-5f8a9b3c"). A dedicated HRID guide is planned. - **[QR / Barcode Scanner](../text-fields/qr-barcode-scanner.md) is mobile only.** It will not function on desktop browsers. - **[Map field](../location-fields/map-input.md) requires an internet connection** for initial tile loading. Offline map support is experimental. - **Plan your vocabularies before building.** The display label and stored value are always the same — what users see is exactly what appears in exported data. - **Each record type exports as a separate CSV.** Relationships are preserved through identifier columns. Plan your data model with export in mind. For guidance on combining fields into effective forms, see [Form Design Patterns](../form-design/form-design-patterns.md).