Page body
What this page shows
Player KPI Report is a bulk, player-by-player export. It returns one row per player, with
each player's deposit, withdrawal, gameplay, bonus, and activity figures for the period you
choose. It is built for pulling a wide spreadsheet across many players at once, then exporting
it to CSV.
This is not the same as two similar-sounding screens:
- The dashboard KPI summary shows brand-wide totals as a few headline cards. It does not break results down per player.
- The player KPI summary on a single player's profile shows the same kinds of metrics for one player only.
- This page is the bulk version: many players, one row each, with full filtering and a CSV export.
When to use it
- pull a period KPI extract across all depositors or all active players
- build a marketing, VIP, or finance list with deposit, turnover, GGR, NGR, and activity columns
- export a filtered player segment to CSV for offline analysis
- look up KPI figures for a specific set of players by entering their player IDs
How to read it
Each row is one player. The table is paginated and the header text shows how many players matched the current filters. The default period is the previous calendar month.
Money columns are shown in the platform reporting currency, not in each player's own wallet
currency. The Currency column tells you which currency that player's account uses, but the
deposit, withdrawal, turnover, GGR, NGR, and bonus amounts are all converted to one common
reporting currency before they are summed, using the exchange rate captured on each individual
transaction at the time it happened. Because every transaction is converted at its own
recorded rate, totals reflect transaction-time value, not a single period-average or
today's-rate conversion.
Two columns are averages:
Avg Depositis total deposit amount divided by deposit count. A player with no deposits shows0.00.Avg Betis total turnover divided by bet count. A player with no bets shows0.00.
GGR is turnover minus wins. NGR is GGR minus bonus winnings. Bonus bet and bonus win columns
are always computed over bonus-funded play, even when the Include bonus bets toggle is off.
Filters that change the result
Start DateandEnd Dateset the period. They default to the previous calendar month.Player Selectiondecides which players appear:Depositors in period(default) keeps only players with at least one successful deposit in the period.Players with period activitykeeps players with any deposit, withdrawal, bet, or recorded activity in the period.
Include bonus betsdecides whether bonus-funded bets count toward turnover, GGR, and the gameplay columns. It does not change the dedicated bonus columns.Product,Provider, andGame Identifiernarrow gameplay to that product, provider, or game. When any of these is set, only players with matching bets in the period are returned.Country,Currency,VIP Level,Registration Source,Device Type, andPlayer Statusfilter on player attributes.Player IDslimits the report to a specific comma-separated list of player IDs.
How the export works
Export CSV runs the same query with no page limit and downloads a CSV file. The file is
generated on the backend and streamed to the browser, where transaction timestamps are
reformatted for readability before the file is saved. The export is capped at 100,000 rows; if
the filtered result is larger, the export is rejected and you are asked to narrow the filters.
The on-screen table and the export always use the same filters and sort order, so the CSV
matches what you see, just without pagination.
Why this page can differ from other reports
- Money totals are in the reporting currency, converted per transaction, so a player's figures here will not match raw wallet-currency amounts shown elsewhere.
Depositors in periodis the default, so players with activity but no deposit are hidden unless you switch toPlayers with period activity.- Turnover and GGR change with the
Include bonus betstoggle, but the bonus columns and NGR's bonus-win subtraction do not. - Setting a product, provider, or game filter silently drops players who have no matching bets, even if they deposited.
Known caveats
- The CSV export is hard-capped at 100,000 rows and the query has a 60-second timeout; very broad date ranges across all players can hit either limit.
- Per-player averages use a zero-safe denominator: zero deposits or zero bets resolve to
0.00, never an error. Player Statusfilter values and the displayedPlayer Statuscolumn are derived from account flags (self-exclusion window, active/disabled state, VIP level), not a single stored status field.FTD Flagreflects whether the player's first-ever deposit landed inside the selected period, not whether they have ever deposited.
Verification status
- status:
verified_backend - FE route, filters, columns, and export flow are mapped
gs-admin-backendowns the single aggregating SQL query, the CSV serialization, and the row/count shape- the cross-currency conversion uses a per-transaction stored rate (transaction-time basis), confirmed against the report SQL and a sibling BI view that labels the same basis
- no
nx-workspacecore dependency participates in this surface