Skip to content

Data Model

Events

Events are the raw data foundation for all platform metrics. Every user interaction and system action produces events that feed into KPI computation.

General Rules

  • Every event includes a timestamp
  • Frontend-triggered events use the client timestamp
  • Backend-triggered events use the server timestamp

Event Catalog

1. Discovery & Navigation

EventTriggerSourceDescription
game_impressionA game card is displayed in a listBackendCan be batched. Fired for Home, category, and recommendation lists
game_clickUser clicks a game card in a listFrontend
game_page_viewA game’s detail page is openedBackend
category_clickUser clicks a categoryFrontend

2. Game Loading

EventTriggerSourceDescription
game_loading_startGame iframe begins loadingFrontend
game_loading_endGame is fully loaded and playableFrontendUsed with game_loading_start to compute loading time

3. Focus & Visibility

EventTriggerSourceDescription
game_focused_startGame receives focus (tab visible, iframe active)Frontend
game_focused_stopGame loses focus (tab hidden, user switches away)Frontend

4. Gameplay

EventTriggerSourceDescription
gameplay_startGameplay beginsFrontendIntercepted from GameDistribution SDK. Future games will use a Playupi SDK
gameplay_stopGameplay endsFrontendUsed to compute session count and duration

5. Monetization

EventTriggerSourceDescription
show_adAn ad is displayed during gameplayFrontend

6. Feedback

EventTriggerSourceDescription
game_likeUser likes a gameFrontendTracked via POST /api/v1/games/:id/like, not via the event ingestion endpoint
game_dislikeUser dislikes a gameFrontendTracked via POST /api/v1/games/:id/dislike, not via the event ingestion endpoint

Note: Like/dislike actions use dedicated feedback endpoints (see API Reference) and are stored in the GameFeedback table, not in the raw events table. The likes/dislikes counters on the Game model and DailyMetric table are updated accordingly.


Metrics & KPIs

All metrics are computed over a time range (minimum granularity: 1 day).

Metrics can be segmented by platform (desktop / mobile).

Display modes:

  • Cumulative: total over the period
  • Average: mean per day or per player over the period

1. Engagement Metrics

MetricDefinitionDisplay
PlaysNumber of game sessions started. Counted from the first gameplay_start after a game loadsCumulative, daily average
DAU (Daily Active Users)Unique users who played per day per gameCumulative over period, daily average
ImpressionsNumber of times a game card was shown in a list. Based on game_impressionCumulative, average
CTR (Click-Through Rate)game_click / game_impressionPercentage

2. Performance Metrics

MetricDefinitionDisplay
PlaytimeAverage time spent playing. Computed only when: game is loaded, game is focused, gameplay is active. Uses all loading/focus/gameplay events ordered by timestampAverage per player
Engaged Players% of players with playtime >= 3 minutes. players_with_playtime_>=_3min / total_playersPercentage
Conversion% of page visitors who reach a loaded game. game_loading_end / game_page_viewPercentage
Retention D1% of players who replay the same game the next day. active_day_J_AND_J+1 / active_day_JPercentage
Retention D7% of players who replay within 7 days. active_day_J_AND_any_day_J+1_to_J+7 / active_day_JPercentage
Returning Users% of players who played the game before the analysis periodPercentage
RatingScore from likes and dislikes. like = +1, dislike = -1. Exact formula may evolveScore
Loading TimeAverage load duration. game_loading_end - game_loading_startDuration (seconds)

3. Monetization Metrics

MetricDefinitionDisplay
Ads ShownNumber of ads displayed. Based on show_adCumulative, average per session/player

4. Future Metrics (not in MVP)

MetricDefinition
Crash Rate% of sessions ending abnormally (no gameplay_stop, frontend-detected crash)
Mean FPSAverage FPS during gameplay, measured via canvas/WebGL if technically feasible

Playtime Computation

Playtime is the most complex metric — it requires reconstructing a session timeline from loading, focus, and gameplay events to compute active play time (excluding unfocused or loading periods).

See Events Pipeline → Playtime Computation for the full algorithm and edge case handling.

Tags

Games can have multiple dynamic tags simultaneously. Tags describe current state or behavior independently from the Exploration/Ranked state.

TagRuleNotes
NewGame added less than 14 days agoIndicates recency only. Can be New + Ranked or New + Unranked
TrendyDAU over last 7 days > DAU from day -14 to day -7Indicates momentum, not absolute popularity. Computed per platform/category
UpdatedGame or live build updated less than 7 days agoPlanned, not enabled in MVP

Tag behavior:

  • Tags are not mutually exclusive (a game can be New + Trendy)
  • Tags are recalculated automatically based on defined rules
  • Tags do not affect ranking directly but can be used for filtering and display
  • Tags are displayed as a small icon in the top-left corner of game cards on both the player site and admin dashboard