How casinos use telemetry for analytics
Why casino telemetry
Telemetry is a standardized flow of events about player actions and platform performance (bets, deposits, errors, stream quality, fraud patterns). It is needed to:- manage P&L (GGR/NGR, LTV, hold);
- keep SLO critical paths (rate, wallet, cash register);
- comply (RG/KYC/AML/KYT) and mitigate risks;
- Optimize marketing (attribution, ROAS, incrementality)
- improve the quality of content (categories, recommendations, tournaments).
Telemetry Map - What to Collect
1) Gaming events
`lobby_impression`, `tile_click`, `game_launch`- `bet_place` (stake, gameId, roundId, paytable/market)
- `bet_accept`, `bet_reject` (code, latency)
- `round_settle` (outcome, payout, rtp_snapshot)
- `void/refund` (reason_code)
2) Money and cash desk
`deposit_initiated/success/chargeback`- `withdrawal_request/approved/declined`
- `wallet_debit/credit/hold_release`
- `bonus_issued/wager_progress/wager_complete`
- Funding source/channel, currency, FX rate (fixed)
3) RG/Compliance
`rg_limit_set/updated/blocked_bet`- `session_timeout/self_exclusion`
- `kyc_started/verified/failed`
- `kyt_address_risk_scored` (on-chain), `aml_screening`
4) Marketing and Product
`utm_attribution`, `install_referrer`, `campaign_view/click`- `onboarding_step`, `paywall_view`
- `ab_variant_exposed`, `feature_flag_on/off`
5) Quality and QoS
`api_latency` (endpoint, p95), `error_5xx`
`stream_qos` (fps, dropped_frames, webrtc_rtt, bitrate)- `provider_sla` (timeouts, aborted_rounds)
Event Contract - Single Dictionary
Principles:- Single schema: required fields' event ',' ts', 'playerId', 'sessionId', 'traceId', 'source', 'schemaVer'.
- Monetary values are always/decimal + 'currency'.
- Time values in UTC with milliseconds.
- PII separately: personal data does not fall into the "raw" flow of product events.
json
{
"event": "bet_place", "schemaVer": "1. 8", "ts": "2025-10-17T14:23:11. 482Z", "playerId": "p_82917", "sessionId": "s_2f4c", "traceId": "tr_b1d7", "gameId": "pragm_doghouse_megaways", "roundId": "R-2025-10-17-14:23:10-PRAGM-12", "stake": {"amount":"2. 00","currency":"EUR"}, "wallet": {"type":"cash", "balanceBefore":"154. 40"}, "device": {"ua":"Mozilla/...","os":"Android","app":"web"}, "geo": {"country":"DE", "ip":"203. 0. 113. 5"}, "ab": {"exp":"lobby-grid","var":"B"}
}
Example of'stream _ qos':
json
{
"event": "stream_qos", "ts": "2025-10-17T14:23:12. 013Z", "playerId": "p_82917", "tableId": "evo_blackjack_23", "webrtc_rtt_ms": 142, "fps": 28, "dropped_frames": 6, "bitrate_kbps": 2400, "network":"4g"
}
Pipeline: from collection to insights
1. Ingest: SDK/collector (web/app/server) → шина (Kafka/NATS) → stream-processing (Flink/Spark/Kafka Streams).
2. Storage reel-time: ClickHouse/BigQuery (latency seconds-minutes), hot aggregates in Redis.
3. Batch storage: objects (S3) for "raw" events (immutable, versioned).
4. Semantic layer: single tables of facts/dimensions (players, sessions, bets, payments, rg_events).
5. Delivery/activation: dashboards (Grafana/Metabase/Looker), alerts, personalization triggers, backload to mark tools/CDP.
6. Data contracts: circuit tests (CI), compatibility control, data catalog (field descriptions, SLA).
Key showcases and models
Marketing Fanel: 'view → click → register → KYC → deposit → bet'. p95-transition time, leaks, funnels through channels/creatives.
Cohorts and retention: D1/D7/D30 retention, sticky factor (WAU/MAU), rolling-retention.
LTV and margin: LTV per source/country/segment, payback period, NGR after bonuses/commissions.
RTP/volatility: by game/provider/segment; deviations from expected ranges.
RFM segmentation: recency/frequency/monetary → personal offers/limits.
RG signals: night sessions, increase in frequency and amount of bets, cancellation of conclusions, "Dogon" after losing.
Fraud/AML/KYT: correlation of devices/maps/addresses, velocity rules, on-chain risk rate.
QoS of live: influence of FPS/RTT on 'bet _ reject' and churn; alerts for degradation.
Real-time vs Batch
Real-time (seconds): anti-fraud, RG locks, SLO alerts, personal promos in session, network rotation/PSP.
Near-real-time (minutes): management dashboards, campaign optimizations, provider limits.
Batch (hours): reports to regulators, incremental LTV/Churn models, MMM attribution.
Built-in metrics and alerts (example set)
SLO API: `bet. place p95 < 200ms`, `error_rate < 0. 3%`, `settle_latency p95 < 2s`.
Game health: Sharp rise in 'void/refund', RTP drop below confidence interval
Cashier: drop at step '3DS', growth 'declined _ by _ issuer'.
Live QoS: 'webrtc _ rtt _ ms> 300' for> 5% of region players, 'aborted _ rounds'> threshold.
RG: consecutive> N sessions> X hours, 'rg _ blocked _ bet' spike across segment.
Fraud: identical cards/devices for several accounts, depozit→vyvod carousels, webhooks without idempotency.
Privacy and compliance
PII isolation: personal data in a separate domain/storage, link to the pseudonymous' playerId '.
Minimization: "raw" events without PII; enrich - only on the server, according to the white list of fields.
Retention: different TTLs for events (gaming/box office/log security) according to jurisdictional requirements.
Legal grounds: consent/legitimate interest/contract; access audit, masking, on-demand deletion.
Immutable logging: WORM for critical logs, monitoring schema changes.
Example of analytical calculations (ideas)
Anomaly RTP: sliding window on the game/table; alert at deviation> N σ.
Promo uplift: CUPED/A/B incrementality by 'deposit _ rate' and 'bet _ frequency'.
Churn model: gradient boosting according to the signs of 7-day behavior (frequency/amounts/QoS/box office failures).
Real-time next best action: rule/model on the showcase feature → personal offer or advice to pause (RG).
Anti-patterns
Mixing OLTP and OLAP: heavy combat database reports break bet delays.
PII in raw events and "leaks" in BI dashboards.
Absence of data contracts: "field today is a line, tomorrow is a number."
Counters without traceId - it is impossible to link the player's end-to-end path.
"Blind" real-time without deduplication - double debits/payouts.
KPI without business context: view only 'pageviews' instead of 'TTFB→bet '/' CR deposit→bet'.
Absolute numbers without cohorting: No sign of who actually brings GGR.
Telemetry implementation checklist
Contract and fee
- Unified event schema, field dictionary, versions, UTC time.
- SDK/collector для web/app/server; tracing ('traceId') is end-to-end.
- Idempotency and deduplication per ingest.
Storage and pipeline
- Kafka/NATS + ClickHouse/BigQuery; S3 - immutable events.
- Semantic layer: facts/dimensions, compatibility tests (CI).
- Dashboards real-time and batch; alerts SLO/QoS/RG/Fraud.
Security and privacy
- PII isolation, access policy (RBAC/ABAC), audit.
- Masking, retention, legal grounds, removal procedures.
Models and actions
- LTV/Retention/Churn, as well as real-time RG rules.
- Attribution: UTM + post-install + incrementality.
- Personalization: next best action/offer.
Operation
- Data directory and table owners; SLO on display cases.
- Circuit regression tests; monitoring of ingest lags and errors.
- Exercises: replica tops, emergency recovery of shop windows.
Telemetry is the casino's "nervous system": it links money, product, streaming, marketing and compliance into one manageable whole. A strict event contract, reliable pipeline, default privacy and a bunch of real-time + batch turn raw logs into decisions: who and what to hold, where to invest in marketing, how to improve UX and where to reduce risks. Make telemetry a discipline - and the platform will grow predictably and safely.