> ## Documentation Index
> Fetch the complete documentation index at: https://docs.terminus.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Other computed fields

> A tour of the standalone computed fields (concatenation, auto number, random, constant, Terminus ID): what each one generates and when to reach for it.

<Info>
  Computed fields generate their own value. Submitters never type into them. They are always required, can be hidden from the form, and their value is produced by the system at submission time.
</Info>

The [tutorial](/tutorial/07-computed-fields) builds the URL-shaped computed fields ([Tagged URL](/reference/fields/tagged-url), [Short URL](/reference/fields/short-url), [QR Code](/reference/fields/qr-code)). This page covers the other computed types: one that composes other fields, and four that stand alone.

| You need                                                            | Use                                              |
| ------------------------------------------------------------------- | ------------------------------------------------ |
| Join several fields into one value (a campaign name, an asset code) | [Concatenation](/reference/fields/concatenation) |
| Sequential, padded numbers                                          | [Auto Number](/reference/fields/auto-number)     |
| An unpredictable token per record                                   | [Random](/reference/fields/random)               |
| The same fixed value on every record                                | [Constant](/reference/fields/constant)           |
| The record's built-in unique identifier                             | [Terminus ID](/reference/fields/terminus-id)     |

All five are created the same way: open your governance model, add a field, pick the type, and fill in its settings. The type cannot be changed after the field is created, so choose deliberately.

## Concatenation: join other fields

Concatenation builds one value by stitching the rendered values of other fields together with a separator. It is the workhorse for assembling a campaign name or an asset code from its parts.

The settings are an ordered list of `parts` (each part points at another field), a `separator` placed between them, and a choice about what to do with empty parts:

* `remove_extra_separators` collapses the separators around any part that came out empty, so you never get `summer__email` with a doubled separator.
* `empty_field_replacement` substitutes a placeholder for an empty part instead. These two are mutually exclusive: pick one.

```yaml theme={null}
name: campaign_name
type: concatenation
settings:
  separator: "_"
  remove_extra_separators: true
  parts:
    - { type: field, value: <season field> }
    - { type: field, value: <channel field> }
    - { type: field, value: <region field> }
```

With `season=summer`, `channel=email`, `region=us`, the field renders `summer_email_us`. Leave region empty and `remove_extra_separators` keeps it clean as `summer_email`. See the [Concatenation reference](/reference/fields/concatenation).

## Auto Number: sequential, padded numbers

Auto Number stamps each new record with the next integer in a sequence. Set the `start_value` (required) and an optional `padding` (0 to 10 digits) to zero-pad the result.

```yaml theme={null}
name: asset_number
type: auto_number
settings:
  start_value: 1
  padding: 5
```

Records get `00001`, `00002`, `00003`, and so on. The counter belongs to the field, so every taxonomy that uses this field draws from the same running sequence. See the [Auto Number reference](/reference/fields/auto-number).

<Warning>
  Raising `start_value` later jumps the sequence forward. Lowering it below the highest number already issued is ignored, so the field never hands out a duplicate.
</Warning>

## Random: an unpredictable token

Random generates a one-off string per record. Set the `length` (1 to 50) and turn on at least one character class: `include_numbers`, `include_lowercase`, `include_uppercase`.

```yaml theme={null}
name: access_code
type: random
settings:
  length: 8
  include_numbers: true
  include_lowercase: false
  include_uppercase: true
```

Each record gets its own value, for example `K7P2QXM9`, generated once and then preserved. Reach for Random when you want an unguessable code.

<Warning>
  Random values are not checked for collisions. If you need a value that is guaranteed unique, use [Terminus ID](/reference/fields/terminus-id) or [Auto Number](/reference/fields/auto-number) instead.
</Warning>

See the [Random reference](/reference/fields/random).

## Constant: a fixed stamp

Constant writes the same `value` onto every record. It is useful as a version tag, a fixed brand or region marker, or a literal segment inside a [Concatenation](/reference/fields/concatenation).

```yaml theme={null}
name: schema_version
type: constant
settings:
  value: "v2"
```

Every record reads `v2` until you change the field. See the [Constant reference](/reference/fields/constant).

## Terminus ID: the record's built-in identifier

Every record carries a globally unique, immutable identifier in the form `trm0` followed by lowercase letters and digits (for example `trm0kf8m2a1q`). A Terminus ID field surfaces that identifier as a column. It has no settings.

```yaml theme={null}
name: record_id
type: terminus_id
```

Use it when you need a stable handle to join records to an external system, or to reference records elsewhere in the platform. See the [Terminus ID reference](/reference/fields/terminus-id).

## Gotchas

* **Computed fields are always required and never editable by submitters.** The required toggle is locked on. You can hide a computed field from the form (it still generates its value), but you cannot make it optional.
* **The type is fixed once created.** If you picked the wrong computed type, delete the field and add a new one. Delete is blocked while the field is still referenced by a taxonomy.
* **Auto Number shares one counter across taxonomies.** Two taxonomies using the same Auto Number field interleave into a single sequence, they do not each restart at `start_value`.
* **Random is not unique.** Treat it as a token, not a key. Use Terminus ID or Auto Number when uniqueness matters.
* **Concatenation needs its parts in the taxonomy.** Every field a Concatenation references must also be present in the same taxonomy, or publishing fails with a missing-dependency error. Choose either `remove_extra_separators` or `empty_field_replacement`, not both.
* **No prefix or suffix on Terminus ID.** The other computed types on this page (concatenation, auto number, random, constant) do accept a prefix and suffix, so you can wrap their value with literal text if you want.

## Related

* [Fields reference](/reference/fields)
* [Tutorial Part 7: Computed fields](/tutorial/07-computed-fields)
* [Tagged URL](/recipes/tagged-url-utm) and [Short URL slug modes](/recipes/short-url-slug-modes)
