Operator guideEN

Players / KPI Summary

Grouped player-level KPI snapshot inside the player workspace, covering player info, deposits, withdrawals, casino totals, bonus cost, and predictive metrics.

How to use this guide

Start with the main guide

Follow the explanation and examples first. Extra definitions and formulas are available below when you need them.

What this page shows

Player KPI Summary is the densest summary surface in the player workspace. It groups dozens of player-level metrics into operator-readable cards such as player info, casino stats, deposits, withdrawals, bonus and rakeback, live-casino activity, game activity, predictive values, and fallback fields.

When to use it

Use this tab when you need a compact snapshot of the player without opening multiple other tabs.

It is most useful for:

  • lifetime or cumulative player totals
  • recent deposit and withdrawal context
  • bonus-cost and rakeback review
  • quick retention or LTV-style signals

How to read it

The page is grouped by business domain rather than by raw source field names. Current groups include:

  • Player Info
  • Casino Stats
  • Deposit Info
  • Withdrawal Info
  • Bonus & Rakeback
  • Live Casino Stats
  • Games & Activity
  • LTV & LTP
  • Misc
  • Others

Treat this screen as a snapshot card wall, not as a transactional history.

Most money-like values are calculated by Core builders before they are persisted. Payment and casino builders divide source amounts by a stored conversion rate, but the traced code does not name the resulting base currency or expose when that rate was fixed. When a selected currency key has a numeric value, the page uses the player's currency code, or USD when it is missing; balance is the exception and is always labeled EUR. Treat every symbol as presentation, not proof of the Core reporting currency or rate basis.

The page also lets operators:

  • collapse or expand KPI cards
  • hide specific categories with the category filter menu
  • trigger a KPI rebuild request for the current player

The mounted component also sends one rebuild request on first render. That request is the same core KPI update route used by the Refresh KPI button.

Known caveats

  • The page reads this data from the core player KPI source, not from the standard admin report sources.
  • The payload is a persisted KPI snapshot from nx.user_kpi_summary; it is not a live transactional report query.
  • The core player KPI source overlays balance with SUM(wallet.amount / currency.exchange_rate) from a helper named getUserWalletBalanceEur; the checked path does not independently prove the exchange-rate base or timestamp, while most other values come from the persisted KPI row.
  • Rebuild goes through the core KPI update route and marketingIdentifyService, and can switch to stored-procedure mode when useProcedureKPISummary is enabled in system settings. The checked-out repositories do not contain the sp_update_user_kpi_summary definition, so this documentation proves the TypeScript formulas but not procedure-mode internals.
  • Automatic non-forced rebuilds can return without recalculation when Core activity-window or minimum-interval guards decide the snapshot is still fresh enough. The visible Refresh KPI action sends force-rebuild signals in both the request body and header.
  • Labels like Total NGR and Total GGR on this tab must be interpreted from the core KPI payload, not from generic market terminology.
  • The Others card is a page fallback bucket for non-empty payload keys that are not assigned to one of the curated KPI groups. It is a presentation fallback, not a core business category.
  • LTP Days and LTP Months do not calculate a proven lifetime-to-profit or break-even point. The standard Core formula measures elapsed time from registration to the first non-null timestamp in the precedence order last_activity, last_login_at, then registration_date; it does not select the greatest timestamp. Months are days divided by 30.4375.
  • Predicted Player LTV iterates integer months from zero through the peer segment's average lifetime months and uses that same lifetime value in its SQL discount term. Although Core loads forecastMonths and discountRate settings, this traced query does not use them.
  • Thirty-day fields do not all share one cutoff: payment and casino-play builders use current_date - interval '30 days', while bonus-conversion totals use NOW() - interval '30 days'. The database session timezone is not explicit.
  • Core's traced churn formula already returns a percentage-scaled value, while the page formatter multiplies churnProbability by 100 again. Treat the displayed churn percentage as unreliable until the producer and frontend agree on one scale.
  • Total Cashback exists in the model and page, but no standard TypeScript rebuild assignment was found. It may depend on the unavailable stored procedure and is marked needs_review in the metric dictionary.
  • Total Rakeback Calendar Amount is emitted by the standard builder as totalRakeBackCalendarAmount, while the model and visible page key use totalRakebackCalendarAmount. The generic writer has no explicit alias for this capitalization mismatch, so persistence and display formatting are not proven.
  • Total Withdrawal Amount, Bonus Cost, and both Available Marketing Budget keys are not in the page's currency-formatting list. They can appear as raw values even though their business meaning is monetary.
  • High-value fields that can fall into Others include support keys such as key1, key2, visitCountBeforeRegistration, lastKpiRebuildAt, lastKpiSourceAt, and lastKpiSyncAt.
  • The page currently lists casinoLifetimeBBonusWinCount and casinoLifetimeBonusWinAmount, while the core model exposes plural casinoLifetimeBonusWinsCount and casinoLifetimeBonusWinsAmount. Treat those page keys as visible-key coverage, not proof that the core row always populates them.
  • No screenshot is included intentionally: the card values are player-specific and change after rebuilds, while the stable card groups, fields, formulas, and caveats are covered directly in this page and its dictionaries.
