What this widget shows
Game Reports contains two separate report products:
Gamesgroups activity by game title, subcategory, or country.Providersgroups activity by provider and shows provider-level rounds, real bets, real wins, GGR, and house edge.
The tabs share one widget, but they do not use the same report route, grouping logic, or source-mode rules. Compare values inside the active tab; do not assume that similarly named totals from the two tabs are interchangeable.
When to use it
Use this widget to answer questions such as:
- Which games or providers generated the most activity or GGR?
- How many players, bets, wins, or rounds are represented by the selected slice?
- How do GGR, NGR, RTP, and house edge change by game, subcategory, country, or provider?
- Is the result based on current/live rows, historical analytics, or a hybrid of both?
Controls and application rules
Both tabs expose Date option, Search, Refresh, CSV download, and a source badge. Custom mode also exposes Date start, Date end, and Apply Filters.
Date controls and the manual button use the same active filter state:
- Changing
Date optionautomatically submits the form after a short delay when the form is valid, so the selected preset becomes active withoutApply Filters. - Selecting Custom activates the existing Custom range and reveals the two date pickers.
- Changing either Custom date also automatically submits the valid form after the same short delay.
Apply Filterscopies the current form values into the active filters immediately; it does not invoke forced Refresh.Refreshforce-revalidates the already active filters and does not copy form values itself.
The Games tab additionally exposes Subcategories, Country, Order By, and Group By. These controls update the active Games request directly. Streamer data is visible only on Providers and updates the active provider request directly.
Search is local to the browser. It narrows loaded rows but does not call the report source and does not recalculate summary cards.
Games tab
Summary cards
The source returns these Games summaries for the selected filters:
Distinct GamesActive PlayersBet / Win CountGGRNGR
Table columns
The leading identity columns depend on Group By:
Game TitleandIdentifierfor Game TitleSubcategoryfor SubcategoryCountryfor Country
Every grouping then shows Bet Count, Win Count, Active Players, Wagered, Won, GGR, NGR, HE %, and RTP %.
RTP % is Won divided by Wagered, multiplied by 100. HE % is 100 minus RTP. Both are zero when Wagered is zero.
Providers tab
Summary cards
The widget calculates these cards from the complete loaded provider row set before Search is applied:
Total Providers: number of returned provider rowsTotal Rounds: sum of provider RoundsTotal GGR: sum of provider GGRAvg House Edge: unweighted arithmetic average of providerHE %
Avg House Edge is not weighted by rounds, GGR, or player count.
Table columns
Providers shows Name, Rounds, Real bets, Real wins, GGR, and HE %.
Source badge and date behavior
The current widget has no manual Aggregated Mode switch. The source badge explains the mode selected by the report paths.
- Games selects the analytics-backed path whenever the selected range does not include the current UTC date.
- If a Games range includes the current UTC date, the whole request uses the live/legacy path rather than splitting the range.
- Providers requests hybrid mode. Closed historical UTC dates can come from analytics while the current UTC date comes from live rows; the source then merges the result.
This makes UTC boundaries important. Future-only or reversed ranges also satisfy the current "does not include today" predicate, even when they return no useful data.
Money and adjustment rules
Games live/legacy values convert included transaction amounts before aggregation. A zero conversion rate falls back to a divisor of 1 in that path. Historical analytics values use already stored base-denominated summary amounts.
Games Wagered and Won exclude correction, bonus-payout, marketing, and adjustment rows from the real-money wager/win components. GGR is Wagered minus Won. NGR additionally includes the report's marketing and adjustment effects. Rollback/refund amounts are handled as absolute converted values where the report's rollback branch applies.
The traced paths prove converted or base-denominated values, but they do not prove the production reporting-currency name, exchange-rate provider, rate timestamp, rate basis, or one shared final rounding boundary. Treat the visible currency symbol as presentation, not proof of those settings.
Common questions
Why do Games and Providers not match exactly?
They are separate report products with different routes, groupings, and source-mode rules.
Why do summary cards stay unchanged after Search?
Search filters rows only. Games cards come from the source summary, and Providers cards are calculated from the full loaded provider response before Search.
What does Unknown provider mean?
The provider report keeps a fallback bucket when a game cannot be mapped to a provider.
Does Refresh guarantee a database-only result?
No. Refresh forces revalidation for the active request, but the server can still reuse a recent result under its cache and cooldown policy.
Known caveats
- Date option and Custom date pickers auto-apply after the short valid-form submit delay;
Apply Filterscan commit the current values immediately. - Refresh does not substitute for form submission or Apply Filters.
- Search never recalculates summary cards.
- Games ranges that include the current UTC date use the live/legacy path for the whole range.
- Providers can merge historical analytics with current-day live rows.
Streamer dataapplies only to Providers.- CSV uses the active filters and bypasses the ordinary Dashboard JSON-cache eligibility path.
- Games CSV is capped at 100,000 grouped rows and uses a 60-second source statement timeout.