How to calculate the ROI of a casino ad campaign
1) Basic concepts (in short)
Spend - advertising expenses (media/creatives/tracker, etc.).
GGR (Gross Gaming Revenue) - bets minus winnings (gross revenue).
NGR (Net Gaming Revenue) - GGR minus bonuses/freespins, jackpot contributions, provider fees, payment fees, taxes/duty, refunds/chargeback.
ROAS = NGR / Spend.
ROI = (NGR − Spend − other direct costs )/Spend.
CPA = Spend/FTD (primary deposits).
ARPU_Dn - average revenue per player for n days (usually by NGR).
Payback (days) - how many days does the cumulative ARPU of the cohort cover the CPA.
LTV - discounted revenue per player for the entire life cycle.
2) Correct data funnel
1. Cliques → Registration → KYC → FTD → 2nd Dep → Retention
2. All events are s2s postbacks (server-server), a single 'click _ id '/' sub _ id' scheme.
3. Sections: source/creative/geo/device/land/click date and FTD date.
4. Revenue is considered cohort (by click date or FTD - the main thing is to be consistent).
3) Formulas (operational level)
3. 1. GGR → NGR conversion
NGR = GGR
− Bonuses and promos (including free spins)
− Share in jackpot funds (if applicable)
− Gaming Provider Commission (% of GGR)
− Payment systems commission − (% of deposits/withdrawals)
− Taxes/Gaming/Licenses (if NGR)
− Chargeback/Refund
3. 2. Channel economics
ROAS = NGR / Spend
ROI = (NGR − Spend − )/Spend
CPA = Spend / FTD
ARPU_Dn = NGR_Dn / FTD
Payback_dni ≈ CPA/( average daily ARPU to payback point)
LTV = Σ (NGR_t / FTD) / (1 + r)^t
where r is the monthly discount rate (e.g. 1-2 %/month).
4) Calculation example (D30, simplified)
Inputs (one channel per month):- Spend = 50 000
- Clicks = 100,000, Registrations = 8,000, KYC = 5,000, FTD = 1,000
- GGR_D30 per 1 FTD = 140 ⇒ GGR total = 140,000
- Bonuses/FS = 20,000 (20 per FTD)
- Game provider fees = 10% GGR = 14,000
- Payment fees: deposits for D30 = 120,000, fee 3% ⇒ 3,600
- Gaming duty/taxes (if attributed to NGR): 5% GGR ⇒ 7,000
- Chargeback/Refund: 1% of deposits ⇒ 1,200
- 140 000 − 20 000 − 14 000 − 3 600 − 7 000 − 1 200 = 94 200
- ROAS = 94 200 / 50 000 = 1,884 (188,4%)
- ROI = (94,200 − 50,000 − other direct costs )/50,000
ROI = (94 200 − 50 000 − 5 000) / 50 000 = 0,784 (78,4%)
CPA = 50 000 / 1 000 = 50
ARPU_D30 = 94 200 / 1 000 = 94,2
Payback score: average daily ARPU ≈ 94.2/30 = 3.14 →
50/3.14 ≈ 16 days until channel payback on average (crude score; more correctly - according to the cumulative ARPU curve).
5) Features on payment models
CPA: simple - NGR cohorts vs. media-Spend; make sure that the CPA reflects quality (D7/D30, 2nd-dep).
RevShare: consider the net NGR flow for attracted players minus the partner commission, compare with the channel costs. It is important to predict the long tail of LTV.
Hybrid (CPA + RS): consider one-time CPA + NGR share; analyze in a single cohort report.
6) Incrementality and attribution
A/A or geo-holdout: we keep part of the traffic without displaying ads/offers - we estimate the increase to the basic organics.
Server-side tracking: reduces attribution loss and double counting.
SKAN/Privacy Sandbox/Web2App: for mobile, use probabilistic models and MMM (marketing mix modeling) as an anchor to the truth.
7) What to accurately consider in expenses (often forgotten)
Game provider commissions (usually% of GGR).
Payment commissions for deposits and conclusions (different in methods).
Bonus cost: The real value of bonuses and freespins (EVs).
Gaming taxes/reg. charges - if not factored higher along the P&L line.
Chargeback/Refund and channel operating costs (creative production, anti-fraud, tracker, tools).
Fraud/bot traffic - clean cohorts; otherwise the ROI will be inflated.
8) Table template (minimum columns)
9) Sensitivity analysis (what if...)
+ 10% to payment fees → how does the ROI change?
− 20% to GGR/FTD (seasonal drawdown) → do you get into Payback?
+ X% to bonuses (generous promotional grid) → ↑ retention, but NGR/FTD ↓ - look for the maximum.
The CPA shift is ± 5-10 for hybrid schemes → see the breakeven CPA threshold.
10) Checklists
Before starting the channel
- s2s-postbacks reg/KYC/FTD/2nd dep, timezone/currency check
- GGR→NGR formulas agreed and what exactly goes into NGR
- Opened sections: source/creative/geo/device/land
- Set up alerts of postback delays (> 15 minutes), CR jumps, chargeback
- Test cohort A/A or geo-holdout for incrementality
At Week 1
- Statistic threshold: ≥300 -500 clicks/bundle or ≥30 -50 reg before decisions
- Bonus costa control and promotional mechanic (no margin eating)
- First cumulative ARPU curves (D1→D7→D14)
To D30/D60/D90
- LTV curve vs CPA (is Payback reached on target)
- Rate indexing (CPA/Hybrid/RS) by cohort quality
- Retro by creative/land/geo; transferring insights to scale
11) Frequent errors
1. Count according to GGR, ignoring bonuses and commissions → inflated ROI.
2. Compare different channels without normalization by time zone/currency.
3. Solve by 1-2 FTD (no statistical power).
4. Ignore 2nd-dep rate, D7/D30 - "cheap FTDs" break NGR.
5. Do not take into account payment fees and chargeback.
6. Zero incrementality check - we pay for organic matter.
12) 30-60-90 ROI Implementation Plan
0-30 days (Accounting MVP):- Unified definitions of GGR/NGR, connected s2s-postbacks, section table.
- Dashbord: Spend → CPA → NGR_D7/D30 → ROAS/ROI, alerta of delays/CR.
- First cumulative ARPU curves and Payback score.
- LTV model up to D90, channel comparison by quality (2nd-dep, Retention).
- Incremental tests: geo-holdout/A/B; adjustment of rates/capavanya.
- Report templates for purchasing/creative/finance.
- MMM/LTV forecast for seasonality and equities; "what-if" scenarios.
- Incident and Reconciliation Procedures; quarterly audit of formulas and sources.
- Translation of decision-making into cohort KPIs.
The exact ROI in iGaming is built on NGR and cohort logic rather than "beautiful GGR" or EPC. Standardize funnel and formulas, count bonus-cost and commissions, check incrementality and quality (D7/D30, 2nd-dep), and make decisions on the LTV vs CPA curve. Then the channel ceases to be a lottery, and the ROI turns into a controlled metric, depending on your hypotheses, and not on luck.