More details

Definitions and formulas

Open only the section you need. The relevant section opens automatically when you request help for a specific item on screen.

Calculations13 topicsOpen details

Player KPI snapshot

How It Works
Core-owned KPI payload backed by the persisted `nx.user_kpi_summary` row for the selected user.
What To Check
This tab is a grouped snapshot surface. Treat visible totals as persisted KPI fields, not page-computed aggregates.

Balance overlay

How It Works
`getUserKpiSummaryService` reads `nx.user_kpi_summary`, then replaces/overlays `balance` with `SUM(wallets.amount / NULLIF(currencies.exchange_rate, 0))` for the selected user.
What To Check
Balance is a current wallet EUR-style helper value from core, not simply the persisted KPI row's stored balance.

KPI grouping

How It Works
The page groups raw KPI payload keys into operator sections such as Player Info, Casino Stats, Deposit Info, and LTV & LTP.
What To Check
Group headers are presentation only. They do not change the underlying metric values.

Others fallback group

How It Works
Any non-empty KPI payload key not assigned to a curated page group is rendered inside the page-only `Others` card.
What To Check
`Others` is a presentation fallback bucket, not a core business category.

KPI rebuild action

How It Works
The page calls the core player KPI update source with `{ forceRebuild: true }` and `x-kpi-force-rebuild: true`; the controller also accepts body/query `forceRebuild` and headers `x-kpi-force-rebuild` or `x-kpi-force`.
What To Check
Rebuild affects payload freshness and source recalculation, not the page grouping rules.

Rebuild skip gates

How It Works
Without force rebuild, `marketingIdentifyService` evaluates independent skip paths. It can skip when initialized KPI data is outside the activity window, when unchanged data is still inside the minimum rebuild interval, or when no source change exists since the previous snapshot. Missing required fields or an expired maximum rebuild age force rebuilding; a due Customer.io sync can replace a skip with sync-without-rebuild.
What To Check
This explains why automatic or scheduled KPI refreshes can be no-ops. The visible button sends force rebuild signals, while global settings can also force rebuild server-side.

Total NGR

How It Works
Core-owned persisted KPI field `nx.user_kpi_summary.total_ngr`, exposed to the page as `userKpiSummary.totalNgr`.
What To Check
Read this value as the player's stored KPI snapshot field, not as a live ad hoc report calculation.

Total GGR

How It Works
Core-owned persisted KPI field `nx.user_kpi_summary.total_ggr`, exposed to the page as `userKpiSummary.totalGgr`.
What To Check
Read this value as the player's stored KPI snapshot field, not as a live ad hoc report calculation.

KPI procedure mode

How It Works
When `useProcedureKPISummary` is enabled in core system settings, KPI rebuild can call `sp_update_user_kpi_summary` before the row is re-read from `nx.user_kpi_summary`.
What To Check
The exact upstream source mix can differ by deployment mode, but the page always reads the same core snapshot source.
Caveats
The checked-out repositories do not contain the `sp_update_user_kpi_summary` definition, so this entry proves procedure selection and snapshot re-read behavior, not the procedure's internal formulas.

