Page body
What this widget shows
KPI Reports is a sortable table that groups KPI values either by Game or by Provider.
Use it when you need to compare entities against each other, not when you need a time-based matrix. This is the widget for questions like:
- which provider generated the highest GGR?
- which game has the most rounds?
- which rows stand out on house edge?
Tabs
GamesProviders
The tab changes the grouping dimension and the label of the first column.
Filters that change the result
Date optionDate startDate endAggregated ModeStreamer data
Filter apply model
Streamer dataupdates the widget immediately.Aggregated Modeupdates the widget immediately when it is available.Date optionsubmits immediately.Date startandDate endalso auto-submit when changed.Apply Filtersis visible only forcustom, but the date pickers already submit on change through the shared Formik date helper.Refresh datacopies the current FE form state into the active query again, including any current custom dates.
How to read it
The table columns are backend-driven values rendered in a sortable frontend table.
Key columns:
- rounds
- players
- real bet
- real win
- GGR
- total GGR
- bonus bet
- bonus win
- bonus GGR
- total bets
- adjustment
- HE %
The frontend sorts locally after the data is loaded.
The header also shows:
- the current
GamesorProviderstab - an optional backend-fed
Aggregated DataorLive Databadge when the service returnsdataSource
Aggregated mode
The widget exposes an Aggregated Mode switch with two user-facing meanings:
- faster loading from summary-style data
- live/raw mode for current transactional accuracy
However, this widget has an important implementation caveat:
- the frontend sends
useAggregatedData - the current
gs-admin-backendKPI report service does not consume that flag
So as of 2026-04-14, the switch should be treated as a non-authoritative control until backend alignment is completed.
Do not use it as evidence that the widget is definitely reading from a different backend source.
Common questions
Why does the aggregated toggle not seem to change the result?
Because the current backend KPI report service does not use the useAggregatedData parameter.
Why is the source badge sometimes missing?
The frontend expects a dataSource field, but the current backend KPI report service does not return one.
What does HE % mean here?
The widget displays backend field payout under label HE %, but the backend helper actually computes it with getHEPercentage, not with the payout-style helper used in some other reports.
For this widget:
HE % = (1 - realWin / realBet) * 100- the FE only renders the already formatted backend value
- it is a house-edge style percentage, not a cash amount and not a separate FE calculation
Known caveats
- Sorting is frontend-only and does not change the backend query.
Streamer datais visible in the current widget header on both tabs.Download CSVuses the same FE filter set and appendscsvDownload=trueto the backend request.- If users expect a visible “live vs aggregated” source guarantee, that expectation is ahead of the current backend implementation.