Skip to main content

Design Events

Design events are used to track any custom, game-specific interaction not covered by our other event types (e.g. tutorial steps, feature use, player choices).

  • Using our other, prescriptive event types (like Ad, Business or Resource) gives you access to dashboards that are pre-populated with relevant KPIs. Design events, by contrast, are fully custom. You’ll need to create your own dashboards and visualizations to analyze them.
  • Tracking levels, worlds, or missions? Use Progression events instead — they’re designed specifically for structured progression tracking.
info

These events must be manually implemented. Refer to the SDK Documentation for code examples specific to your platform (Unity, Unreal, Roblox, iOS, Android, etc.).

Design Event Fields

FieldDescriptionTypePossible ValuesRequired
categoryEvent categorystringdesignYes
event_idA colon-separated string of up to 5 segments that define the event hierarchy.
Each level in the hierarchy will form a part in the name of the event. See below for more on event hierarchies
stringe.g. kill:robot:largeYes
valueA field for numeric data, like time, damage or scoresfloatAny numeric valueNo

Design Event Examples

ExamplecategoryeventIDvalue
A user completes the first step in your tutorial by naming their characterdesigntutorial:namedCharacter:complete-
A user chooses to pursue a specific quest optiondesignquest1:dialogueChoice:aggressive, quest1:dialogueChoice:neutral-
A user defeats an enemy in an open world gamedesignenemyDefeated:normal:orc, enemyDefeated:boss:dragon14 (e.g. tracks the hits required to defeat the enemy)

Example Design Event Hierarchy

A game that rewards players with achievements for reaching certain milestones.

Design Events Hierarchies

Best Practices for Design Events

Due to cardinality limitations, it is important not to generate an excessive amount of unique nodes in your event tree hierarchies. Below are some tips and best practices to help structure your Design events to avoid this:

  • Follow a consistent naming structure, e.g. [category]:[sub-category]:[outcome]
  • Use the value field for any dynamic data, e.g. time spent, damage, scores.
  • Tracking positions or movement?
    Don’t send raw map coordinates in the event_id. Instead, group locations into logical areas (e.g. swamp, forest, forest_house, etc.), and use the value field to report time spent.
    Example: event_id = action:shooting:swamp, value = 92.5 (seconds)
  • Tracking hundreds of items or user-generated content?
    Avoid using item names or user IDs in the event_id. Aggregate into types or genres (e.g. ugc_video, ugc_photo, ugc_song) instead.
  • Tracking levels or game stages?
    Use Progression Events, which are optimized for this type of data and will pre-populate your Progression related KPIs in the AnalyticsIQ UI.
info

If you’re tracking anything likely to cause high cardinality, record it in a Custom Event Field and analyze it in PipelineIQ. This keeps your event structure clean and ensures accurate analysis without UI-side data loss.