Bonus Cost and Available Marketing Budget

How It Works
`computeBonusMetrics` builds `bonusCost` as `totalAmountConverted + totalRakebackCalendarWins + 0.1 * max(totalBonusBets - totalBonusWins, 0) + 0.1 * totalDepositAmountWithBonus`, then derives `availableMarketingBudget` as `totalGgr * 0.2 - bonusCost`.
What To Check
The same builder also computes 30-day variants and the ratio fields used for bonus-cost budgeting.

Bonus Cost Ratio guard cases

How It Works
`computeBonusMetrics` returns the ratio field as `1` when GGR is negative, `0` when cost is non-positive, `999` when GGR is zero but cost is positive, and otherwise `bonusCost / totalGgr`.
What To Check
This explains why the page can show `999%` instead of a normal percentage when the player has cost but no GGR base.

Page value formatting

How It Works
The page formats keys listed in `userKpiCurrencyFields` as currency, date keys as localized date/time strings, `churnProbability` as `value * 100`, and bonus ratio fields as `value * 100` unless the value is the sentinel `999`.
What To Check
Formatting changes only display text; it does not change persisted KPI values.
Caveats
Core's traced churn formula already produces a percentage-scaled value, while the frontend multiplies it by 100 again; the displayed churn percentage is not contract-safe.

Page key coverage

How It Works
The traced page groups declare 125 unique KPI payload keys. This sidecar set documents all traced keys either as fields, notable metrics, or explicitly as fallback/support keys.
What To Check
Use this count as a review guard when the page adds or removes KPI keys.
Fields124 topicsOpen details

Global User ID

Cross-brand or cross-system player identifier when present in the KPI snapshot.

Visual Type
identity

Brand Code

Brand code stored in the KPI snapshot for multi-brand context.

Visual Type
text

User ID

Internal player identifier mirrored inside the KPI payload.

Visual Type
identity

Email

Player email copied into the KPI snapshot from the profile summary builder.

Visual Type
text

First Name

Player first name copied into the KPI snapshot from the profile summary builder.

Visual Type
text

Last Name

Player last name copied into the KPI snapshot from the profile summary builder.

Visual Type
text

Date of Birth

Date-of-birth field carried into the KPI snapshot from the profile summary builder.

Visual Type
date

Language Code

Current profile language code copied into the KPI snapshot.

Visual Type
text

Country Code

Current player country code copied into the KPI snapshot.

Visual Type
text

Currency Code

Current player currency code copied into the KPI snapshot.

Visual Type
text

Last Login

Last login timestamp copied into the KPI snapshot from the profile summary builder.

Visual Type
datetime

Affiliate PID

Affiliate ownership or referral identifier shown in the player info group when present.

Visual Type
identity

Balance

Current player balance copied into the KPI snapshot from the profile summary builder.

Visual Type
amount

Total NGR

Net gaming revenue value returned by the player KPI payload.

Visual Type
amount

Total GGR

Gross gaming revenue value returned by the player KPI payload.

Visual Type
amount

Total Deposit Amount

Lifetime deposit amount for the player in this summary payload.

Visual Type
amount

Total Deposit Count

Lifetime number of deposits surfaced by the KPI payload.

Visual Type
count

Total Deposit Amount With Bonus

Deposit total that includes bonus-linked deposit participation from the payment KPI builder.

Visual Type
amount

Last Successful Deposit Method

Last successful deposit method string returned for quick payment-context checks.

Visual Type
text

Payment Methods

Combined payment-method summary returned by the payment KPI builder.

Visual Type
text

Total Withdrawal Amount

Lifetime withdrawal amount for the player in this summary payload.

Visual Type
amount

Total Withdrawal Count

Lifetime number of withdrawals surfaced by the KPI payload.

Visual Type
count

Last Withdrawal Date

Timestamp of the player's latest withdrawal in the payment KPI summary.

Visual Type
datetime

Failed Payment Count

Count of failed payment attempts exposed by the KPI payload.

Visual Type
count

Bonus Cost

Bonus spend or cost value attached to the player KPI payload.

