Field settings
Select a field in the builder to edit it in the Field settings panel on the right.
Settings every field has
Section titled “Settings every field has”- Field key: a short
snake_caseidentifier, unique within the survey type. It is how the value is stored, so it is worth keeping stable. - Label: the field’s name, in English (required) and optionally French and Spanish.
- Help text (optional): a hint shown beneath the field, in the same languages.
- Required: whether the field must be filled in.
- Capture tool: the on-device camera tool this field offers during collection (scan a barcode or tag, and more as they arrive), or none. See Choose a capture tool below.
- Section: which section the field belongs to, if you use sections.
Below these, the panel shows type-specific options: a range for a number, the choices for a single or multiple choice, the geometry kind for a location, and so on. See Field types for what each type offers.
Choose a capture tool
Section titled “Choose a capture tool”When you collect with the voice helper (see AI-assisted data collection), a field can offer a camera tool, so you point the camera at the thing itself instead of typing. The Capture tool setting decides which tool a field offers:
- Barcode / tag scan: read a barcode or QR code, for an id or tag field.
- Measure: read a length from a photo. It needs a one-time calibration per device first (Settings, Measurement calibration), where you photograph a reference of known length so the app learns the scale.
- Identify species, Read text (OCR): being added, and will work when they are ready.
- None: no camera tool, which is the default for most fields.
The builder pre-fills a suggestion from the field, for example a barcode for a “specimen tag” field or none for a notes field. Confirm it or change it. Collection reads this setting as you set it, so it never guesses a tool from the field’s name: a notes or date field shows no scan button unless you ask for one.
Group fields into sections
Section titled “Group fields into sections”A long form reads better in sections. In the builder, open Sections (optional) and choose Add section, then give the section a title (in your languages). Assign a field to a section from its Section setting. Fields with no section render together at the top. Removing a section leaves its fields in place, just ungrouped.
Show a field only when it applies
Section titled “Show a field only when it applies”Every field has a Show this field when setting. Leave it on “Always show”, or pick another field and a condition, so the field appears only when that condition is met. For example, show a “number of redds” field only when “species” is a salmon, or show a “mortality cause” field only when “alive” is no.
The form evaluates these conditions live as you enter data, hiding and showing fields as the answers change, and it only validates and saves the fields that are visible.
Unit of measure
Section titled “Unit of measure”A Decimal number field can carry a unit of measure, so the crew enters in the unit they work in while the value is stored in one canonical unit. This keeps stored data and exports consistent no matter what unit was typed.
What you configure:
- The canonical (storage) unit, for example
m. - The accepted units, each with a conversion factor (one entered unit equals this many canonical units,
so 1
fm= 1.8288m) and an optional offset for affine scales like Fahrenheit. - The default entry unit the form opens in.
- Optional physical minimum and maximum bounds.
On the form the field then shows a value box plus a unit selector. Someone can type a depth in fathoms and CensusIO stores it in metres, and switching the selector re-expresses the same measurement. The value reads back in the entry unit everywhere it is shown.
Number display and input format
Section titled “Number display and input format”Numbers are stored plainly (the value alone, no separators) and shown in the reader’s own language. By
default a number groups thousands and shows the decimals it needs, so a count reads 1,234 in English and
1 234 in French. The Display section on a Whole number or Decimal number field lets you adjust two
things, and both are display only: they never change what is stored.
- Group thousands. On by default. Turn it off for a field where a separator would be wrong, like a year
or a sequence number, so
2026does not read as2,026. - Least and most decimals. Pad a value to a fixed number of decimal places (a weight that should always
read
2.50, not2.5) and round the shown value to at most that many. This is separate from the Range decimal limit, which only rejects an entry with too many places; padding for display is set here.
An empty number box hints its shape as ### for a whole number or ###.# for one decimal, in the locale’s
decimal mark, so a person sees how many decimals it takes before typing.
Entry mask for a formatted identifier
Section titled “Entry mask for a formatted identifier”A Text field can carry an entry mask for a formatted identifier such as a phone number, a permit, or a
tag id. Write the shape with 9 for a digit, a for a letter, # for either, and any other character as a
literal shown in place. For example (999) 999-9999 shows as (___) ___-____ and accepts ten digits.
What is stored is the filled positions alone (4155551234), so the value stays comparable and exportable no
matter how it was typed, and any pattern rule you set still checks that stored value. A half-filled mask is
reported as an error, not accepted as a shorter value.
Must be unique across records
Section titled “Must be unique across records”Turn this on for an identifier that no two records should share (a marker, buoy, or tag number). It is available on Text, Whole number, and Decimal number fields.
- Unique among: choose All records of this type, or Records of the same trip (which uses the type’s Trip field to scope the check; the builder warns if the type has no Trip field).
- Released when (optional): pick a field and a value at which a record gives its value up, so the value can be reused. For example, an abandoned deployment releases its marker for the next one.
Saving a value another record already holds is blocked in the web app and on import. Records synced from field devices are never blocked (field data is never stranded); instead the Data check flags a value two records ended up holding, for review. On a field device (the desktop and mobile apps), capturing a value that another record on that device already holds shows a warning so the collector notices, but it never blocks the save (the device sees only its own records, so the Data check remains the authority across the whole team).
Auto-fill a location from device GPS
Section titled “Auto-fill a location from device GPS”A point Location field can fill itself from the device’s GPS when the form opens, so a collector at a station does not type coordinates by hand. Turn on Auto-fill from device GPS in the Location field’s settings. When the field opens empty in the web or desktop app, it reads the device position once (it asks permission the first time) and records it, along with how accurate the fix was. The Use my location button stays available to capture again.
This is a field setting, offered for point locations (it captures a single position, so it does not apply to a line or shape). It reads the device’s own GPS; a later release can bind other position instruments.
Distance from another location
Section titled “Distance from another location”A point Location field can warn (or block) when its point sits too far from the point in another Location field of the same record, which catches a mistyped coordinate (an instrument logged far from where the gear went in).
What you set:
- The other Location field to measure from.
- The limit in metres.
- The severity: a warning that still lets the record save, which is the default, or an error that blocks it.
The check stays quiet unless both points are present. Prefer a warning if any location on the form can be hidden by a condition, so it never blocks a save against a value the collector cannot see.
This is field configuration, so there is no separate rule to write. You edit it in the Location field’s
settings (via the builder, or the survey type JSON with a maxDistanceFrom block):
{ "field": "start_position", "limitM": 926, "severity": "warning" }