Playbook

Managing the Negative GGR Buffer Across Commission Groups (GFG)

Core proposition:

When a slot group records a monthly "minus" for the casino (players won more than they staked), that minus becomes a free buffer for lowering commission on other groups in the same month. This document describes how to detect it, calculate it, and use it before month end, after which the counter resets to zero.

How to use this document

  • Executive Summary → brief overview of the concept and roles.
  • Sections 1-3 → Playbook objective, roles (Game Manager / CRM), and term definitions.
  • Section 4 → lifecycle: the daily process and when to turn on soft or hard promos.
  • Sections 5-6 → when to act (triggers), which tools to use, and how to restrict bonus wagering to the same game / provider (Bonus API).
  • Section 7 → joint promotions with the provider (co-funded promos).
  • Sections 8-12 → automation, metrics, risks, message templates, contacts, and escalation.
  • Section 13 → additional summary overview: all short explanations in one place.
  • Appendicestechnical contracts: pseudocode, webhook, cron, data schemas, stack.

Executive Summary

Intended audience and contents

A step-by-step guide for online casino operators on a white-label platform.

Its purpose is singular: turn a loss on a game group into a resource for saving on commission.

Concept

The casino pays slot providers a commission - but only on positive revenue (GGR). If, for some game group, players won more than they staked, GGR for that group turns negative. No commission is paid on a minus.

This "unpaid" minus is the buffer - a reserve that can be used to launch promo campaigns (free spins, cashback, tournaments) and thereby lower the overall commission spend on other groups.

Constraint: the buffer remains valid only until the end of the calendar month. At midnight on the 1st of the following month it resets to zero.

What the Playbook does

Detects

game fee groups (GFG) with negative GGR - automatically, every day.

Calculates the buffer

the size of the minus in money and the associated commission savings.

Groups games

automatically collects games with negative GGR into a service category for fast lobby placement and promo targeting.

Manages promos

which campaigns to run and when (soft in the early stages, aggressive near month end); wagered bonuses are granted via the Bonus API only within the same game or the same provider as the target GFG.

Coordinates with the provider

joint (co-funded) promotions to split costs.

Closes the month

automatically resets the buffer, clears the category, and generates a report.

Example

For group GFG-2, monthly GGR = -€5,000 (buffer = €5,000).

Commission on this group is 12%. So savings = 5,000 x 12% = €600.

This amount is allocated through promo campaigns to increase activity on other profitable groups - before month end.

Economics: net benefit

"Using the buffer" does not mean spending it in full at any cost. The key figure is net benefit: net = commission_saved − promo_cost, where promo_cost = free-spin liability + cashback payouts + prize-pool share + operational cost.

Example: a €5,000 buffer at 12% saves €600. A €4,000 jackpot tournament (50/50) costs the operator €2,000 → net = 600 − 2,000 = −€1,400. Such a tournament must not be run against the buffer. Rule: buffer promos start and continue only while marginal net > 0.

Responsibilities

Game Manager - owns the Playbook, makes decisions on the buffer and triggers, places games in the lobby, monitors GGR metrics, and negotiates with providers.

CRM - executors: launch campaigns, prepare creatives and banners per the Game Manager's instructions.

Attention

All threshold values, buffer amounts, and trigger percentages given in this Playbook are examples. Each brand has its own thresholds, which depend on traffic volume, commercial terms with providers, and internal financial policy. Automation principles also depend on the platform in use and its technical capabilities. Integrating the Playbook into a new brand's workflow requires adapting the numeric parameters and automation logic to that brand's specific conditions and platform.

1. Objective

Use negative GGR on a commission group (GFG) as a free buffer and, through promo campaigns, optimise commission on the remaining groups within the same calendar month.

Applicability precondition

This mechanism works only if the commercial contract with the provider nets GGR across groups (GFG) within a single monthly settlement - i.e. a group's negative GGR reduces the commission-liable base of other groups from the same provider. Without netting, negative GGR merely means no commission on that group itself and yields no savings elsewhere. Confirm the settlement model with Finance and the provider's commercial team before rollout.

Buffer flow diagram

GFG with negative GGR, free buffer, promo campaigns Horizontal flow: a group with negative GGR builds up a free buffer, which is spent through promo campaigns for fee savings. GFG (GGR < 0) Free buffer Promo campaigns Fee savings

Explanation

  • GFG (GGR < 0): a group running a minus for the month; no commission is charged on negative GGR.
  • Free buffer: "saved" commission - a reserve until the end of the calendar month.
  • Promo campaigns: commission savings via campaigns; the buffer must be used before midnight on the 1st of the following month.

Summary (Section 1)

The Playbook describes how to detect negative GGR, track the buffer, and use campaigns to optimise the remaining (positive-GGR) activity while the buffer lasts, until it resets at month end.

2. Roles and responsibilities

Who owns the process, who executes it, and who helps.

RoleArea of responsibility
Game ManagerPlaybook owner. Buffer strategy, trigger decisions, promo priorities, game placement in the lobby, GGR metric monitoring, negotiations with providers on co-funded campaigns. Daily check at 09:00.
CRMExecutors. Launching promos (bonuses, free spins, cashback, tournaments, missions), preparing creatives and copy, banners. Act on the Game Manager's instructions.
Ops / FinanceBuilding commission reports, controlling the promo budget.
Tech SupportIntegrations (webhook, ETL, cron), access management, incident resolution.

Decision matrix

ActionDecidesExecutes
Placing games in the lobbyGame ManagerGame Manager
Monitoring GGR metricsGame ManagerGame Manager
Starting / stopping buffer promosGame ManagerCRM
Choosing the joint promo format with the providerGame ManagerGame Manager + CRM
Setting limits (max bet, max win)Game ManagerTech Support
Granting wagered bonuses (Bonus API)Game ManagerCRM + Tech Support
Escalating GGR anomaliesGame ManagerOps
Building the final reportOps / FinanceAutomation + Ops

