What Is the Bonus Engine?
The Bonus Engine determines whether players qualify for bonuses during a conversation. Think of it like a VIP host at a casino—it evaluates who the player is, what they’ve done, and decides what special offers they deserve. Key benefits:- Consistent qualification — Same rules apply to every player, every time
- Tiered rewards — VIPs get better offers automatically
- Seamless integration — Works with your existing AI Procedures
The Bonus Engine determines eligibility. Your AI Procedures control what happens next—whether to offer the bonus, issue it automatically, or escalate for human review.
End-to-End Setup
Getting bonuses working requires three things: a bonus configuration, an AI Procedure that uses it, and instructions telling the AI what to do with the qualification result.Create a Bonus Configuration
Go to Settings → Bonus Engine and click Create Segment. Define:
- Qualification rules — Who is eligible (e.g., players with positive NGR)
- Reward tiers — What they get (e.g., VIPs get 50 spins, others get 15)
Set up your AI Procedure
Create or edit an AIP that will handle bonus inquiries:
- Enable player authentication — Toggle on Verify Player Identity in the AIP settings. The bonus engine needs player data to evaluate eligibility.
- Reference the bonus action in your instructions — In the instructions editor, type
@to open the mentions dropdown. Go to the Actions tab and select Qualify for Bonus. This inserts a mention that tells the AI it can check bonus eligibility.
Decide what happens after qualification
The Bonus Engine only determines eligibility — it doesn’t issue bonuses automatically. You decide what happens next:
- Build a custom integration to call your back-office and issue bonuses (see Custom Integrations)
- Escalate to a human for manual processing
- Send an external message to notify your team
- Or any combination that fits your workflow
Write instructions for the AI
Tell the AI what to do when a player qualifies (or doesn’t). See What to Do After Qualification for examples.
How It Works
The Bonus Engine uses a three-layer system:Creating a Bonus Configuration
Name Your Configuration
Give it a clear name that describes the scenario, like “Deposit Bonus - First Time Players” or “VIP Loyalty Rewards”.
Define Segmentation Rules
Specify which players this bonus applies to. Use player attributes to target specific groups. Leave empty to evaluate all players.Example: Only VIP playersExample: Players in a specific tier
Define Qualification Rules
Specify who qualifies. Players must meet ALL conditions.Example: First deposit only, with positive value
Add Reward Tiers
Create one or more tiers—the first matching tier wins. Always add a “default” tier at the bottom as a catch-all.
Reward Types
The Bonus Engine supports different reward types depending on your back-office integration:Standard Free Spins
Basic free spins at minimum bet value. Players can use them on multiple game providers.Fields required:
- Game Provider (BGaming, Mascot, etc.)
- Number of spins
Boosted Free Spins
Premium spins with a fixed bet value, powered by pre-configured templates.Fields required:
- Template name (from back-office)
- Value per spin description
Premium Free Spins
Top-tier spins with higher bet values and lower wagering requirements.Fields required:
- Template name (from back-office)
- Value per spin description
Reward Tiers
Tiers let you give different rewards based on player attributes. They’re evaluated top to bottom—the first match wins.Example Tier Structure
| Priority | Condition | Reward |
|---|---|---|
| 1 | VIP Player (player.category == 'VIP') | 50 Premium Free Spins |
| 2 | High depositor (player.lastDeposit >= 500) | 30 Boosted Free Spins |
| 3 | Default (always true) | 15 Standard Free Spins |
Using “Qualify for Bonus” in Your Instructions
To check bonus eligibility in your AIP, you reference the action using the mentions system:- In the instructions editor, type
@ - A dropdown appears — go to the Actions tab
- Click Qualify for Bonus
- A mention chip is inserted into your instructions
- Evaluates all your bonus configurations against the current player
- Returns whether they qualify and what reward they’d receive
- Provides the reward details (spin count, game provider, template name, etc.)
| Field | Description | Example |
|---|---|---|
qualified | Whether the player qualifies | true |
rewardType | The type of reward | standard, boosted, or premium |
spinsCount | Number of free spins | 25 |
gameProvider | Which games the spins work on | BGaming, Mascot |
templateName | Back-office template (for boosted/premium) | 15 FS Boosted Pack |
valuePerSpinDescription | Bet value per spin (for boosted/premium) | $0.50 AUD/spin |
The Bonus Engine only determines eligibility. It doesn’t automatically issue bonuses. Your AIP instructions (or custom integrations) decide what happens with this data.
What to Do After Qualification
The Bonus Engine tells you IF a player qualifies and WHAT they’d receive. What happens next is up to you. Here are the common patterns:Option A: Build a Custom Integration
Create a custom integration that calls your back-office API to issue bonuses automatically.Option B: Escalate to a Human
Let a human agent handle the actual issuance.Option C: Send an External Message
Notify your back-office team via webhook or email.Option D: Just Inform the Player
Sometimes you just want to tell them what they’re eligible for.Complete AIP Example
Here’s a full example. Note that@Qualify for Bonus and @Transfer to Live Agent would be mention chips inserted via the @ dropdown — not typed as plain text:
The
@mentions in the example above would appear as styled chips in the actual editor, not as plain text. You insert them by typing @ and selecting from the dropdown.Qualification Rules
Rules compare player data against expected values. You can combine multiple conditions with AND/OR logic.Available Operators
| Operator | Use For | Example |
|---|---|---|
== | Exact match | player.vipLevel == 'gold' |
!= | Exclusion | player.status != 'banned' |
> >= | Minimum threshold | player.totalDeposits >= 100 |
< <= | Maximum limit | player.bonusRate <= 30 |
contains | Array has value | player.tags contains 'loyal' |
is_in | Value in list | player.status is_in ['active', 'verified'] |
contains any of | Array has ANY of multiple values | player.tags contains any of ['vip', 'whale'] |
contains all of | Array has ALL of multiple values | player.badges contains all of ['verified', 'depositor'] |
does not contain any of | Array has NONE of multiple values | player.restrictions does not contain any of ['banned', 'abuser'] |
Tag-Based Qualification
Thecontains any of, contains all of, and does not contain any of operators are powerful for tag-based bonus qualification:
Example: VIP-tier bonus qualification
Example: VIP-tier bonus qualification
Qualify players who have ANY VIP-related tag:This matches if the player has
vip OR whale OR high-roller OR platinum in their tags.Example: Multi-requirement qualification
Example: Multi-requirement qualification
Require players to have completed ALL verification steps:This only matches if the player has ALL three badges.
Example: Exclusion-based qualification
Example: Exclusion-based qualification
Exclude players with any abuse or restriction flags:This matches only if the player has NONE of these flags.
Data Sources
Rules can reference:- Player Context data — From back-office integrations (balance, deposits, VIP level)
- Computed attributes — Custom calculations you’ve configured (like bonus rate or lifetime value)
Testing Your Configuration
Before enabling a bonus configuration:Run a test conversation
Send messages that would trigger the bonus scenario (e.g., “I’d like a deposit bonus”).
Troubleshooting
| Issue | What to Check |
|---|---|
| Player doesn’t qualify when they should | Is the ticket being evaluated? Check segmentation rules first. |
| Wrong reward tier matches | Tiers evaluate top-to-bottom. Reorder them or adjust conditions. |
| ”Template not found” error | Template names are case-sensitive. Verify it exists in your back-office. |
| Player data not available in rules | Is the back-office tool configured? Is authentication working? |
| No reward returned | Did you add a default catch-all tier? |
Best Practices
Start with simple rules
Start with simple rules
Begin with one qualification rule and one reward tier. Add complexity only when needed.
Use descriptive names
Use descriptive names
“VIP First Deposit Loyalty Pack” is clearer than “Bonus Config 3”.
Test with real player data
Test with real player data
Use the Playground with actual player scenarios before going live.
Document your template names
Document your template names
Keep a reference of which back-office templates map to which reward tiers.
Add catch-all tiers
Add catch-all tiers
Always include a default tier so no qualified player leaves empty-handed.
Related Documentation
- AI Procedures (AIPs) — Creating procedures that use bonus data
- Player Context & Actions — Using back-office data in AI Procedures
- Custom Integrations — Setting up bonus issuance endpoints
- Automation Rules — Automatic routing based on player data
- Player Fields — Configuring player attributes