Bonuses & Promotions
The Bonuses & Promotions module lets you create and manage bonus offers, promotional campaigns, promo codes, and free bet tokens. Effective promotion management is key to player acquisition and retention.
Overview
Two sidebar items cover this area: Bonuses for managing bonus templates and active player bonuses, and Promotions for campaigns, promo codes, and tokens.
Bonus Templates
Bonus templates define the rules for bonuses that can be awarded to players. Each template specifies the bonus type, wagering requirements, and eligibility criteria.
Creating a Bonus Template
- 1
Navigate to Bonuses
Click 'Bonuses' in the sidebar to see the template library.
- 2
Click 'Add New Template'
Opens the template creation form.
- 3
Fill in template details
Specify the name, type, description, wagering requirements, minimum odds, maximum bonus amount, and expiry period.
- 4
Activate the template
Toggle the 'Active' switch to make the template available for distribution.
Template Fields
| Column / Field | Description |
|---|---|
| Name | Internal name for the bonus (e.g., 'Welcome Bonus 100%') |
| Type | welcome, deposit_match, free_bet, cashback, reload |
| Description | Player-facing description of the bonus offer |
| Min Odds | Minimum odds required for wagering contribution |
| Wagering Multiplier | Number of times the bonus must be wagered before withdrawal (e.g., 5x) |
| Max Amount | Maximum bonus amount that can be awarded |
| Expiry Days | Number of days before the bonus expires if wagering is not completed |
| Active | Whether this template is currently available for distribution |
Promotions
The Promotions page manages promotional campaigns with multiple tabs:
- Promotions — Campaign list with activation controls
- Promo Codes — Redeemable codes
- Tokens — Free play tokens distributed to players
- Active Bonuses — Currently active player bonuses
Sport-Specific Promotions
The platform supports several specialized sports promotion types:
- 2-Up— If a player's team goes 2 goals up, the bet is paid out as a winner regardless of the final result
- Acca Boost — Accumulator odds boost that increases with the number of selections
- Price Boost — Enhanced odds on specific selections
- Profit Boost — Percentage boost on winnings
- Bore Draw — Refund on 0-0 draws
- Acca Insurance — Refund if one leg of an accumulator loses
Promo Codes
Create redeemable codes that players can enter to claim bonuses:
- 1
Navigate to Promotions > Promo Codes tab
View existing codes or create new ones.
- 2
Click 'Create Code'
Specify the code text, linked bonus template, usage limit, and expiry date.
- 3
Bulk generation (optional)
Generate multiple unique codes with a common prefix for distribution campaigns.
- 4
Distribute
Share codes via email campaigns, social media, partner channels, or in-app notifications.
| Column / Field | Description |
|---|---|
| Code | The redeemable code string (e.g., WELCOME50) |
| Type | Bonus type this code triggers |
| Discount/Value | The bonus value or percentage |
| Usage Count | How many times the code has been redeemed |
| Status | Active, Expired, Exhausted |
Tokens (Free Bets & Credits)
Tokens are free play credits or free bets distributed directly to players' accounts. Unlike promo codes, tokens don't require the player to enter anything — they appear automatically.
| Column / Field | Description |
|---|---|
| Token ID | Unique token identifier |
| User | Player who received the token |
| Amount | Token value |
| Expiry | When the token expires |
| Used | Whether the token has been consumed |
Issue tokens individually from a player's profile, or in bulk through the Campaigns module.
Active Bonuses
View all currently active bonuses across your platform:
| Column / Field | Description |
|---|---|
| User | Player with the active bonus |
| Bonus | Bonus template name |
| Amount | Bonus amount awarded |
| Wagering Progress | Progress bar showing how much of the wagering requirement has been met |
| Expires | Expiration date of the bonus |
Actions available: force expire a bonus or convert remaining bonus balance to cash (for special cases).
Campaigns
The Campaigns page (Campaigns in the sidebar) allows you to create notification campaigns targeting player segments:
| Column / Field | Description |
|---|---|
| Campaign Name | Internal name for the campaign |
| Channel | Delivery method: In-App, Push, Email, SMS |
| Target | Player segment (all, VIP, inactive, specific country, etc.) |
| Status | Draft, Scheduled, Sending, Sent, Failed, Cancelled |
| Recipients | Delivered count vs total target count |
| Scheduled Date | When the campaign will be sent |
Create a new campaign by specifying the target audience, message content, delivery channel, and schedule. Draft campaigns can be edited before sending.
Campaign Best Practices
Popular Bonus Setup Examples
Below are step-by-step setup instructions for the 10 most popular bonus types. Each example walks you through the exact tabs and fields to configure in the admin panel so you can go from zero to live in minutes.
1. Welcome Deposit Match (100% up to $100)
Type: welcome | Product: all | Risk: low
Matches a new player's first deposit dollar-for-dollar up to $100. This is the single most effective acquisition bonus — nearly every operator runs one.
- 1
Click 'New Template'
From the Bonuses page, click 'New Template' to open the creation wizard.
- 2
Basic tab
Set Name to 'Welcome 100% Deposit Match'. Select Type = 'welcome'. Add a player-facing description such as 'Double your first deposit up to $100!'. Set Trigger = 'on_registration'. Set Reward Type = 'bonus_credit'.
- 3
Product & Targeting tab
Select Product Category = 'All'. Leave game types and providers empty so the bonus applies everywhere.
- 4
Reward & Wagering tab
Set match_pct = 100, max_bonus = 100. Set Wagering Multiplier = 5x, Minimum Odds = 1.50, Expiry Days = 30.
- 5
Activate
Toggle the 'Active' switch on, then click Save.
| Column / Field | Description |
|---|---|
| match_pct | 100 (matches 100% of the deposit) |
| max_bonus | 100 (caps the bonus at $100) |
| Wagering | 5x the bonus amount |
| Min Odds | 1.50 |
| Expiry | 30 days |
2. Weekly Cashback (10% on Losses)
Type: cashback | Product: all | Risk: low
Returns 10% of a player's net weekly losses as cash (not bonus credit). This is a powerful retention tool that keeps players coming back even after a bad week.
- 1
Click 'New Template'
Open the template creation wizard from the Bonuses page.
- 2
Basic tab
Set Name to 'Weekly 10% Cashback'. Select Type = 'cashback'. Set Trigger = 'recurring'. Add a description like 'Get 10% of your weekly losses back as cash every Monday'.
- 3
Product & Targeting tab
Select Product Category = 'All' to cover both sports and casino losses.
- 4
Reward & Wagering tab
Set percentage = 10, max_amount = 500, period = 'weekly', return_type = 'cash'. Because this is returned as cash, no wagering multiplier is needed.
- 5
Schedule & Recurrence tab
Enable Recurring = Yes. Set Frequency = 'Weekly'. The system will automatically calculate and credit cashback every Monday.
- 6
Activate and Save
Toggle Active on and click Save.
| Column / Field | Description |
|---|---|
| percentage | 10 (returns 10% of net losses) |
| max_amount | 500 (weekly cap) |
| period | weekly |
| return_type | cash (credited directly, no wagering) |
3. No-Sweat First Bet ($50)
Type: no_sweat | Product: sports | Risk: low
If a new player's first sports bet loses, they receive a free bet of up to $50 as a refund. This removes the fear of placing that first wager.
- 1
Click 'New Template'
Open the template creation wizard.
- 2
Basic tab
Set Name to 'No-Sweat First Bet $50'. Select Type = 'no_sweat'. Set Trigger = 'on_bet_settled'. Set Reward Type = 'free_bet'. Description: 'Place your first bet risk-free up to $50'.
- 3
Product & Targeting tab
Select Product Category = 'Sports'. Leave game types empty to cover all sports markets.
- 4
Reward & Wagering tab
Set max_refund = 50, min_odds = 1.50, min_stake = 5, refund_as = 'free_bet'.
- 5
Activate and Save
Toggle Active on and click Save.
| Column / Field | Description |
|---|---|
| max_refund | 50 (up to $50 refunded as a free bet) |
| min_odds | 1.50 (bet must be at these odds or higher) |
| min_stake | 5 (player must bet at least $5) |
| refund_as | free_bet |
4. Acca Boost (5% - 100%)
Type: accumulator | Product: sports | Risk: low
Automatically boosts accumulator winnings based on the number of legs. The boost starts at 5% for 3 legs and scales up to 100% for 14+ legs, encouraging players to add more selections.
- 1
Click 'New Template'
Open the template creation wizard.
- 2
Basic tab
Set Name to 'Acca Boost 5-100%'. Select Type = 'accumulator'. Set Trigger = 'on_bet_settled'. Description: 'Boost your acca winnings up to 100%'.
- 3
Product & Targeting tab
Select Product Category = 'Sports'.
- 4
Reward & Wagering tab
Set min_odds_per_leg = 1.20, max_payout = 50000. Configure the boost tiers: 3 legs = 5%, 4 legs = 10%, 5 legs = 15%, up to 14+ legs = 100%.
- 5
Activate and Save
Toggle Active on and click Save.
| Column / Field | Description |
|---|---|
| min_odds_per_leg | 1.20 (each selection must be at least 1.20) |
| max_payout | 50000 (caps the boosted payout) |
| Boost Tiers | 3 legs = 5%, 4 = 10%, 5 = 15%, ... 14+ = 100% |
5. Free Spins (50 Spins on Apogee Slots)
Type: free_spins | Product: casino | Risk: medium
Awards 50 free spins valued at $0.10 each on Apogee slot games. Winnings from free spins are subject to 20x wagering before withdrawal.
- 1
Click 'New Template'
Open the template creation wizard.
- 2
Basic tab
Set Name to '50 Free Spins - Apogee'. Select Type = 'free_spins'. Set Trigger = 'on_registration' (or 'on_deposit' for deposit-triggered spins). Description: '50 free spins on our top Apogee slots!'.
- 3
Product & Targeting tab
Select Product Category = 'Casino'. Under Provider, select 'Apogee'. Optionally restrict to specific slot game IDs.
- 4
Free Spins Configuration
Set Free Spins Count = 50, Spin Value = 0.10. This gives a total free-play value of $5.00.
- 5
Reward & Wagering tab
Set Wagering Multiplier = 20x (applied to free spin winnings only).
- 6
Activate and Save
Toggle Active on and click Save.
| Column / Field | Description |
|---|---|
| Free Spins Count | 50 |
| Spin Value | 0.10 ($5.00 total free-play value) |
| Provider | apogee |
| Wagering | 20x on winnings from the free spins |
Medium Risk
6. Bet & Get ($10 Bet = $20 Free Bets)
Type: bet_and_get | Product: sports | Risk: low
When a player places a qualifying $10+ bet, they receive two $10 free bets ($20 total). Great for encouraging first bets or re-engaging lapsed players.
- 1
Click 'New Template'
Open the template creation wizard.
- 2
Basic tab
Set Name to 'Bet $10 Get $20 Free Bets'. Select Type = 'bet_and_get'. Set Trigger = 'on_bet_settled'. Set Reward Type = 'free_bet'. Description: 'Bet $10 and get $20 in free bets!'.
- 3
Product & Targeting tab
Select Product Category = 'Sports'.
- 4
Reward & Wagering tab
Set min_stake = 10, min_odds = 1.50, reward_amount = 20, reward_count = 2. This awards two separate $10 free bet tokens.
- 5
Activate and Save
Toggle Active on and click Save.
| Column / Field | Description |
|---|---|
| min_stake | 10 (qualifying bet must be $10+) |
| min_odds | 1.50 |
| reward_amount | 20 (total free bet value) |
| reward_count | 2 (split into two $10 free bets) |
7. Parlay Insurance (Refund if 1 Leg Loses)
Type: parlay_insurance | Product: sports | Risk: low
If a player's 4+ leg accumulator loses by exactly one selection, they receive their stake back as a free bet (up to $25). Encourages larger parlays with reduced risk perception.
- 1
Click 'New Template'
Open the template creation wizard.
- 2
Basic tab
Set Name to 'Parlay Insurance'. Select Type = 'parlay_insurance'. Set Trigger = 'on_bet_settled'. Set Reward Type = 'free_bet'. Description: 'Miss by one leg? Get your stake back as a free bet!'.
- 3
Product & Targeting tab
Select Product Category = 'Sports'.
- 4
Reward & Wagering tab
Set min_legs = 4, max_lost_legs = 1, min_odds_per_leg = 1.30, max_refund = 25.
- 5
Activate and Save
Toggle Active on and click Save.
| Column / Field | Description |
|---|---|
| min_legs | 4 (parlay must have at least 4 selections) |
| max_lost_legs | 1 (insurance triggers only if exactly 1 leg lost) |
| min_odds_per_leg | 1.30 |
| max_refund | 25 (stake refund capped at $25) |
8. Flash Boost (25% Odds Boost for 2 Hours)
Type: flash_boost | Product: sports | Risk: low
A time-limited 25% odds boost that runs for a specific 2-hour window. Perfect for driving engagement during big matches or quiet periods.
- 1
Click 'New Template'
Open the template creation wizard.
- 2
Basic tab
Set Name to 'Flash 25% Odds Boost'. Select Type = 'flash_boost'. Set Reward Type = 'odds_boost'. Description: '25% odds boost - available for 2 hours only!'.
- 3
Product & Targeting tab
Select Product Category = 'Sports'. Optionally restrict to specific leagues or events.
- 4
Reward & Wagering tab
Set boost_pct = 25, max_stake = 50, min_odds = 1.50.
- 5
Schedule tab
Set flash_start and flash_end to define the exact 2-hour window (e.g., 18:00 - 20:00 on match day). The boost automatically activates and deactivates at these times.
- 6
Activate and Save
Toggle Active on and click Save. The boost will only be available during the configured window.
| Column / Field | Description |
|---|---|
| boost_pct | 25 (increases odds by 25%) |
| max_stake | 50 (max stake eligible for the boost) |
| min_odds | 1.50 |
| flash_start | Start time of the flash window (e.g., 2024-03-15T18:00) |
| flash_end | End time of the flash window (e.g., 2024-03-15T20:00) |
9. Payment Method Bonus (15% Extra on Mobile Money)
Type: payment_method | Product: all | Risk: low
Awards a 15% bonus (up to $50) when a player deposits using a mobile money method (MTN MoMo, M-Pesa, or Airtel Money). Useful for driving adoption of preferred payment channels.
- 1
Click 'New Template'
Open the template creation wizard.
- 2
Basic tab
Set Name to 'Mobile Money 15% Bonus'. Select Type = 'payment_method'. Set Trigger = 'on_deposit'. Set Reward Type = 'bonus_credit'. Description: 'Get 15% extra when you deposit via Mobile Money!'.
- 3
Product & Targeting tab
Select Product Category = 'All'. Under Deposit Methods, select 'mtn_momo', 'mpesa', and 'airtel_money'.
- 4
Reward & Wagering tab
Set match_pct = 15, max_bonus = 50. Configure wagering requirements as desired (e.g., 3x at 1.50 min odds).
- 5
Activate and Save
Toggle Active on and click Save.
| Column / Field | Description |
|---|---|
| match_pct | 15 (15% of the deposit amount) |
| max_bonus | 50 (caps the bonus at $50) |
| Deposit Methods | mtn_momo, mpesa, airtel_money |
| Trigger | on_deposit (fires each time a qualifying deposit is made) |
10. Lootbox / Mystery Box
Type: lootbox | Product: all | Risk: low
Players open a mystery box to receive a random reward drawn from a weighted pool. The rarity tiers create excitement and can be used as loyalty rewards, daily login incentives, or promotional giveaways.
- 1
Click 'New Template'
Open the template creation wizard.
- 2
Basic tab
Set Name to 'Mystery Box'. Select Type = 'lootbox'. Set Reward Type = 'lootbox'. Description: 'Open a Mystery Box for a chance to win up to $50!'.
- 3
Product & Targeting tab
Select Product Category = 'All'.
- 4
Lootbox Pools tab
This is where you define the reward pool. Add each reward tier as a row:
- 5
Add reward: $1 Free Bet (Common)
Set reward type = 'free_bet', value = 1, weight = 50, rarity = 'common'. This will be drawn ~58% of the time.
- 6
Add reward: $5 Free Bet (Uncommon)
Set reward type = 'free_bet', value = 5, weight = 20, rarity = 'uncommon'. Drawn ~23% of the time.
- 7
Add reward: $10 Bonus Credit (Rare)
Set reward type = 'bonus_credit', value = 10, weight = 10, rarity = 'rare'. Drawn ~12% of the time.
- 8
Add reward: 25% Profit Boost (Epic)
Set reward type = 'profit_boost', value = 25, weight = 5, rarity = 'epic'. Drawn ~6% of the time.
- 9
Add reward: $50 Free Bet (Legendary)
Set reward type = 'free_bet', value = 50, weight = 1, rarity = 'legendary'. Drawn ~1% of the time.
- 10
Activate and Save
Review the pool weights to ensure the expected value per box fits your budget, then toggle Active on and click Save.
| Column / Field | Description |
|---|---|
| $1 Free Bet | Weight 50 (common) - ~58% chance |
| $5 Free Bet | Weight 20 (uncommon) - ~23% chance |
| $10 Bonus Credit | Weight 10 (rare) - ~12% chance |
| 25% Profit Boost | Weight 5 (epic) - ~6% chance |
| $50 Free Bet | Weight 1 (legendary) - ~1% chance |
Starter Pack Recommendation