Operator guideENreportingperformancemarketing

Reporting / Key Performance

Time-based marketing and product performance report for visits, registrations, deposits, GGR, NGR, and marketing expenses.

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 page shows

Key Performance is the day-by-day funnel and revenue report for affiliate traffic. It combines visits, registrations, first deposits, deposit volume, GGR, NGR, and marketing expense into one timeline.

When to use it

  • compare visits against registrations and deposits
  • inspect GGR and NGR across the selected period
  • check domain, PID, or MKT impact on funnel performance

How to read it

Each row is one date bucket. The totals row at the bottom is the main operator summary for the current query.

Important reading rules:

  • Click2Reg (%) is calculated from visits to registrations
  • Reg2Dep (%) is calculated from registrations to first deposit count
  • Deposits (Amount) is normalized deposit volume, not a raw banking ledger total
  • Marketing Expenses is a separate backend field and should not be read as part of NGR

All money columns (FTDs (Amount), Deposits (Amount), Total GGR, Marketing Expenses, Total NGR) are reported in EUR, the platform primary currency. Each transaction is converted with the per-row conversion_rate that was captured at transaction time (the booking-time rate), not a current or live FX snapshot, so historical rows keep the rate that applied when they happened. If a row has no stored rate the amount is treated as already EUR (rate of 1), and a stored rate of zero drops that row from the money total.

Known caveats

  • Domain mode is backend-defined and changes how mirror traffic is included
  • Exclude Bots is on by default and changes the traffic base before conversion metrics are calculated
  • backend traffic-quality filters still exist even though they are not surfaced in the FE
  • the totals row recomputes overall conversion rates from summed totals rather than averaging daily percentages
  • restricted countries are removed in backend settings logic before the report is built

Filters that change the result

  • start date
  • end date
  • PID
  • MKT
  • country
  • domain mode
  • domain ids
  • landing pages
  • exclude bots

Filter apply model

  • Apply Filters copies the current draft controls into the active backend query.
  • Refresh re-fetches the current active query only. It does not promote draft values by itself.
  • Export CSV uses the active filter snapshot, not the unsaved draft controls.
  • Mirror Domains appears only when Mirror / Domain is Specific mirror(s).
  • Landing-page suggestions are loaded from affiliate-link groups using the current landing input plus the draft start/end dates, not the already applied report snapshot.

Verification status

  • status: verified_backend
  • FE route, filters, date-row table, totals row, and export flow are mapped
  • gs-admin-backend owns traffic eligibility, conversion math, and revenue aggregation
  • nx-workspace is not required for the current operator meaning
Calculation notes

Calculations

calculation

Click2Reg (%)

Visit-to-registration conversion rate for the date row or total row.

Source Fields
registrations, visits
Transform
Click2Reg is calculated as registrations divided by visits, multiplied by 100.
calculation

Reg2Dep (%)

Registration-to-first-deposit conversion rate.

Source Fields
ftd_count, registrations
Transform
Reg2Dep is calculated as first-deposit count divided by registrations, multiplied by 100.
calculation

GGR

Gross gaming revenue on the date row.

Source Fields
bet_amount, win_amount
Transform
Backend calculates GGR as bet amount minus win amount.
calculation

NGR

Net gaming revenue after the report's backend deductions.

Source Fields
ggr, bonus_payout, cashback, rakeback_calendar, adjustment_amount, correction
Transform
Backend calculates NGR by subtracting bonus payout, cashback, rakeback, adjustment, and correction from GGR.
calculation

Marketing Expenses

Read this as its own visible spend line. It is not an extra FE-derived subtotal.

Source Fields
marketing_expenses
Transform
Backend exposes `marketing_expenses` as a separate aggregated amount column instead of folding it into `NGR`.
calculation

Totals row

Use the bottom row for overall funnel reading.

Source Fields
summary.overallClickToReg, summary.overallRegToDep
Transform
Overall conversion rates are recomputed from summed totals rather than averaged from daily percentages.
calculation

Active vs draft filters

Use `Apply Filters` when draft controls changed. `Refresh` is only for reloading the already applied report.

Source Fields
activePid, activeMkt, activeCountries, activeDomainMode, activeDomainIds, activeLandingPages, activeExcludeBots, activeStartDate, activeEndDate
Transform
FE keeps separate draft filter state and active query state. `Apply Filters` promotes the current draft values; `Refresh` only refetches the active snapshot.
calculation

Export CSV snapshot

Export is a snapshot of the applied report, including the backend totals row.

Source Fields
exportCsv, limit, summary
Transform
FE exports with `limit=10000` and `exportCsv=true`, while backend returns report rows plus a totals line appended to the CSV output.
Grid columns

Columns

field

Date

field

Visits

field

Unique Visits (IP)

field

Registrations

field

Click2Reg (%)

field

FTDs (Count)

field

FTDs (Amount)

field

Reg2Dep (%)

field

Depositors

field

Deposits (Count)

field

Deposits (Amount)

field

GGR

field

NGR

field

Marketing Expenses

Filter dictionary

Filters

field

Start date

Type
date
field

End date

Type
date
field

PID

Type
text
field

MKT

Type
text
field

Country

Type
multi-select
field

Domain mode

Type
select
field

Domain ids

Type
multi-select
Caveat
Visible only when `Domain mode` is set to mirror-specific mode.
field

Landing pages

Type
multi-select
Caveat
Suggestions are loaded from affiliate-link groups using the current landing input and draft date range.
field

Exclude bots

Type
boolean
Widget map

Widgets

item

Performance table

item

Totals row

item

CSV export

Metric dictionary

Metrics

metric

Visits

Distinct visits matched to the filtered affiliate-traffic window.