Summary (Section 2)

Game Manager - lead on this process. They decide when and which campaigns to launch, place games in the lobby, monitor GGR metrics, talk to providers, and oversee the result.

CRM - executors. They receive instructions from the Game Manager and implement them: configure promos in the system, prepare banners and copy.

Ops / Finance - build commission reports, control the budget. Tech Support - keeps the automation running.

3. Inputs and definitions

The following glossary defines the terms used in the remainder of this document.

TermDefinition
Calendar settlement periodFrom 00:00:00 on the 1st to 23:59:59 on the last day of the month. All negative balances reset to zero at 00:00:00 on the 1st of the following month.
GGR (Gross Gaming Revenue)Σ(stakes) − Σ(payouts). Provider commission is charged only on positive GGR.
Game providerAn external B2B slot supplier. A single provider can have several GFGs.
Game Fee Group (GFG)A subgroup of games sharing one commercial commission rate (e.g. GFG-1 → 15%, GFG-2 → 12%).
BufferThe magnitude of negative GGR (|GGR−|). Each €1 of buffer = a potential €1 commission saving until month end.
Wagering restrictionBonuses with a wager requirement (cashback, deposit bonus, bonus funds) are granted via the Bonus API tied to game_ids (the same game) and/or provider_id (the same provider) as the target GFG. Without this restriction, wagering leaks into other games → commission optimisation fails.
Buffer exampleIf GFG2's GGR = −€5,000, the buffer = €5,000. At a 12% commission on positive GGR, savings = 5,000 × 12% = €600.
Buffer modelbuffer_value is recomputed daily (00:30 UTC) as |min(0, month-to-date GGR)| - not a fixed accrual: if MTD GGR recovers toward zero, the buffer shrinks. buffer_available = buffer_value − already-committed promo budget.
Settlement currencyGGR and buffer are computed in the provider's settlement currency; for the monthly report amounts are normalized to EUR at the date's rate. Alerts show the amount in the brand/provider currency (e.g. USD, EUR).

Entity relationship diagram

Provider, GFG, Game and Calendar month relationships Provider and Game connect to GFG with 1:N relationships, GFG connects down to Calendar month with an N:1 relationship. Provider 1 : N GFG 1 : N Game N : 1 Calendar month

Explanation

  • Provider → GFG → Game: content hierarchy; one provider has several commission groups, each group has several games.
  • Calendar month: the period for calculating GGR and the buffer; negative balances reset to zero at midnight on the 1st.
  • Cardinalities (1 : N and N : 1): the numbers on the dashed lines show how many objects on the left correspond to objects on the right. 1 : N (Provider → GFG and GFG → Game) - "one to many": a single provider can have several GFGs, but each GFG belongs to only one provider; a single GFG has many games, but each game belongs to one GFG. N : 1 (GFG → Calendar month) - "many to one": GGR is calculated for many GFGs within one calendar month, but each GFG belongs to a single settlement month (the buffer does not carry over to the next).

Summary (Section 3)

GGR → the casino's revenue from games: total stakes minus total payouts. If players won more than they staked, GGR is negative.

Provider → the company supplying the slots (content). A single provider can have several game groups with different commission rates.

GFG (Game Fee Group) → a group of games sharing the same commission rate (e.g. 15% or 12%). GGR and the buffer are calculated separately for each such group.

Buffer → the monetary magnitude of the minus on a group. Example: if a group's GGR = −€5,000, the buffer = €5,000. Commission on positive GGR, say 12%, yields savings of 5,000 × 12% = €600 → the amount that remains effectively unpaid until month end.

Calendar month → the period from 00:00 on the 1st to 23:59 on the last day. At midnight on the 1st of the following month, all negative balances reset to zero and the buffer disappears.

4. Negative GGR lifecycle

Daily detection of negative GGR, buffer calculation, and selection of campaigns to launch.

Two distinct goals - do not conflate

A. Group recovery: soft promo raises the negative group's GGR toward zero/positive. This shrinks the buffer and restores commission on the group - a deliberate trade-off.

B. Buffer as a budget: the saved commission is a budget cap for promo (including retention and cross-promo), not an order to "raise this group's GGR at any cost." Free spins and cashback on the negative group deepen its minus - acceptable while it fits the buffer budget and net > 0.

Both frames are legitimate but must not be mixed within one campaign: decide up front whether a promo is recovering the group (A) or spending the buffer budget (B).

4.1 Detection algorithm

For each GFG the system checks: if GGR < 0, it tags the group NEGATIVE, adds the size of the minus to the buffer, and sends a Slack alert. The NEGATIVE tag is set immediately; buffer_value is recomputed daily (00:30 UTC) from MTD GGR. The Game Manager and CRM get an instant notification.

Pseudocode and technical details → App.

4.2 Daily cycle

  • 00:10 UTC → load stakes/payouts (ETL).
  • 00:30 UTC → automatic buffer calculation per GFG.
  • 01:00 UTC → the system schedules or updates promo campaigns.
  • 09:00 local time → Game Manager reviews and adjusts auto-promos; checks responsible-gaming (RG) flags.
  • Every hour → a bot posts a GGR heatmap to Slack; alerts if the buffer drops >50% in 24h - except during the burn phase (T3/T4), where the drop is expected (logged as informational; an alarm only if the drop is not explained by an active BUFFER promo).

Full procedure with technical detail → App.

4.3 Lifecycle diagram