Visual Type
amount

Bonus Cost Ratio From GGR

Ratio between computed bonus cost and player GGR, with guard handling for zero or negative GGR.

Visual Type
ratio

Total Rakeback Calendar Amount

Calendar-based cumulative rakeback amount shown in the bonus and rakeback group.

Visual Type
amount

Total Rakeback Calendar Amount Last 30 Days

Recent 30-day rakeback-calendar amount exposed by the bonus and rakeback KPI builder.

Visual Type
amount

Available Marketing Budget

Remaining marketing budget derived from player GGR and the computed bonus-cost model.

Visual Type
amount

Available Marketing Budget 30 Days

30-day version of available marketing budget after recent bonus-cost deductions.

Visual Type
amount

Total Amount Converted

Total converted amount exposed in the bonus and rakeback section.

Visual Type
amount

Live Casino Lifetime GGR

Live-casino-only lifetime GGR value returned by the KPI payload.

Visual Type
amount

Live Casino First Played Date

Earliest live-casino activity timestamp returned by the play-per-type KPI builder.

Visual Type
datetime

Live Casino Last Played Date

Latest live-casino activity timestamp returned by the play-per-type KPI builder.

Visual Type
datetime

Live Casino Lifetime Bet Count

Live-casino-only lifetime bet count from the play-per-type KPI builder.

Visual Type
count

Live Casino Lifetime Bet Amount

Live-casino-only lifetime bet amount from the play-per-type KPI builder.

Visual Type
amount

Live Casino Lifetime Win Count

Live-casino-only lifetime win count from the play-per-type KPI builder.

Visual Type
count

Live Casino Lifetime Win Amount

Live-casino-only lifetime win amount from the play-per-type KPI builder.

Visual Type
amount

Top Game Name

Game title surfaced as the top or most important game signal in the KPI payload.

Visual Type
text

Top Game Image

Thumbnail URL for the top game returned by the game KPI builder.

Visual Type
text

Top Game Provider Name

Provider name attached to the top-game signal in the game KPI builder.

Visual Type
text

Top Provider Name

Provider with the highest counted gameplay volume in the game KPI builder.

Visual Type
text

Favorite Device Type

Device-preference signal derived by the KPI device builder.

Visual Type
text

Total Game Count

Total game count shown in the games and activity group.

Visual Type
count

Most Played Game Name

Most frequently played game title returned by the game KPI builder.

Visual Type
text

Biggest Win Game Name

Game title attached to the player's biggest recorded win in the game KPI builder.

Visual Type
text

Biggest Win Bonus Type

Bonus-type hint inferred for the player's biggest win in the game KPI builder.

Visual Type
text

Last Activity

Last activity timestamp or marker exposed in the games and activity group.

Visual Type
datetime

Churn Probability

Predictive churn signal used to prioritize player follow-up.

Visual Type
ratio

Predicted Player LTV

Predicted lifetime-value-style estimate for the individual player.

Visual Type
amount

Predicted Segment LTV

Predicted LTV estimate for the matched player segment rather than the single player.

Visual Type
amount

Predicted Segment LTP Days

Predicted lifetime-to-profit horizon in days for the matched player segment.

Visual Type
number

Predicted Segment LTP Months

Predicted lifetime-to-profit horizon in months for the matched player segment.

Visual Type
number

LTP Days

Player-level lifetime-to-profit horizon in days returned by the advanced KPI model.

Visual Type
number

LTP Months

Player-level lifetime-to-profit horizon in months returned by the advanced KPI model.

Visual Type
number

Key 1

Low-level support value that can appear in the page `Others` card when non-empty.

Visual Type
text

Key 2

Low-level support value that can appear in the page `Others` card when non-empty.

Visual Type
text

Visit Count Before Registration

Number of visits attributed before the player registered, exposed only when present in the KPI snapshot.

Visual Type
count

Last KPI Rebuild At

Timestamp of the latest rebuild attempt recorded by the KPI pipeline.

Visual Type
datetime

Last KPI Source At

Timestamp used by the KPI pipeline to track the newest contributing source event.

Visual Type
datetime

