Skip to main content

Progression Events


Use this event to track when players start and finish levels in your game. This event follows a 3 hierarchy structure (for example World, Level and Phase) to indicate a player’s path or place in the game.

This type of events can be used for calculating metrics such as how many levels were started on a day and not only.

“Progress” could mean things like levelling up, completing quests, completing missions, or completing milestones. You can ONLY track one type of progression with this event. For example, if you have levels and quests in your game, the progression event should only be used for either tracking levels or quests, but not both. Use Design Event and/or Custom Dimensions to track a secondary progression concept, if need be.

Example A: A players starts Day 1 of the Wild West world in Plants vs. Zombies 2.
Example B: A player completes the “Enter a Competition” quest in My Horse by entering the Europe competition.

FieldExample AExample B

For these events, you can send:

All three levels of the hierarchy structure (progression01, progression02 and progression03) OR you can send just progression01 and progression02 OR you can send just progression 01.


The purpose of this section is to expose more examples of custom events in GameAnalytics and how they should be sent, from the planning phase up to aggregation and visualisation part in the tool.

We illustrate the generation of these events with examples from our Unity SDK. The examples can be implemented in any other official GameAnalytics SDK by using the equivalent methods.

Progression events are specialized design events for tracking the progress of players. They contain 3 event parts called progression01, progression02 and progression03. They also come with 3 statuses for determining the stage of progress: start, complete and fail.

We propose the following scheme to implement and see the results in the GameAnalytics dashboards.

Progression Events Example

Let’s have a look at how a progression event can be sent via code with the Unity SDK:

GameAnalytics.NewProgressionEvent (GAProgressionStatus.Start, "World_01", "Stage_01", "Level_Progress"); // without score

GameAnalytics.NewProgressionEvent (GAProgressionStatus.Complete, "World_01", "Stage_01", "Level_Progress", 200); // with score

Once the events are aggregated, the custom metrics automatically generated for each status of each progression can be compared under the same plot.

For instance, in the code snippet we can see a comparison between the aggregated “Start” and “Complete” progression events for the “Stage_01” actions enumerated in the proposed scheme.


Let’s create a use case for Progression Events:

We want to track user progression throughout the levels. Players can also upgrade their weapons, armor, both (gear) and not upgrade at all when playing the level. Each of these upgrades would give them a bonus to help them complete the level. How can we track the average score per level at an upgrade granularity? How does the score differ between each upgrade? Which upgrades are more/less balanced?

When creating this structure, we need to account for the parameters we want to track. We want to track the:

  • World
  • Level
  • Type of Weapon/Armor Upgrade
  • Specific Weapon/Armor Upgrade

Levels would be under worlds, weapon types under levels, specific weapons under weapon categories etc. This would follow the [category]:[sub_category]:[outcome] hierarchy. The problem with this is that progression events only allow 3 parameters (in contrast to design events which allow 5). As a solution, we can merge the World_X & Level_X parameters into 1, so instead of having 2 separate ones, we would just use “World4_Level_6”. An example of how we could implement this would be:

Progression Events Hierarchy

This example also demonstrated how you can work around certain situations, where you can merge specific parameters if possible to meet the SDK requirements. Unity SDK Example:

GameAnalytics.NewProgressionEvent (GAProgressionStatus.Complete,"World1_Level2","WeaponUpgrade","Sword", 65);

The example above would be triggered when the player completes Level 2 in World 1, whilst using the Sword weapon upgrade. The player also achieved a score of 65.