Search the documentation

Find a page by title or section.

Data

Custom fields

Typed fields you define yourself and attach to core records, then fill in on forms, load through imports, and filter lists by.

Updated

A custom field is an extra piece of information you decide a record should carry — a delivery zone on a destination, a fuel-card number on a vehicle, a gate code on a stop. You define it once for an entity, and from then on it appears on that entity’s forms, in its import template, as an optional list column, and as something you can filter by.

Who can do this

Role
Administrators
Permission
custom-fields:readcustom-fields:write

Destinations, origins and tasks accept custom fields for every tenant. The other entities are behind the custom_fields_expansion feature, and the settings page only lists the ones your tenant is entitled to.

Behind the custom_fields_expansion feature flag. Ask support to enable it for your organisation.

Define a field

Fields are defined per entity, in one place, and take effect immediately.

  1. 1

    Open the custom fields area

    Customization → Data & language → Custom Fields

    The entity list is server-driven: it shows exactly the entities your tenant can attach fields to, labelled with your own terminology.

  2. 2

    Give the field a label and a type

    The label is what people see. Cooriroo derives a key from it — lowercase, underscores, starting with a letter — and that key is what the API, the import template and the filters use.

  3. 3

    For a select field, list its options

    Options are required for a select field and rejected for every other type. Removing an option later leaves records that already hold it readable and filterable — it stops being offered, it does not vanish.

  4. 4

    Archive rather than delete when a field falls out of use

    An archived field disappears from forms and filters while the values already stored stay legible, which matters for reports written months later.

Field types

TypeWhat it holdsStored as
TextFree-form textWhatever was typed, trimmed
NumberA decimal numberA canonical decimal string
DateA calendar dateISO YYYY-MM-DD
SelectOne value from the field’s optionsThe chosen option
BooleanA yes-or-no flagtrue or false
The five field types. The type decides how a value is normalised and which filters apply.

Which records can carry fields

Available to every tenant: destinations, origins and tasks.

Behind the expansion feature: vehicles, trips, trip stops, users, work orders, inspections, shifts, maintenance logs and service schedules.

Drivers are a special case worth knowing. A driver is a user, so a driver’s custom fields are defined on the User entity, not a separate driver one — which is also why the driver import template picks up the user fields.

Filtering a list by a custom field

List pages that support custom fields show a filter control once you have at least one active definition for that entity. You pick a field, pick an operator, and give it a value; several filters combine with AND. Which operators are offered depends on the field’s type — there is no "greater than" on a text field because there is no order to compare against.

OperatorMatches whenField types
EqualsThe value is exactly the operandAll
Not equalsThe value differs, or the field is unsetAll
ContainsThe value contains the text, ignoring caseText, select
Does not containThe text is absent, or the field is unsetText, select
Starts withThe value begins with the textText, select
Ends withThe value ends with the textText, select
Is any ofThe value is one of a list you giveAll but boolean
Is none ofThe value is in none of the list, or is unsetAll but boolean
Greater thanThe value is above the operandNumber, date
Greater or equalThe value is at or above the operandNumber, date
Less thanThe value is below the operandNumber, date
Less or equalThe value is at or below the operandNumber, date
BetweenThe value lies within two bounds, inclusiveNumber, date
Is setThe field is present, whatever its valueAll
Is not setThe field is absent from the recordAll
Is emptyThe field is present but blankAll but boolean
Is not emptyThe field is present and not blankAll but boolean
The seventeen filter operators and the field types each one applies to.

Where else fields show up

  • Import templates: every active field becomes a column, keyed by its slug and labelled with its label. Blank cells never clear a stored value, so a partial file is safe.
  • List tables: a summary badges column plus one hidden-by-default column per field, which you turn on from the Columns control.
  • The trip PDF report: trip fields are resolved to their labels, including archived ones, so an old report still reads correctly.

Limits

  • 20 fields per record by default; your plan may set a different cap per entity.
  • 100 definitions per entity type.
  • Keys: 60 characters, matching ^[a-z][a-z0-9_]*$. Labels: 100 characters.
  • Values: 500 characters.
  • Select options: 100 per field.
  • Filtering: at most 25 custom-field filters on one request, and at most 50 values in an "is any of" or "is none of" list.

Terminology

Your organisation can rename these. If your screens say something else, this is what they mean here.

Destination
The custom fields settings page labels each entity with your term, so this row reads "Client" or "Site" if that is what you call it.Rename it in Settings → Terminology
User
Deliberately not renamed with your driver term: user fields cover admins as well, and calling them driver fields would mislead.Rename it in Settings → Terminology