Last KPI Sync At

Timestamp of the latest external sync recorded in the KPI snapshot.

Visual Type
datetime

Registration Date

Player registration timestamp carried into the KPI snapshot.

Visual Type
datetime

Owner UUID

Ownership or account-manager UUID stored in the player KPI snapshot when present.

Visual Type
identity

Is Referrer

Boolean marker showing whether the player is marked as a referrer in the KPI payload.

Visual Type
boolean

First Deposit Amount

Amount of the player's first successful deposit from the payment KPI builder.

Visual Type
amount

First Deposit Date

Timestamp of the player's first successful deposit from the payment KPI builder.

Visual Type
datetime

Last Deposit Amount

Amount of the player's latest successful deposit from the payment KPI builder.

Visual Type
amount

Last Deposit Date

Timestamp of the player's latest successful deposit from the payment KPI builder.

Visual Type
datetime

Total Deposit Amount With Bonus 30 Days

Recent 30-day deposit amount associated with bonus participation.

Visual Type
amount

Last Successful Deposit Amount

Amount of the latest successful deposit used for payment-context review.

Visual Type
amount

Avg Deposit Amount Last 5 Trx

Average amount across the player's last five deposit transactions.

Visual Type
amount

Deposit Amount Last 30 Days

Deposit amount accumulated during the latest 30-day KPI window.

Visual Type
amount

First Withdrawal Date

Timestamp of the player's first withdrawal in the payment KPI summary.

Visual Type
datetime

Last Withdrawal Amount

Amount of the player's latest withdrawal in the payment KPI summary.

Visual Type
amount

Total Bonus Payout

Cumulative bonus-payout amount included in casino and bonus cost KPI calculations.

Visual Type
amount

Total Cashback

Cumulative cashback amount included in the player KPI snapshot.

Visual Type
amount

Bonus Wagering Completed Count

Count of bonuses whose wagering requirement was completed.

Visual Type
count

Total Activated Bonus Count

Number of activated bonuses included in the bonus KPI summary.

Visual Type
count

Total Bonus Amount

Total nominal bonus amount included in the bonus KPI summary.

Visual Type
amount

Activated Deposit Bonus Count

Count of activated deposit bonuses for this player.

Visual Type
count

Activated Deposit Bonus Amount

Amount of activated deposit bonuses for this player.

Visual Type
amount

Activated Free Spins Bonus Count

Count of activated free-spins bonuses for this player.

Visual Type
count

Activated Free Spins Bonus Amount

Amount associated with activated free-spins bonuses for this player.

Visual Type
amount

Activated Cash Back Bonus Count

Count of activated cashback bonuses for this player.

Visual Type
count

Activated Cash Back Bonus Amount

Amount associated with activated cashback bonuses for this player.

Visual Type
amount

Activated No Deposit Bonus Count

Count of activated no-deposit bonuses for this player.

Visual Type
count

Activated No Deposit Bonus Amount

Amount associated with activated no-deposit bonuses for this player.

Visual Type
amount

Activated No Deposit Free Spins Bonus Count

Count of activated no-deposit free-spins bonuses for this player.

Visual Type
count

Activated No Deposit Free Spins Bonus Amount

Amount associated with activated no-deposit free-spins bonuses for this player.

Visual Type
amount

Top Claimed Bonus Type

Most prominent claimed bonus type inferred by the bonus KPI builder.

Visual Type
text

Last Claimed Bonuses Type

Latest claimed bonus type or combined type label from the bonus KPI builder.

Visual Type
text

Bonus Success Rate

Bonus KPI ratio rendered as a percentage by the page when present.

Visual Type
ratio

Bonus Cost 30 Days

Recent 30-day bonus cost from the core bonus-cost model.

Visual Type
amount

Bonus Cost Ratio From GGR 30 Days

Recent 30-day bonus-cost-to-GGR ratio with the same guard values as the lifetime ratio.

Visual Type
ratio

Bonus Success Rate 30 Days

Recent 30-day bonus success rate rendered as a percentage by the page when present.

Visual Type
ratio

Total Amount Converted 30 Days