Aliases
key performance visits, visits cohort visits
Backend Formula
distinct traffic identities per date row
Verification Status
verified_backend
Last Verified At
2026-06-29
metric

Registrations

Distinct users registered on the date row and matched to the filtered traffic.

Aliases
key performance registrations
Backend Formula
count(distinct user_id)
Verification Status
verified_backend
Last Verified At
2026-06-29
metric

Click2Reg (%)

Visit-to-registration conversion rate.

Aliases
click2reg, click to reg
Backend Formula
registrations / visits * 100
Verification Status
verified_backend
Last Verified At
2026-06-29
metric

FTDs (Count)

Number of first deposits matched to the date row.

Aliases
first deposits count, ftd count
Backend Formula
count(first deposits)
Verification Status
verified_backend
Last Verified At
2026-06-29
metric

FTDs (Amount)

First-deposit amount matched to the date row.

Aliases
first deposits amount, ftd amount
Backend Formula
sum(first deposit amount / conversion_rate)
Currency Basis
Reporting Currency: EUR | Exchange Rate Source: transaction_bankings.conversion_rate, stored per deposit row | Rate Timing: transaction-time booking rate captured when the deposit is recorded (transactionHandler.js via getPrimaryCurrencyAmount), not a current or live snapshot | Missing Rate Fallback: a null conversion_rate falls back to 1 so the amount is treated as already EUR (1:1 passthrough); a zero rate is nulled out and that row contributes nothing to the sum
Verification Status
verified_backend
Last Verified At
2026-06-29
metric

Deposits (Amount)

Converted deposit amount for the date row.

Aliases
key performance deposits amount
Backend Formula
sum(amount / conversion_rate)
Currency Basis
Reporting Currency: EUR | Exchange Rate Source: transaction_bankings.conversion_rate, stored per deposit row | Rate Timing: transaction-time booking rate captured when the deposit is recorded (transactionHandler.js via getPrimaryCurrencyAmount), not a current or live snapshot | Missing Rate Fallback: a null conversion_rate falls back to 1 so the amount is treated as already EUR (1:1 passthrough); a zero rate is nulled out and that row contributes nothing to the sum
Verification Status
verified_backend
Last Verified At
2026-06-29
metric

Total GGR

Gross gaming revenue for the current query.

Aliases
key performance ggr
Backend Formula
sum(ggr)
Currency Basis
Reporting Currency: EUR | Exchange Rate Source: casino_transactions.conversion_rate, stored per gaming-transaction row; bet and win cash_amount are each divided by it | Rate Timing: transaction-time booking rate captured when the gaming transaction is recorded, not a current or live snapshot | Missing Rate Fallback: a null conversion_rate falls back to 1 so the amount is treated as already EUR (1:1 passthrough); a zero rate is nulled out and that row contributes nothing to the sum
Verification Status
verified_backend
Last Verified At
2026-06-29
metric

Marketing Expenses

Backend marketing-expense total shown as its own visible column and totals-row cell.

Aliases
key performance marketing expenses
Backend Formula
marketing_expenses
Currency Basis
Reporting Currency: EUR | Exchange Rate Source: casino_transactions.conversion_rate, stored per gaming-transaction row; the is_marketing cash_amount is divided by it | Rate Timing: transaction-time booking rate captured when the gaming transaction is recorded, not a current or live snapshot | Missing Rate Fallback: a null conversion_rate falls back to 1 so the amount is treated as already EUR (1:1 passthrough); a zero rate is nulled out and that row contributes nothing to the sum
Verification Status
verified_backend
Last Verified At
2026-06-29
metric

Total NGR

Net gaming revenue for the current query.

Aliases
key performance ngr
Backend Formula
sum(ngr)
Currency Basis
Reporting Currency: EUR | Exchange Rate Source: derived from EUR-normalized components; every input (ggr, bonus_payout, cashback, rakeback_calendar, adjustment_amount, correction) is divided by casino_transactions.conversion_rate before NGR is computed | Rate Timing: transaction-time booking rate captured when each gaming transaction is recorded, not a current or live snapshot | Missing Rate Fallback: a null conversion_rate falls back to 1 so the amount is treated as already EUR (1:1 passthrough); a zero rate is nulled out and that row contributes nothing to the component sums
Verification Status
verified_backend
Last Verified At
2026-06-29
Operational notes

Notes

item

The backend service builds its SQL inline and also loads restricted-country settings before the report is returned.

item

Hidden traffic-quality controls exist in backend filtering even though they are not exposed in the current FE.

item

Restricted-country exclusions are loaded through `getSelectCasinoSettingsService` and `getSelectSystemSettingsService` before the SQL is built.

item

FE keeps separate draft and active filter state; `Apply Filters` promotes draft controls, while `Refresh` only refetches the active snapshot.

item

Landing-page suggestions come from `useAffiliateLinkGroups` with the current landing input and draft start/end dates rather than the currently applied report snapshot.

item

Backend export appends the summary totals row to the CSV response.

Related references

Related pages

pageReporting

Canonical entrypoint for standalone reporting pages outside the main Dashboard widgets.

pageReporting / Affiliate Events Report

Audit log of the events and saved amounts the platform sent to the affiliate system, with per-currency successful totals and a CSV export.

pageReporting / Bonus Performance

Grouped bonus performance report for activations, amounts, deposits, withdrawals, GGR, and NGR by bonus item.

pageReporting / Card Approval Rates

Snapshot report of card deposit approval rates for NetworxPay, Paydex, and Carouseller, split by Trusted and NonTrusted players, with today versus the previous 30 days and today top decline reasons.

pageReporting / Change Notification Detail

Detail page for one audit entry, including actor metadata, description, and before/after comparison views.

pageReporting / Change Notifications

Audit list for recorded configuration, administrator, and system change entries with filters for actor, entity, and change type.