Lifecycle: from ETL to buffer reset Horizontal timeline: ETL load at 00:10, buffer calculation at 00:30, branching into Soft Promo and Hard Burn for deviations under 72 hours, merging into a month-end buffer reset. 00:10 UTC ETL load 00:30 UTC Buffer calc Soft Promo Hard Burn (<72h) Month end Buffer reset Infrastructure Action Buffer

Explanation

  • Soft promo cycle: ordinary campaigns (turnover bonus, lobby featuring) to stabilize or grow positive GGR without aggressively burning the buffer.
  • Hard buffer burn: near month end (e.g. <72h) → stronger promos (free spins, cashback, tournaments, missions) to use up as much of the remaining buffer as possible before it resets.

Summary (Section 4)

Algorithm: for each game fee group (GFG), if GGR < 0, the group is tagged "NEGATIVE", the magnitude of the minus is added to the buffer, and a Slack notification is sent so that Ops and CRM see the situation immediately.

Daily cycle: overnight (00:10 UTC) stakes and payouts are loaded into the system from the data warehouse (ETL). At 00:30 the buffer is calculated per GFG and saved. At 01:00 the system looks at the buffer and plans/updates promos. In the morning (09:00 local time) a human reviews and, if needed, adjusts campaigns and checks responsible-gaming (RG) flags. Every hour a bot posts a GGR "heatmap" to Slack and raises an alarm if the buffer drops by more than 50% in a day.

Soft promo → ordinary campaigns (turnover bonuses, lobby featuring) to lift activity without sharply "burning" the buffer. Hard burn → when less than ~72 hours remain until month end and buffer is still available: more aggressive campaigns (free spins, cashback, tournaments, missions) are enabled to use as much of the buffer as possible before it resets.

5. Triggers and timelines

Triggers are events that determine the required action and deadline. The table below shows the trigger code (T1-T5), the event, the condition, the reaction time, and the action to take.

5.0 Trigger precedence

If several triggers' conditions hold at once, precedence is T5 > T4 > T3 > T2 > T1. T1 always fires on the first negative day. If fewer days remain in the month than T2 needs (3 consecutive days), T2 is skipped - on entering the final window, T3 applies directly.

5.1 Trigger summary table

IDEventConditionReaction timeAction
T1First negative dayGGR < 0 for one day≤ 1hTag the GFG, calculate the buffer, send a Slack alert
T2Persistent minus3 consecutive days with negative GGR≤ 24hTurn on a turnover bonus, feature the games in the lobby
T3Buffer not spent, final phase of the month≤ 3 calendar days left in the month and buffer > 0ImmediatelyAdd free spins and cashback (Bonus API, wagering restricted to the GFG); cap the max bet
T4Second-to-last day and buffer > 0Day = month end −1ImmediatelyLaunch a jackpot tournament (50/50 cost split) and missions
T5Month end23:59:59 on the last dayAutoClose promos, save the buffer report, reset tags

5.2 Trigger timeline (diagram)

T1 Day 1 T2 Day 3 T3 ≤3 days left T4 Penultimate day T5 Reset Detection Burn Phase

5.3 Trigger actions

T1 → tag the GFG, calculate the buffer, send a Slack alert. The Game Manager checks the games for anomalies.

T2 → the Game Manager instructs CRM to turn on a turnover bonus (1.5x points) and move the games to the top row of the lobby. Expected: stakes up ~+20% over 48h.

T3 → free spins (20 FS, max win €100), 5-10% cashback via the Bonus API with wagering restricted to games in the GFG, max bet capped at €5. In parallel, the Game Manager contacts the provider about co-funded campaigns → Section 7

T4 → jackpot tournament (prize pool 50/50 with the provider) and missions. Goal: use ≥ 80% of the remaining buffer before midnight.

T5 → automatically turn off all promos, generate a report, reset tags.

Technical details (fields, flags, tables) → App.

Summary (Section 5)

T1 → the first day a group's GGR went negative. Within an hour: tag the group, calculate the buffer, send a Slack alert.

T2 → minus for three days in a row. The Game Manager instructs CRM to turn on a turnover bonus and move the games to the top of the lobby.

T3 → no more than 3 calendar days left in the month and the buffer has not yet been burned. Free spins and cashback are added (Bonus API, wagering restricted to the target GFG only). The Game Manager also contacts the provider about co-funded campaigns.

T4 → second-to-last day of the month. Jackpot tournament (50/50 with the provider) and missions; goal → use ≥ 80% of the buffer before midnight.

T5 → end of the month. All promos are turned off automatically, a report is generated, and it is sent to Finance and CRM.

6. Operator tools and tactics

The tools the operator uses to manage campaigns and risks.

Mandatory rule: wagering restricted to the same game or provider

Any wagered bonus (cashback, bonus funds, deposit bonus with a wager requirement) launched off the buffer must be granted via the Bonus API with a strict binding:

  • Same game → field game_ids (games from the target GFG / the Negative GGR Buffer category), or
  • Same provider → field provider_id (all of that GFG's provider's games), if the campaign spans several slots from one supplier.

If wagering is not restricted, the player wagers the bonus on other GFGs or other providers → GGR grows where commission was not intended to be optimised, and the buffer effect is diluted. Without this rule, the Playbook's objective is unreachable.

6.1 Promo mechanics

Every wagering row in the table below must respect the game_ids / provider_id binding when granted via the Bonus API.

