Page body
What this widget shows
KPI Summary is a comparison table. Each row is a KPI metric, and each column shows the value for a different time bucket.
For a backoffice user, this widget is the fastest place to answer:
- how key KPIs look today
- how today compares with yesterday
- how the month is trending
- what the same KPI looks like for a selected period
When to use it
Use this widget when you want a quick KPI comparison without opening a separate report page.
It is especially useful for:
- revenue and betting totals
- new registrations and new depositors
- deposit conversion rate
- pending withdrawal amounts
How to read it
The rows are provided by the backend. The exact row inventory is backend-owned and may grow over time. For the currently verified mapper, visible examples include New Registration, New Depositors, GGR, NGR, Total GGR, Marketing, Correction, User Challenge, and the KYC-split pending-withdrawal rows.
The columns are controlled by the frontend:
TodayYesterdayThis monthSelected date
If Selected Date Only is turned on, the widget hides Today, Yesterday, and This month and keeps only the selected period. This is presented as a performance mode for large date ranges.
Filters that change the result
Date optionStart dateEnd dateStreamer dataSelected Date Only
Date option supports the current frontend presets:
TodayYesterdayWeek to dateMonth to dateLast 7 daysLast 30 daysLast 90 daysYear to datePrevious monthPrevious yearCustom
The frontend also displays a source badge:
OptimizedLive Data
For the current backend implementation, KPI Summary returns optimized when the normal comparison mode is used and live when Selected Date Only is enabled. The frontend type still includes aggregated, but that state is not emitted by the verified widget service path.
How calculated values are shown
The KPI values themselves come from the backend. The main frontend calculation in this widget is the trend chip.
- On the
Todaycolumn, the chip comparesTodayagainstYesterday. - On the
This monthcolumn, the chip comparesThis monthagainstSelected date. - No chip is shown when the comparison value is missing, zero, or the absolute change is below
1%.
This means the month chip is not comparing against Previous month to date in the frontend. It uses the current selected period as the comparison baseline.
Metric dictionary
GGR
GGR in KPI Summary is the backend-owned gross gaming revenue row for the current filter set and comparison bucket.
For the verified backend path, GGR is based on:
- bet amount
- minus win amount
In plain terms, it shows how much gaming revenue remains before bonus, cashback, rakeback, and correction-style costs are applied.
NGR
NGR in KPI Summary is the backend-owned net gaming revenue row for the current filter set and comparison bucket.
For the verified backend path, the response mapper computes:
NGR = GGR + marketing
The important nuance is that the backend marketing bucket is already negative for deduction-style costs. This is why NGR is usually lower than GGR even though the mapper adds the value mathematically.
If you need the expanded deduction story, trace the upstream marketing bucket rather than assuming the widget recomputes NGR from the visible rows.
Marketing
Marketing is its own backend-owned KPI row. In the reporting/export mapping, the backend labels it as:
Marketing (Marketing = Bonus Payout + Correction + Cashback+ Referral Rakeback + Rakeback Calendar)
For operators this means:
- it is the combined marketing-cost bucket used by KPI Summary
- it already absorbs several deduction-style components
- it is the row that feeds the verified
NGR = GGR + marketingresponse-mapper formula
So if someone asks why NGR is lower than GGR, Marketing is the first supporting row to inspect.
Correction
Correction is also a backend-owned row. In the export/report-row mapping, the backend expands its meaning to:
Correction (Bonus Payout Auto Correction)
For operators this means the row is not a generic manual note or arbitrary accounting label. In the current KPI Summary path it is the correction component inside the broader marketing-cost story.
Referral Rakeback
Referral Rakeback is also a dedicated backend-owned KPI row in KPI Summary.
For operators, treat it as:
- a standalone backend amount returned directly by the KPI Summary mapper
- one specific deduction-style component that can also appear inside the broader
Marketingexplanation - not a frontend subtotal invented from other visible rows
User Challenge
User Challenge is a dedicated backend row in KPI Summary. The widget does not compute it from other visible values and does not turn it into a tooltip-only explanation.
For operators, treat it as:
- a standalone challenge-cost / challenge-amount row returned by the backend
- one input that can coexist with the other deduction-style rows
- not the same thing as the CMS content block label
General - User Challenges
Total GGR
Total GGR is a separate backend row, not a frontend sum built from the visible table.
The response mapper exposes it as totalggr, and the monthly/export mapping labels the same measure as Total GGR (Bonus + Real). For backoffice users, the practical meaning is:
- it is the combined total-GGR figure returned by the KPI Summary backend path
- it should not be assumed to mean exactly the same thing as the plain
GGRrow - if you are reconciling it with another report, compare like with like and check whether the other report is using provider/game-level breakdowns or a different aggregation path
If you are looking for Total NGR
Backoffice users sometimes search for Total NGR by analogy with Total GGR.
For the backend path verified on 2026-04-14, KPI Summary exposes:
NGRTotal GGR
It does not expose a separate Total NGR row in the verified createKpiSummaryResponse2 mapper. If someone asks for Total NGR in this widget, the first thing to check is whether they actually mean:
- the normal
NGRrow inKPI Summary - or an NGR figure from another report such as
KPI ReportsorGame Reports
Common questions
Why do I only see one numeric column?
Because Selected Date Only is enabled. In that mode the widget is intentionally reduced to the selected range.
Why is there no trend chip?
The frontend hides the chip when:
- the baseline value is empty
- the baseline value is
0 - the absolute percentage change is under
1%
Why can the month trend look surprising?
Because the visible chip compares This month with Selected date, not with a previous-month column.
Where is the rebuild action?
This widget does not expose a rebuild action. The mounted surface is read-only and only offers filter changes, refresh, and CSV export.
Why can GGR and NGR differ a lot?
Because NGR is not just a reformatted GGR. In the verified backend path, the widget response mapper uses GGR + marketing, and the marketing bucket is already negative for deduction-style costs.
What is the practical difference between the deduction-style KPI rows?
Marketingis the combined deduction bucket used in the NGR formula.Correctionis a specific correction component inside that deduction story.User Challengeis a separate backend-owned KPI row, not a synonym for Marketing or Correction.Referral Rakebackis another separate backend-owned KPI row that the export mapping also names explicitly inside the broaderMarketingexpansion.
Why can Total GGR differ from GGR?
Because Total GGR is its own backend-provided row. It is not computed in the frontend from the visible GGR cells.
Known caveats
- Row labels are backend-owned, not hardcoded in the frontend.
- Some row descriptions come from the backend and are shown through tooltips.
- The visible trend chip logic is frontend-only and should not be confused with a backend KPI delta field.
- The current verified backend mapper exposes
NGRandTotal GGR, but not a separateTotal NGRrow. - The TypeScript layer still allows a
dataSource = aggregatedbranch, but the verified dashboard widget currently emits onlyoptimizedorlive.