Operator guideENdashboardkpireporttable

Dashboard / KPI Reports

Sortable KPI table for games or providers, used to compare betting and GGR-style metrics by entity rather than by time bucket.

Reader view

Clean portal guidance

This page keeps the operator explanation, field and action descriptions, and screenshots visible without exposing repo paths, raw sidecars, or editorial-only implementation details.

Narrative content

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

  • Games
  • Providers

The tab changes the grouping dimension and the label of the first column.

Filters that change the result

  • Date option
  • Date start
  • Date end
  • Aggregated Mode
  • Streamer data

Filter apply model

  • Streamer data updates the widget immediately.
  • Aggregated Mode updates the widget immediately when it is available.
  • Date option submits immediately.
  • Date start and Date end also auto-submit when changed.
  • Apply Filters is visible only for custom, but the date pickers already submit on change through the shared Formik date helper.
  • Refresh data copies 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 Games or Providers tab
  • an optional backend-fed Aggregated Data or Live Data badge when the service returns dataSource

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-backend KPI 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 data is visible in the current widget header on both tabs.
  • Download CSV uses the same FE filter set and appends csvDownload=true to the backend request.
  • If users expect a visible “live vs aggregated” source guarantee, that expectation is ahead of the current backend implementation.
Calculation notes

Backend calculations

calculation

Total GGR

Explains why `Total GGR` can differ from `GGR` for the same row.

Source Fields
realBet, realWin, totalGGR, bonusBet, bonusWin
Transform
The SQL returns `GGR` from cash amounts only, while `totalGGR` is calculated from the full amount path with freespins-payout rows excluded. This makes `Total GGR` a broader grouped total than the cash-only `GGR` column.
calculation

HE %

This widget's `HE %` is a backend house-edge percentage, not a frontend calculation and not the payout-style helper used on some other report families.

Source Fields
realBet, realWin, payout
Transform
Backend helper `getHEPercentage` computes the displayed value as `(1 - realWin / realBet) * 100`, formats it to two decimals, and returns it as a percent string.
Grid columns

Columns

field

Games or Providers

Entity being compared in the current tab.

field

Rounds

field

Players

field

Real bet

Data Type
amount
field

Real win

Data Type
amount
field

GGR

Data Type
amount
field

Total GGR

Data Type
amount
field

Bonus bet

Data Type
amount
field

Bonus win

Data Type
amount
field

Bonus GGR

Data Type
amount
field

Total bets

Data Type
amount
field

Adjustment

Data Type
amount
field

HE %

Data Type
percentage
Caveat
Backend helper `getHEPercentage` computes this as `1 - realWin / realBet`, then formats it as a percent string.
Filter dictionary

Filters

field

Date option

Type
preset-range
field

Date start

Type
date
field

Date end

Type
date
field

Streamer data

Type
boolean
Visibility
all_tabs
Caveat
The current widget renders this switch in the shared header for both tabs.
field

Aggregated Mode

Type
boolean
Visibility
all_tabs
Caveat
Current backend service does not use this parameter.
field

Aggregated Data / Live Data

Type
display-chip
Visibility
all_tabs
Caveat
This badge renders only when the backend response actually includes `dataSource`.
Metric dictionary

Metrics

metric

GGR

Gross gaming revenue for the row grouping.

Verification Status
verified_backend
metric

Total GGR

Gross gaming result for the row after total-amount semantics are applied to the full amount path, not only the cash-only `GGR` column.

Verification Status
verified_backend
metric

HE %

House-edge style percentage returned by the backend helper and rendered under label `HE %`.

Verification Status
verified_backend
Operational notes

Notes

item

Backend service accepts tab and streamer mode.

item

Backend service currently does not act on useAggregatedData.

item

FE `downloadCSV` reuses the current search params and appends `csvDownload=true`.

item

The optional `dataSource` badge renders only if the response includes `dataSource`, which the current backend service does not return.

Related references

Related pages

pageDashboard / Bonus Payouts

Shared comparison widget rendered for tournament, challenge, and no-deposit bonus payout groups.

pageDashboard / Game Reports

Deep comparison widget for Games and Providers with separate backend paths, multiple grouping options, search, and a mix of backend and frontend summary logic.

pageDashboard / GGR Chart

Revenue trend chart with frontend summary cards derived from the loaded time series.

pageDashboard / KPI Summary

Comparison table for high-level KPI rows across today, yesterday, month-to-date, and the selected period, with frontend trend chips and data-source badges.

pageDashboard / Live Player Report

Card-based snapshot of today's GGR, total players, conversion rates, active players, and merchant balance.

pageDashboard / Performance Overview

Container widget for Casino, Banking, and Registrations charts with shared date-range and streamer-data controls.