Bonus system and platform-level freespins
Introduction
Bonuses and freespins are the central tool for attracting and retaining players in online casinos. Implementation at the platform level requires a flexible promotional engine, accurate accounting of the vager conditions and separate accounting of "wallets" for bonus funds. This article details the key components and processes that provide a full-fledged bonus system.
1. Promo Engine Architecture
1. Campaign Engine
Stores stock templates (deposit, no deposit, freespins) in the form of records with parameters: bonus type, size, vager, validity period, wagering conditions.
Processes triggers: events "first\_ deposit," "session\_ start," "custom\_ event" (for example, reaching turnover).
2. Workflow-service
Models the status of the action by user: 'initiated' → 'granted' → 'in _ wager' → 'completed/expired'.
Allows you to "hot" change the logic through the configuration without a code deposit.
2. Structure of "wallets" and balance sheet accounting
1. Individual wallets
Real Wallet: real player money.
Bonus Wallet: accrued bonuses and freespins blocked until the conditions of the vager are met.
2. Reserve funds
When the bonus is activated, the amount is reserved for Bonus Wallet, is not available for withdrawal, but participates in bets.
3. Bid partitioning
At each bet, the platform writes off first from Real Wallet, then automatically from Bonus Wallet in a given order (configurable).
3. Vager conditions and wagering
1. Vager parameters
Coefficient ('wager _ multiplier'), minimum and maximum bet when playing, excluded games.
2. Rate accounting
The required turnover counter is maintained:
Bonuses and freespins are the central tool for attracting and retaining players in online casinos. Implementation at the platform level requires a flexible promotional engine, accurate accounting of the vager conditions and separate accounting of "wallets" for bonus funds. This article details the key components and processes that provide a full-fledged bonus system.
1. Promo Engine Architecture
1. Campaign Engine
Stores stock templates (deposit, no deposit, freespins) in the form of records with parameters: bonus type, size, vager, validity period, wagering conditions.
Processes triggers: events "first\_ deposit," "session\_ start," "custom\_ event" (for example, reaching turnover).
2. Workflow-service
Models the status of the action by user: 'initiated' → 'granted' → 'in _ wager' → 'completed/expired'.
Allows you to "hot" change the logic through the configuration without a code deposit.
2. Structure of "wallets" and balance sheet accounting
1. Individual wallets
Real Wallet: real player money.
Bonus Wallet: accrued bonuses and freespins blocked until the conditions of the vager are met.
2. Reserve funds
When the bonus is activated, the amount is reserved for Bonus Wallet, is not available for withdrawal, but participates in bets.
3. Bid partitioning
At each bet, the platform writes off first from Real Wallet, then automatically from Bonus Wallet in a given order (configurable).
3. Vager conditions and wagering
1. Vager parameters
Coefficient ('wager _ multiplier'), minimum and maximum bet when playing, excluded games.
2. Rate accounting
The required turnover counter is maintained:
- ```
- remaining_wager = wager_multiplier bonus_amount on each spin:
- remaining_wager -= bet_amount
- ```
- 3. Timeouts and Expiration
-
if game_id not in excluded:
Each stock has a'valid _ from'and'valid _ to' to start activation and automatically cancel the outstanding bonus.
4. Freespins: Mechanics and Integration
1. Free Spin Pack
Stored in a separate entity'freespin _ package' with quantity, default rate and games list.
2. Separate counter
The client receives the number "free\_ spins\_ remaining" and "free\_ spin\_ bet\_ amount."
3. Return the result
The result of the freespin (win) first goes to Bonus Wallet, subject to the wager conditions (usually lower multiplier).
4. API interaction with the engine
At the start of each freespin, the engine asks for '/spin? mode=freespin&bet=…`; platform returns' session _ id ',' bet _ amount'and' remaining _ spins'.
5. Activation Trigger Scenarios
First deposit: auto-grant when the 'first _ deposit _ success' event is triggered.
Re-engagement: after a period of inactivity ('inactive _ days> N'), an offer of freespins is automatically sent.
VIP levels: upon reaching the turnover or deposit above the threshold - personalized bonuses.
6. Safety and protection from abuse
1. Antifraud modules
Checking multiaccounting, geo-blocking by IP, Device Fingerprinting.
2. Limit Checks
Limit maximum bonus per IP/profile, minimum average bet in wagering mode.
3. Audit Trail
Writing all operations with bonuses and freespins to immutable logs with user\_ id, timestamp and operation.
7. Monitoring and reporting
1. Key metrics
`bonuses_granted_total`, `bonuses_redeemed_total`, `freespins_used`, `average_wager_completion_rate`.
2. Dashboards
In Grafana or BI: dynamics of bonus activations by campaign, wagering CR, impact on ARPU.
3. Export reports
Automatic CSV/PDF upload for Marketing and Finance.
8. Integration with CI/CD and TMS
Configuration of the promo engine as code: storing YAML/JSON stock templates in the repository, automatic deploy via GitOps.
Using TMS (Lokalise, Crowdin): to translate stock names and description texts without developer intervention.
Conclusion
The platform bonus system and the mechanics of freespins require a clear separation of wallets, flexible workflow engines, accurate vager accounting and fraud protection. Properly configured triggers, reporting and the "promo engine as code" architecture ensure quick launch of new promotions, transparency of calculations and growth of key retention and LTV indicators.