ToolDescriptionExpected effect
Turnover bonusPoints multiplier on turnover (1.5x-2x); credited only for GFG games / the buffer categoryGrowth in stakes on the target GFG
Lobby featuringGames in the top row, rotating every 15 minTraffic growth ~30%
Free spins20 FS on a specific slot (game_ids), €0.20 bet, max win €100Higher engagement and turnover in the target game; a cost (lowers NGR, deepens the buffer)
Cashback5-10% of losses via the Bonus API; 10x wager restricted to game_ids or provider_id of the target GFGRetention in the target GFG; a cost that lowers NGR - with no wagering "leakage" into other groups
MissionsTasks (3 steps) within GFG games; €10 bonus reward with the same wagering restrictionLonger session length on target slots
Jackpot tournament€4,000 prize pool, ranked by win/bet ratio within GFG games only, 24hVolume spike in the target group

6.2 Bonus API checklist (CRM + Tech Support)

StepActionCheck
1Game Manager provides gfg_id, the list of game_ids from the buffer category (or provider_id)The list matches the games in the negative GFG
2CRM creates the bonus via the Bonus API: amount, wager_multiplier, termThe template specifies allowed_game_ids or allowed_provider_id
3Tech Support confirms wagering is impossible outside the whitelistTest account: a bet on an "off-list" game is rejected
4Log entry in promo_log tagged BUFFER with restriction fieldsThe T5 report includes the bonus-to-GFG binding

6.3 Technical levers

  • Win cap → up to x500 of the bet to limit variance.
  • Dynamic banners → automatic rotation of GFG tiles in the lobby.
  • Max bet cap → €5 by default; €2 for high-RTP games during the burn phase.
  • Wagering whitelist → the Bonus API requires allowed_game_ids and/or allowed_provider_id for every wagered buffer bonus.

6.3.1 Consolidated limits table

LimitValueDefined in
Max win (overall)x500 of the bet§6.3
Max win (free spins)€100§6.1, §I
Max bet (default)€5§6.3
Max bet (high RTP, burn phase)€2§6.3
Bonus withdrawal cap€100§10
Cashback wager10x§6.1, §I

6.4 Creating a negative-GGR game category

For operational buffer management, the Game Manager creates a separate category (tag/group) in the casino back-office, into which games from negative-GGR GFGs are placed automatically or manually.

Why the category is needed

  • Fast lobby placement → move the whole category into the top row or a featured block (e.g. "Hot Games", "Trending") in a single action.
  • Targeted promos → tie free spins, cashback, or a tournament to exactly the games in this category rather than picking them manually.
  • Monitoring → a separate category gives a dashboard: how many games are "in the minus," total buffer volume, day-by-day dynamics.
  • Automation → when trigger T1 fires, the system automatically adds the game to the category; at month close (T5) it clears it.

Setup

ParameterValueConfigured by
Category nameNegative GGR Buffer (internal, not visible to players)Game Manager
Player visibilityNo (service category); displayed via a separate lobby block at the GM's discretionGame Manager
Add ruleAutomatic: when gfg_status = NEGATIVE, all of that GFG's games are added to the categoryTech Support
Remove ruleAutomatic: on status change to POSITIVE or on reset (T5) - but if the GFG has an active BUFFER bonus, removal is deferred until its valid_until (the whitelist is not broken mid-campaign)Tech Support
Lobby block (optional)"Popular Slots" / "Hot Games" - a player-facing external nameGame Manager + CRM

