Event definition guide

note
The event dictionary is a work in progress, and this process is subject to change.

This guide describes the event dictionary and how it’s implemented.

Event definition and validation

This process is meant to document all internal events and ensure consistency. Every internal event needs to have such a definition. Event definitions must comply with the JSON Schema.

All event definitions are stored in the following directories:

Each event is defined in a separate YAML file consisting of the following fields:

FieldRequiredAdditional information
descriptionyesA description of the event.
categoryyesAlways InternalEventTracking (only different for legacy events).
actionyesA unique name for the event.
identifiersnoA list of identifiers sent with the event. Can be set to one or more of project, user, or namespace.
product_sectionyesThe section.
product_stagenoThe stage for the event.
product_groupyesThe group that owns the event.
milestonenoThe milestone when the event is introduced.
introduced_by_urlnoThe URL to the merge request that introduced the event.
distributionsyesThe distributions where the tracked feature is available. Can be set to one or more of ce or ee.
tiersyesThe tiers where the tracked feature is available. Can be set to one or more of free, premium, or ultimate.

Example event definition

This is an example YAML file for an internal event:

description: A user visited a product analytics dashboard
category: InternalEventTracking
action: user_visited_dashboard
identifiers:
- project
- user
- namespace
product_section: dev
product_stage: analyze
product_group: group::product analytics
milestone: "16.4"
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/128029
distributions:
- ee
tiers:
- ultimate