Skip to main content

Overview

Tags are flexible, lightweight labels you assign to CXF objects to organize and find them. Unlike Taxonomies, tags are global — they’re shared across every object and aren’t restricted by Template or object type. Tags can be hierarchical (parent-child, with a full path like Technology/AI/Machine Learning) and can be created on the fly as you type. For the mental model, see Core concepts.

Where to find it

Tags are managed entirely through the tag picker — there’s no separate admin screen, and you create, organize, and assign tags right there as you type. The picker appears in two places:
  • on a record, in the Authoring tab, and
  • on a Template or Profile, under Default tags.

Properties

A tag has the following properties:
PropertyTypeRequiredDescription
titlestringYesDisplay name. Can’t contain a /.
slugstringYesUnique identifier — letters, numbers, and hyphens only.
descriptionstringNoOptional description.
parent_idreferenceNoParent tag, for hierarchies.
visiblebooleanNoWhether the tag is shown to users (default true).
is_systembooleanNoMarks a built-in tag, protected from edit and deletion (default false).
created_atdatetimeAutoWhen the tag was created.
updated_atdatetimeAutoWhen the tag was last updated.
Like any object, a tag can also be extended with custom Attributes on top of these properties.

Hierarchies

A tag can have a parent_id, forming a parent-child tree. Each tag exposes a computed full path — the titles of its ancestors joined with /, for example Technology/AI/Machine Learning.
Tag chains. In the tag picker, typing a path that doesn’t exist yet — like Technology/AI/Machine Learning — creates the whole chain at once, each tag as the parent of the next.

Assigning tags

Set an object’s tags to a list of tag ids or slugs. An object can hold many tags at once.
Unknown tags are ignored, not rejected. If you assign a tag id or slug that doesn’t exist, it’s silently skipped — there’s no validation error. (This is the opposite of Taxonomies, which reject anything not allowed.)

Tags vs Taxonomies

TagsTaxonomies
ScopeGlobal — available everywhereRestricted per Template or object type
LocalizationNoYes (versions)
Create on the flyYes (type a new tag or path)No (created explicitly)
Unknown on assignmentSilently ignoredRejected
Best forFlexible, user-generated labelsControlled classification

Behaviour & rules

  • Multiple per object. An object can hold many tags at once.
  • title is required, up to 255 characters, and can’t contain a /.
  • slug is required and unique, using only letters, numbers, and hyphens (no spaces, slashes, or underscores).
  • parent_id must reference an existing tag, and a tag can’t be its own parent.
  • Immutable while in use. Once a tag is assigned to any object, its slug and parent_id can’t be changed — title, description, and visible still can.
  • System tags (is_system) can’t be updated or deleted.

Seeds

Tags travel between environments with Seeds as structural seeds (they aren’t template instances, so instance seeds don’t apply). Each tag is a tags item; hierarchies use parent_id, resolved with a reference helper:
[
  {
    "object_type": "tags",
    "data": { "title": "Technology", "slug": "technology", "visible": true }
  },
  {
    "object_type": "tags",
    "data": {
      "title": "Artificial Intelligence",
      "slug": "artificial-intelligence",
      "visible": true,
      "parent_id": "{{getRecordAttribute('tags', 'slug', 'technology')}}"
    }
  }
]

Governance & permissions

  • Only a super admin or Master can create, edit, and delete tags.
  • System tags (is_system) are protected from edit and deletion.
  • A tag that’s in use can’t be deleted.

API access

Assign tags by setting an object’s tags to a list of ids or slugs through the API reference. Tags themselves are created, updated, and deleted through the API, which also exposes creating a hierarchical chain from a path string.

Taxonomies

Structured, restricted classification — compared to flexible Tags.

Object types

Which object types support Tags.