Process

  1. Initial setup → the Game Manager creates the category in the back-office; Tech Support configures the automatic rule (a webhook adds games when a GFG's status turns NEGATIVE).
  2. On T1 → the system automatically populates the category with games from negative-GGR GFGs.
  3. On T2-T4 → the Game Manager surfaces the category (or part of it) in a lobby block; CRM ties promos to this category.
  4. On T5 → the system clears the category; the lobby block is hidden until the next trigger.

Technical tool fields (code-level) → App.

Summary (Section 6)

Turnover Boost → a points multiplier on turnover, to get players to stake more.

Game Feature → showing games in the top row of the lobby; traffic gain ~30%.

Free Spins → free rounds with a bet and max-win cap.

Cashback → a percentage of losses returned as bonus funds.

Missions → tasks with a reward; they increase session length.

Jackpot Tournament → a tournament with a prize pool; drives a volume spike.

"Negative GGR Buffer" category → a service group in the back-office. When a game group's GGR goes negative, its games are automatically dropped into this category. The Game Manager can move them to the lobby or attach a campaign to the whole category in a single action, rather than selecting games individually. The category is cleared automatically at month end.

Bonus API and wagering: cashback and any wagered bonuses are granted only via the Bonus API, and only within the same games (or the same provider) as the negative GFG. Otherwise the player wagers the bonus outside the intended scope and the commission optimisation fails.

7. Joint campaigns with the provider

When a GFG's GGR goes negative, the Game Manager initiates talks with the provider about co-funded promos: splitting the cost lowers the operator's spend and strengthens the partnership.

7.1 When to engage

  • T2 and later → with a stable negative GGR on the group (3+ consecutive days).
  • T3-T4 → when ≤ 3 days remain in the month and buffer > 0 (T3), then the second-to-last day (T4); especially ahead of jackpot tournaments and missions.

7.2 Types of joint campaigns

TypeDescriptionTypical split
Jackpot tournamentShared prize pool50/50 (operator / provider)
Free spins / bonusesCo-funding giveaways; wagering restricted to the provider's games only (Bonus API)70/30 or 60/40
Exclusive slotsFeaturing games in the lobby + provider promoProvider banner integration
MissionsTasks with prizes from both sidesBy agreement

7.3 Arguments for the provider

  • Volume → joint promos boost turnover on their slots.
  • Visibility → games land in the top row of the lobby, banners, mailers.
  • Balance → negative GGR means low commission for the provider too; the shared goal is to bring interest back to the group.
  • Longevity → joint campaigns stabilize metrics and strengthen the partnership.

7.4 Process

  • Step 1. Negative GGR detected (T1/T2) → the Game Manager sees a Slack alert.
  • Step 2. Assessment → buffer size, days remaining in the month, the group's history.
  • Step 3. Contact the provider → an email/call with justification and a co-funded promo proposal (tournament, free spins, missions).
  • Step 4. Agreement → formats, timelines, cost split, limits (max bet, max win); for wagered bonuses - game_ids / provider_id whitelist in the Bonus API.
  • Step 5. Launch → CRM configures the promo and grants bonuses via the Bonus API with wagering tied to GFG games (see → Section 6).
  • Step 6. Results → include the joint campaign's results in the Provider_Fee_Optimization_Report.

7.5 Provider outreach template

Subject: Joint campaign for GFG [ID] - negative GGR for [month]

Hello,

Group [GFG ID / name] recorded negative GGR of €[X] for [month]. A promo is planned to restore activity on this group before month end.

Proposed joint campaign:
- Type: [tournament / free spins / missions]
- Proposed split: [e.g. 50/50]
- Timeline: through [date]
- Wagering: wagered bonuses - restricted to your games in this GFG only (Bonus API whitelist)

Expected effect: increased turnover on your slots and stabilised metrics. Details and integration formats may be discussed as required.

Best regards,
[Game Manager]

7.6 Escalation

If the provider does not respond within 48 hours or declines the proposal → the Game Manager logs the decision in #financial-ops and continues working the buffer with in-house promos (no co-funding).

Summary (Section 7)

Co-funded promo → campaigns paid for by both the operator and the provider. For example, a jackpot tournament with a 50/50 prize pool. The arrangement also benefits the provider: their slots receive traffic and visibility.

Who talks to the provider: the Game Manager. The Game Manager writes to the provider and agrees the format and cost split. CRM implements the campaign once it is agreed.

If the provider declines: the Game Manager logs the decline in Slack and runs the campaigns at the operator's own expense.

8. Automation and integration

The system automatically fires trigger actions through a webhook to the promo engine and a cron job for hourly recalculation.

8.1 How it works

  • Webhook → when a trigger fires (T1-T4), the system automatically sends a request to the promo engine with campaign parameters (type, multiplier, validity period, game_ids / provider_id for the Bonus API).
  • Cron → a script runs every hour to recalculate the buffer and update GFG statuses.
  • Escalation → if an automated promo is not spending down the buffer, the system notifies the Game Manager for a manual review and extra measures.

Technical details (endpoint, JSON, cron command, escalation schema) → App.

9. Metrics and KPIs

The metrics used to verify that the buffer and promos are working as intended. Below → the formula, target value, and the reason each metric is tracked.

KPIFormulaTargetWhy
ΔGGR per GFG(GGR_today − GGR_yesterday) / |GGR_yesterday|≥ −15% after T2Buffer stabilization
Turnover WoWStakes_7d / Stakes_prev_7d − 1≥ +20%Promo effect
Promo CTRClicks / Impressions≥ 4%Creative effectiveness
Reg→Dep CRDepositors / Registrations≥ 35%Traffic quality
D7 retentionActive_D7 / Day0≥ 25%Retained player base (secondary)
Net benefitcommission_saved − promo_cost> 0Buffer economics (primary)
Buffer utilizationbuffer_used / buffer_valuecontext for netHow much of the buffer is used

Summary (Section 9)

ΔGGR per GFG → how much a group's GGR changed for the day relative to the previous day. After T2 the target is a decline no worse than −15%, indicating that the buffer is stabilising.

Turnover WoW → turnover over the last 7 days versus the previous 7 days. Target → growth of ≥ 20%, indicating that the promo is lifting stakes.

Promo CTR → the share of clicks out of banner/campaign impressions. Target ≥ 4% → the creative is effective.

Reg→Dep CR → how many registrants made a first deposit. Target ≥ 35% → traffic quality.

Retention D7 → the share of players active on day 7 from their first visit. Target ≥ 25% → a retained player base.

10. Risks and mitigations

The principal risks when working with the buffer and promos, and how they are mitigated.

RiskDescriptionMitigation
Bonus abusePlayers chase free spins and cashbackCap on withdrawals from bonus winnings (e.g. €100); device fingerprinting against duplicates
Wagering leakageA wagered bonus gets wagered on other GFGs / another provider → GGR grows in the wrong placeMandatory Bonus API: allowed_game_ids or allowed_provider_id; QA before launch
Promo overloadToo many banners → CTR dropsCreative cap (e.g. 4 per hour); A/B testing of copy
Concentrated-promo abuseNarrow whitelist + high-value bonuses on a known game set → predictable target for bonus hunters (regardless of group GGR)Bonus withdrawal cap; velocity and multi-account checks before a BUFFER grant; no deposit bonus to a player with in_out < 0 (Shark protocol, per-player)

Summary (Section 10)

Bonus abuse: players may pursue free spins and cashback exclusively. The risk is reduced with a cap on withdrawals from bonus winnings (e.g. €100) and duplicate checks via device fingerprinting.

Wagering leakage: if a bonus can be wagered on the wrong slots, the commission optimisation fails. Every wagered bonus - only via the Bonus API, tied to the game or provider of the target GFG.

Promo overload: too many banners → CTR drops. The number of creatives per hour is capped (e.g. 4) and copy variants are tested (A/B).

11. Message templates

Channels: #promo_ops - automated T1-T4 trigger alerts (tag, buffer, promo launch); #financial-ops - operator notes, escalations, commission reports, and co-funded decisions.

Sample Slack alerts:

Date: 2026-07-02
---------------
🎰 Example.casino
---------------
Provider: In Out
GFG #33 ❗️-765,43 USD
---------------
Trigger: T1
👉 Group tagged NEGATIVE · Buffer recorded
Date: 2026-06-30
---------------
🎰 Example.bet
---------------
Provider: ELA Games
GFG #407 ❗️-1.234,56 EUR
---------------
Trigger: T2
👉 Turnover bonus ×1.5 · Active until 23:59 UTC

Summary (Section 11)

A Slack message template for when the buffer fires: who sees the alert, which group (GFG #…), the minus amount in euros, which trigger fired (e.g. T2), and which campaign is active until when. This keeps the whole team in the loop instantly, without extra emails.

12. Contacts and escalation

Who to contact and within what timeframe for buffer and promo questions.

RoleResponsibilityChannelResponse time
Game ManagerPlaybook owner, buffer strategy, triggers, game placement in the lobby, GGR monitoring, provider negotiationsSlack≤ 1h
CRMPromo execution (creatives, campaigns, banners)Slack≤ 2h
Ops / FinanceCommission reports, budget controlSlack / Email≤ 4h
Tech SupportIntegrations, access, incident resolutionClick App4h

Summary (Section 12)

Game Manager → owns the Playbook, places games in the lobby, monitors GGR metrics, decides on triggers, and negotiates with providers. Reach them on Slack, response within 1 hour.

CRM → executors: launch promos, prepare creatives and banners per the Game Manager's instructions. Response within 2 hours.

Ops / Finance → build commission reports, control the budget. Tech Support → technical incidents, integrations, access; via Click App, response within 4 hours.

13. Summary overview

Expand all

Short explanations for every section - gathered in one place for quick review. Full summaries remain at the end of the corresponding sections 1-12 (except section 8, which has no separate summary).

1 Objective

The Playbook describes how to detect negative GGR, track the buffer, and use campaigns to optimise the remaining (positive-GGR) activity while the buffer lasts, until it resets at month end.

2 Roles and responsibilities

Game Manager - lead on this process. They decide when and which campaigns to launch, place games in the lobby, monitor GGR metrics, talk to providers, and oversee the result.

CRM - executors. They receive instructions from the Game Manager and implement them: configure promos in the system, prepare banners and copy.

Ops / Finance - build commission reports, control the budget. Tech Support - keeps the automation running.

3 Inputs and definitions

GGR → the casino's revenue from games: total stakes minus total payouts. If players won more than they staked, GGR is negative.

Provider → the company supplying the slots (content). A single provider can have several game groups with different commission rates.

GFG (Game Fee Group) → a group of games sharing the same commission rate (e.g. 15% or 12%). GGR and the buffer are calculated separately for each such group.

Buffer → the monetary magnitude of the minus on a group. Example: if a group's GGR = −€5,000, the buffer = €5,000. Commission on positive GGR, say 12%, yields savings of 5,000 × 12% = €600 → the amount that remains effectively unpaid until month end.

Calendar month → the period from 00:00 on the 1st to 23:59 on the last day. At midnight on the 1st of the following month, all negative balances reset to zero and the buffer disappears.

4 Negative GGR lifecycle

Algorithm: for each game fee group (GFG), if GGR < 0, the group is tagged "NEGATIVE", the magnitude of the minus is added to the buffer, and a Slack notification is sent so that Ops and CRM see the situation immediately.

Daily cycle: overnight (00:10 UTC) stakes and payouts are loaded into the system from the data warehouse (ETL). At 00:30 the buffer is calculated per GFG and saved. At 01:00 the system looks at the buffer and plans/updates promos. In the morning (09:00 local time) a human reviews and, if needed, adjusts campaigns and checks responsible-gaming (RG) flags. Every hour a bot posts a GGR "heatmap" to Slack and raises an alarm if the buffer drops by more than 50% in a day.

Soft promo → ordinary campaigns (turnover bonuses, lobby featuring) to lift activity without sharply "burning" the buffer. Hard burn → when less than ~72 hours remain until month end and buffer is still available: more aggressive campaigns (free spins, cashback, tournaments, missions) are enabled to use as much of the buffer as possible before it resets.

5 Triggers and timelines

T1 → the first day a group's GGR went negative. Within an hour: tag the group, calculate the buffer, send a Slack alert.

T2 → minus for three days in a row. The Game Manager instructs CRM to turn on a turnover bonus and move the games to the top of the lobby.

T3 → no more than 3 calendar days left in the month and the buffer has not yet been burned. Free spins and cashback are added (Bonus API, wagering restricted to the target GFG only). The Game Manager also contacts the provider about co-funded campaigns.

T4 → second-to-last day of the month. Jackpot tournament (50/50 with the provider) and missions; goal → use ≥ 80% of the buffer before midnight.

T5 → end of the month. All promos are turned off automatically, a report is generated, and it is sent to Finance and CRM.

6 Operator tools and tactics

Turnover Boost → a points multiplier on turnover, to get players to stake more.

Game Feature → showing games in the top row of the lobby; traffic gain ~30%.

Free Spins → free rounds with a bet and max-win cap.

Cashback → a percentage of losses returned as bonus funds.

Missions → tasks with a reward; they increase session length.

Jackpot Tournament → a tournament with a prize pool; drives a volume spike.

"Negative GGR Buffer" category → a service group in the back-office. When a game group's GGR goes negative, its games are automatically dropped into this category. The Game Manager can move them to the lobby or attach a campaign to the whole category in a single action, rather than selecting games individually. The category is cleared automatically at month end.

Bonus API and wagering: cashback and any wagered bonuses are granted only via the Bonus API, and only within the same games (or the same provider) as the negative GFG. Otherwise the player wagers the bonus outside the intended scope and the commission optimisation fails.

7 Joint campaigns with the provider

Co-funded promo → campaigns paid for by both the operator and the provider. For example, a jackpot tournament with a 50/50 prize pool. The arrangement also benefits the provider: their slots receive traffic and visibility.

Who talks to the provider: the Game Manager. The Game Manager writes to the provider and agrees the format and cost split. CRM implements the campaign once it is agreed.

If the provider declines: the Game Manager logs the decline in Slack and runs the campaigns at the operator's own expense.

9 Metrics and KPIs

ΔGGR per GFG → how much a group's GGR changed for the day relative to the previous day. After T2 the target is a decline no worse than −15%, indicating that the buffer is stabilising.

Turnover WoW → turnover over the last 7 days versus the previous 7 days. Target → growth of ≥ 20%, indicating that the promo is lifting stakes.

Promo CTR → the share of clicks out of banner/campaign impressions. Target ≥ 4% → the creative is effective.

Reg→Dep CR → how many registrants made a first deposit. Target ≥ 35% → traffic quality.

Retention D7 → the share of players active on day 7 from their first visit. Target ≥ 25% → a retained player base.

10 Risks and mitigations

Bonus abuse: players may pursue free spins and cashback exclusively. The risk is reduced with a cap on withdrawals from bonus winnings (e.g. €100) and duplicate checks via device fingerprinting.

Wagering leakage: if a bonus can be wagered on the wrong slots, the commission optimisation fails. Every wagered bonus - only via the Bonus API, tied to the game or provider of the target GFG.

Promo overload: too many banners → CTR drops. The number of creatives per hour is capped (e.g. 4) and copy variants are tested (A/B).

11 Message templates

A Slack message template for when the buffer fires: who sees the alert, which group (GFG #…), the minus amount in euros, which trigger fired (e.g. T2), and which campaign is active until when. This keeps the whole team in the loop instantly, without extra emails.

12 Contacts and escalation

Game Manager → owns the Playbook, places games in the lobby, monitors GGR metrics, decides on triggers, and negotiates with providers. Reach them on Slack, response within 1 hour.

CRM → executors: launch promos, prepare creatives and banners per the Game Manager's instructions. Response within 2 hours.

Ops / Finance → build commission reports, control the budget. Tech Support → technical incidents, integrations, access; via Click App, response within 4 hours.

Appendices - technical

Reusable technical contracts: pseudocode, APIs, cron, data schemas and the stack. The operating model is in sections 1-13; these appendices cover implementation detail.

A. Negative GGR detection algorithm (pseudocode)

for provider in providers:
    for gfg in provider.gfgs:
        if gfg.ggr < 0:
            gfg.tag = "NEGATIVE"
            gfg.buffer_value = abs(gfg.ggr)
            send_slack(
                channel="#promo_ops",
                msg="🛑 NEGATIVE GGR detected: {gfg.id} -> €{gfg.ggr:,.2f}"
            )

B. Webhook (e.g. SoftSwiss / GameAggregator)

Endpoint: POST /api/v1/promotions/trigger

Content-Type: application/json

{
  "gfg_id": "12345",
  "event": "NEGATIVE_GGR",
  "buffer": 1587.32,
  "action": "TURNOVER_BOOST",
  "multiplier": 1.5,
  "valid_until": "2026-07-31T23:59:59Z",
  "meta": {
    "trigger_id": "T2",
    "initiator": "auto_buffer_bot"
  }
}

C. Bonus API (wagered bonuses)

Endpoint: POST /api/v1/bonuses/grant (or the platform's equivalent). Required wagering-restriction fields:

{
  "user_id": "uuid",
  "gfg_id": "12345",
  "amount": 50.00,
  "currency": "EUR",
  "wager_multiplier": 10,
  "allowed_game_ids": ["game_a", "game_b"],
  "allowed_provider_id": "provider_xyz",
  "valid_until": "2026-07-31T23:59:59Z",
  "meta": {
    "trigger_id": "T3",
    "promo_tag": "BUFFER"
  }
}

Specify either allowed_game_ids (a narrow binding to GFG slots) or allowed_provider_id (all of that GFG's provider's games). Leaving both fields empty is not allowed for buffer promos.

D. Cron (hourly recalculation)

# Runs every hour
0 * * * * /opt/ops/ggr_optimiser.sh --month $(date +%Y-%m)

E. Data tables

Table / storePurposeKey fields
GGR_SnapshotGGR snapshots (stakes/payouts) - updated by ETL at 00:10 UTCgfg_id, date, bets, wins, ggr
gfg_statusGFG status and buffer - updated by Lambda at 00:30 UTCgfg_id, tag (NEGATIVE/OK), buffer_value, buffer_available
promo_logLog of launched promos tagged BUFFERpromo_id, gfg_id, type, trigger_id, allowed_game_ids, allowed_provider_id, start, end
S3: Provider_Fee_Optimization_ReportFinal monthly PDF reportmonth, provider_id, buffer_used, commission_saved, promo_cost, net_saving

F. Escalation schema

Escalation flow for negative GGR Flowchart: a GGR below zero trigger launches auto-promo, then checks the buffer; if the buffer is fine the flow is done, otherwise Game Manager steps in with additional promo. GGR<0 mcbile-800 with orange-50 text, Buffer ok amber-900 with zinc-50 text, promo boxes teal-800, Game Manager slate-800. Legend centered. GGR < 0 Auto-promo Buffer ok? yes Done no Game Manager Additional promo Trigger Decision Promo Success Manager

Explanation

  • GGR < 0: the system launches auto-promo per the trigger rules.
  • Buffer OK?: checks whether the reserve is enough for the planned campaigns.
  • yes → process complete. no → the Game Manager brings in additional promos manually.

G. Daily schedule (UTC)

Time (UTC)StepDescription
00:10ETL loadPull raw stakes/payouts from storage into the GGR_Snapshot table.
00:30Buffer calculation (Lambda)Run the algorithm (A); save buffer_available per GFG.
01:00Promo evaluationRead the buffer; plan or update campaigns for groups with positive GGR.
09:00 localManual review (Game Manager)Confirm or adjust auto-promos; check responsible-gaming (RG) flags.
Every hourMonitoring botPost a GGR change heatmap to Slack; alert if the buffer drops >50% in 24h - except during the burn phase (T3/T4), where the drop is expected.

H. Detailed action sheets (technical fields)

T1 → Base tag and buffer

  • Automation: set the NEGATIVE flag in the gfg_status table; save buffer_value = |GGR−|.
  • Operator: check the game list for anomalies (e.g. a spike in refunds); leave a short note in #financial-ops.

T5 → Close and reset

  • Automatically turn off all promos tagged BUFFER.
  • Generate the Provider_Fee_Optimization_Report (PDF); save to S3; send to Finance, CRM, and RG.

I. Promo tool fields

ToolKey fieldsTypical values
Turnover bonusmultiplier1.5× - 2×
Lobby featuringposition durationTop row, 15 min
Free spinsfs_count bet_size max_win20, €0.20, €100
Cashbackpercent cap wager allowed_game_ids allowed_provider_id10%, €500, 10×, GFG / provider list
All wagered bonusesallowed_game_ids and/or allowed_provider_idRequired for BUFFER; empty = reject
Missionstasks reward3 steps, €10
Jackpot tournamentpool ranking duration€4,000, win/bet ratio, 24h

J. Technology stack

A summary of the components without which the Playbook cannot run end-to-end. Specific vendors (SoftSwiss, GameAggregator, etc.) are examples of a white-label platform; when integrating on a different stack, keep the same roles and data contracts from A-I.

Playbook technology stack Five layers top to bottom: data storage and ETL, automation jobs, integration APIs, operator platform services, and ops notifications. Vertical arrows point downward, following the main data and control flow. Data Raw bets/wins DW / lake ETL 00:10 GGR_Snapshot Ops store Tables + S3 Automation Buffer job Lambda 00:30 Cron hourly ggr_optimiser Triggers T1-T5 engine Integrations Promo webhook /promotions/trigger Bonus grant /bonuses/grant Provider B2B Co-funded promos Platform Back-office Lobby + category Promo engine FS, cashback, missions Bonus API Wager whitelist Ops Slack Alerts T1-T4 Monitor bot GGR heatmap Click App ITSM tickets Infrastructure Automation Integration Platform

Explanation

  • Data → Automation: ETL populates GGR_Snapshot; the buffer job writes gfg_status and fires triggers.
  • Automation → Integrations: the orchestrator calls the promo webhook and the Bonus API with a per-GFG whitelist.
  • Platform: the back-office, promo engine, and Bonus API - where the Game Manager and CRM execute the Playbook.
  • Ops: Slack and monitoring provide feedback; Click App is Tech Support's integration channel.
LayerComponentRole in the PlaybookRelated sections
Operator platformWhite-label back-office§6.4, §HNegative GGR Buffer category, lobby blocks, bet limits, RG flags§6.4, §H
Promo engine§8, §B, §ILaunches TURNOVER_BOOST, FS, cashback, missions, tournaments via webhook§8, §B, §I
Bonus API§6, §C, §IGrants wagered bonuses; whitelist allowed_game_ids / allowed_provider_id§6, §C, §I
Game catalog / GFG mapping§3, §6Maps games to commission groups (GFG) and providers§3, §6
Data and analyticsRaw stakes/payouts source§4, §E, §GDW / lake / platform replica - the input for calculating GGR§4, §E, §G
ETL (daily, 00:10 UTC)§4.2, §E, §GLoads into GGR_Snapshot§4.2, §E, §G
Operational store§E, §HTables GGR_Snapshot, gfg_status, promo_log§E, §H
S3 (or equivalent object storage)§E, §HArchive for Provider_Fee_Optimization_Report (PDF)§E, §H
Automation and computeBuffer calculator (Lambda / worker)§A, §G, §HAlgorithm A at 00:30 UTC: NEGATIVE tag, buffer_value, buffer_available§A, §G, §H
Cron / scheduler§8, §D, §GHourly recalculation (ggr_optimiser.sh), T5 month-end reset§8, §D, §G
Trigger orchestrator§5, §8, §BEvaluates T1-T5, calls the webhook and Bonus API, tags BUFFER in promo_log§5, §8, §B
IntegrationsWebhook POST /api/v1/promotions/trigger§BAuto-promo on NEGATIVE_GGR (SoftSwiss / GameAggregator example)§B
Bonus API POST /api/v1/bonuses/grant§CGrants bonuses with wagering restricted by GFG§C
Provider B2B API (optional)§7Co-funded campaigns, tournament agreements with the provider§7
Notifications and opsSlack§11, §12, §AT1-T4 alerts (#promo_ops, #financial-ops), templates §11§11, §12, §A
Monitoring bot§4.2, §GHourly GGR heatmap; alert if the buffer drops >50% in 24h§4.2, §G
Click App / ITSM§2, §12Tech Support tickets: access, integration failures, webhook/cron setup§2, §12
Security and accessAPI keys / service accounts§B, §CWebhook, Bonus API, ETL - separate accounts with least-privilege access§B, §C
Audit trail§10, §E, §Hpromo_log, Slack archive, T5 PDF report - traceability for buffer decisions§10, §E, §H

Minimal MVP stack: ETL → GGR_Snapshot → buffer job → gfg_status → Slack alert (T1) → manual promo launch in the back-office. Full automation adds cron, webhook, Bonus API with a whitelist, and the month-end T5 pipeline.