Recent 30-day converted bonus amount used by the bonus-cost model.

Visual Type
amount

First Bonus Title

Title of the first bonus captured for the player when the bonus KPI builder can resolve it.

Visual Type
text

First Bonus Game

Game associated with the player's first captured bonus when available.

Visual Type
text

First Bonus Segment

Segment associated with the player's first captured bonus when available.

Visual Type
text

Avg Stake

Average stake value from the play KPI builder.

Visual Type
amount

Casino First Played Date

Earliest non-live casino activity timestamp in the KPI snapshot.

Visual Type
datetime

Casino Last Played Date

Latest non-live casino activity timestamp in the KPI snapshot.

Visual Type
datetime

Casino Lifetime Average Bet Amount

Average bet amount across casino lifetime activity.

Visual Type
amount

Casino Lifetime Bet Count

Count of lifetime casino bet events.

Visual Type
count

Casino Lifetime Bet Amount

Lifetime casino bet amount from the play KPI builder.

Visual Type
amount

Casino Lifetime Bonus Bet Count

Count of lifetime casino bonus-bet events.

Visual Type
count

Casino Lifetime Bonus Bet Amount

Lifetime casino bonus-bet amount from the play KPI builder.

Visual Type
amount

Casino Lifetime Bonus Cost Amount

Lifetime casino bonus-cost amount from the play KPI builder.

Visual Type
amount

Casino Lifetime GGR

Lifetime casino GGR value from the play KPI builder.

Visual Type
amount

Casino Lifetime Win Count

Count of lifetime casino win events from the play KPI builder.

Visual Type
count

Casino Lifetime Win Amount

Lifetime casino win amount from the play KPI builder.

Visual Type
amount

Casino Lifetime B Bonus Win Count

FE-declared key for casino lifetime bonus-win count. Core model uses `casinoLifetimeBonusWinsCount`, so absence can be caused by this key mismatch.

Visual Type
count

Casino Lifetime Bonus Win Amount

FE-declared key for casino lifetime bonus-win amount. Core model uses `casinoLifetimeBonusWinsAmount`, so absence can be caused by this key mismatch.

Visual Type
amount

Total Bonus Game Count

Count of bonus-game activity rows in the play KPI summary.

Visual Type
count

Total Bonus Bets

Lifetime bonus bet amount from the play KPI builder.

Visual Type
amount

Total Bonus Wins

Lifetime bonus win amount from the play KPI builder.

Visual Type
amount

Live Casino Lifetime Average Bet Amount

Average bet amount for live-casino-only lifetime activity.

Visual Type
amount

Live Casino Lifetime Bonus Cost Amount

Live-casino-only lifetime bonus-cost amount.

Visual Type
amount

First Bet Amount

Amount of the player's first captured bet in the game/activity KPI group.

Visual Type
amount

Last Played Game Name

Last played game title captured by the game KPI builder.

Visual Type
text

Last Played Game Provider

Provider attached to the player's last played game.

Visual Type
text

Exchange Rate

Exchange-rate helper value stored in the KPI snapshot when present.

Visual Type
number

Created At

Creation timestamp of the persisted KPI row.

Visual Type
datetime

Updated At

Update timestamp of the persisted KPI row.

Visual Type
datetime
More help

Related pages

Players / Banking

Banking tab inside the player workspace with transaction filters, a paginated banking grid, analytics cards, CSV export, and automatic-withdrawal availability.

Players / Detail Workspace

Main player workbench at `/player/[playerId]` with tabbed sections, player-level actions, and modal-based operator workflows.

Players / Fraud Detection

Fraud-detection tab inside the player workspace with MaxMind risk assessment, related fraud-account reports, IP analysis, and Identity Graph filtering.

Players / Game Report

Per-player game or provider report inside the player workspace, filtered by date option and grouped either by game or by provider.

Players / Inbox

Inbox tab inside the player workspace for reviewing delivered notifications, filtering by read state or notification type, and resending or soft-deleting message deliveries.

Players / KYC Status

KYC tab inside the player workspace for browsing user documents, checking third-party verification state, and approving, rejecting, or re-requesting documents.