Files
Stat-Dashboard/mockups/METRICS.md

59 lines
7.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Metric definitions
The sample calculates metrics under an internal `game_id`, using UTC calendar days. The selected 14-day range, for example, includes today and the previous 13 days. Today's data is partial. All records are synthetic. Recents tables show the latest stored records; their captions state their limits.
Unknown source values stay `NULL` in the API and display as `N/A`. An empty known count is zero. Ratios with zero denominators are `N/A`. Missing durations are excluded from duration averages, rather than treated as zero. Snapshot values are game-reported; session and sales aggregates are derived from their own stored records.
## Activity and sessions
| Measurement | Definition |
| --- | --- |
| CCU | Latest game-level concurrent-player report. A missing latest report remains N/A; the chart averages available reported samples per day. |
| Visits | Sum of game-level daily visit reports in the selected range. The sample generates these from session starts, counting repeat visits. |
| DAU | Distinct players with a session overlapping the UTC day, a player event on that day, or a sale attributed to them on that day. An unended session only proves activity on its start day. |
| Calculated MAU per day | Distinct active players across the 30 calendar days ending on each graph day, inclusive. It is recalculated for every day, not a monthly total copied across days. |
| New users | Daily active players whose first-seen UTC date is that day. |
| Returning users | Daily active players first seen before that day. New + returning = DAU. |
| Session count | Number of sessions starting in the selected period, including unended sessions. |
| Total playtime | Known completed-session time overlapping the selected days. Sessions crossing midnight are split between days. Unknown end times contribute no invented duration. |
| Average playtime | Known completed playtime divided by unique active players in the period. The daily graph divides each day's playtime by that day's DAU. |
| Average session time | Average duration of completed sessions starting in the period. Median is also shown. |
| New-user session time | Average completed-session duration for sessions starting on the player's first-seen UTC day. |
| Returning-user session time | Average completed-session duration for sessions starting on a later UTC day. |
| First-session five-minute retention | Players whose first completed-known session lasted at least 300 seconds / players with a known end for their first session in the selected cohort window. Missing first-session end times are excluded from the denominator, not counted as failures. |
| Day 1 / Day 7 retention | Share of players returning on the exact UTC day 1 or day 7 after their first session. Only cohorts in the selected period with a full observation day are eligible. Cohort percentages are weighted by player count. |
| Activity run time | Configured activity start to configured activity end. Activity pages aggregate runs; individual runs are available in player info. Incomplete runs show N/A time/outcome. |
## Monetization
Each sale row records its product, price **at sale time**, quantity, receipt identifier, time, and player/session when known. `(game_id, receipt_id)` is unique. The real Roblox ModuleScript integration should report trusted server-side receipt data; sample seeding only demonstrates this storage contract. No live Roblox product catalog fetch or real sale ingestion is implemented yet.
| Measurement | Definition |
| --- | --- |
| Hourly / daily Robux spent | Sum of reported unit price × quantity per UTC hour/day. These are gross reported Robux, not a conversion to cash or net proceeds. |
| Robux per product | Sum of actual reported sale prices × quantities for that product in the selected period. Current catalog price is displayed separately. |
| Paying users | Distinct players with at least one positive-price sale in the selected period. Free claims do not create payers. |
| Payer conversion | Period paying users / unique period active users × 100. The daily graph uses daily payers / DAU. |
| Average Robux per paying user (ARPPU) | Period Robux spent / distinct period paying users. |
| Average products bought per paying user | Total positive-price product units / all distinct period paying users. Decimal values are intentional. |
| Per-product units per paying user | That product's paid units / **all** period paying users, including payers who did not buy that particular product. Every catalog product is listed. |
| ARPDAU / average Robux per daily active user | These are the same measurement: daily Robux / DAU. The period card uses total period Robux / sum of daily active user counts (user-days), which is the weighted daily average. It does not divide by unique period players. |
| Sales / transactions | Count of unique reported receipts, including zero-price records. |
| Unattributed sales | Positive-price reports with no player ID. Total Robux remains known, but payer ratios become N/A when attribution is incomplete. |
## Gamepass ownership and activity stages
The Monetization page has Revenue and Gamepasses tabs. Gamepass ownership uses explicit per-player true/false observations, independent of purchase reports. The all-player percentage divides owners by all tracked players in this game. The paying-player percentage divides paying owners by lifetime players with a recorded positive-price purchase. An incomplete set of ownership checks displays N/A for the affected percentage; reporting coverage is displayed separately. No paying players means N/A for the paying-player percentage. These ownership percentages are current snapshots and do not use the selected revenue date range.
Activity stages use ordered `stage_progress` event observations. Stage reach is the percentage of all activity starts reaching that stage in sequence. Conversion divides stage reach count by the previous stage count; drop-off is its complement. A later event does not count if a required earlier stage was skipped. Unknown stage observations make subsequent percentages N/A rather than fabricated drop-offs.
Events show one daily graph line and one summary row per event name. Global recent-event, recent-session, and recent-sale tables are removed; individual records remain in player info. Game-root metric categories remain stored but have no overview or project-settings table. Session aggregates and charts accept the same player groups as activity analytics.
## Player group defaults
Player history accepts `value` and optional `value2` and plots them at stored snapshot timestamps with independent left/right scales. Numeric custom snapshot fields are discoverable. Derived session and receipt totals use only records at or before that timestamp; incomplete durations remain N/A. Join session is a UI placeholder enabled only for unended sessions started within the past six hours. This age rule is a mockup heuristic, not confirmation that a Roblox server is still joinable.
The Events chart filters lines using a searchable checkbox picker with All/None controls. Selection is stored locally per internal game ID. Hidden series are excluded from hover tooltips and axis scaling, while summary totals remain unchanged.
Whales are the top 20% of players with known positive lifetime recorded Robux spending. Top playtime is the top 20% with known positive completed-session playtime. First-time players were first seen in the last 24 hours. These are sample group definitions, not fixed business rules; the intended product should allow configurable thresholds and periods.