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.When you click to add a condition, a searchable field picker appears with two sections:Example: Only VIP playersExample: Players in a specific tier
- Player Fields — Computed attributes configured in your workspace (e.g., VIP level, lifetime value). See Player Fields for how to set these up.
- Tool Fields — Data returned by your back-office integrations (e.g., balance, deposit count, player tier).
Only tools that return data appear in the field picker. ACTION-type tools (tools that perform an operation like issuing a bonus) are not listed here — they don’t provide data for rules to evaluate.
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 based on their priority number—the first match wins.Example Tier Structure
| Priority | Condition | Reward |
|---|---|---|
| 3 | VIP Player (player.category == 'VIP') | 50 Premium Free Spins |
| 2 | High depositor (player.lastDeposit >= 500) | 30 Boosted Free Spins |
| 1 | Default (always true) | 15 Standard Free Spins |
Brand Scoping
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.)
qualified (true/false) and rewardType. Other fields depend on the reward type:
| Reward Type | Fields You’ll See |
|---|---|
| Standard | spinsCount, game, gameProvider, wager |
| Boosted | templateName, valuePerSpinDescription |
| Premium | templateName, valuePerSpinDescription |
| Cash Amount / Free Spins | amount, amountType, name, description, wager |
comment if one was configured.
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. All conditions within a rule set are combined with AND logic — every condition must pass. See Condition Logic below for how to achieve OR behavior.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)
Condition Logic
Within each section (segmentation, qualification, and tier conditions), all conditions are combined with AND logic — every condition must be true for the section to pass. There is no OR toggle within a single rule set. If you need OR logic, create separate bonus configurations (segments) with different priority levels. For example, instead of “VIP OR high depositor” in one segment, create two segments — one targeting VIPs and another targeting high depositors.Testing Your Configuration
Before enabling a bonus configuration, use the built-in test panel on the Bonus Engine page itself:Open the Test Panel
On the Settings → Bonus Engine page, click the flask/test icon in the top right corner to open the test panel.
Select an Authenticated Ticket
Choose an existing ticket where the player has already been authenticated. The test panel needs real player data to evaluate your rules.
Run the Test
The panel evaluates the selected player against your bonus configuration and shows:
- Whether the player qualifies (pass/fail)
- Which reward tier matched
- The full reward details (spin count, template, etc.)
Review the Rule Trace
After evaluation, the test panel shows a rule trace tree below the results. This shows exactly which rules passed or failed at each stage (classification, qualification, reward tier) — including the resolved values, operators, and comparison values for each condition.
Generate an AI Explanation
Click Generate in the AI Explanation section to get a plain-English summary of the evaluation. Choose between:
- CSM-friendly — Simple language explaining why the player did or didn’t qualify
- Engineering — Detailed view with field paths, resolved values, and compute expressions
The test panel requires a real authenticated ticket — you cannot mock player data yet. To test different player profiles, you’ll need tickets from players that represent different segments.
Bonus Explain (Ticket-Level Debugging)
When investigating why a specific player qualified (or didn’t), use the Explain Bonus feature from the ticket inbox:Review the Evaluation
The explain panel shows:
- Context — Ticket metadata, player ID, brand, authentication status
- Classification — Which bonus config matched (with expandable rule trace)
- Qualification — Whether the player qualified (with rule-by-rule breakdown)
- Reward Tier — Which tier matched and what rewards were calculated
- Player Context — All tool responses and computed attributes used
Toggle Cached vs Fresh
- Cached shows data as it was at evaluation time
- Fresh re-invokes tools and re-evaluates with current player data (without affecting the ticket)
Restoring Deleted Configurations
If you accidentally delete a bonus configuration, you can restore it from the Archived tab.Find the deleted configuration
Archived configurations are listed with their name and the date they were deleted.
Click Restore
Click Restore next to the configuration you want to bring back. A confirmation dialog will appear.
When a configuration is restored, only the rules and reward tiers that were deleted at the same time as the configuration are brought back. If you individually removed reward tiers before deleting the entire configuration, those tiers will remain archived.
Troubleshooting
| Issue | What to Check |
|---|---|
| Player qualifies but AI denies them | Check your AIP instructions. If they check amount for all reward types, Boosted/Premium rewards will be incorrectly denied — use templateName instead. |
| Player doesn’t qualify when they should | Is the ticket being evaluated? Check segmentation rules first. |
| Wrong reward tier matches | Tiers evaluate by descending priority (highest number first). A broad tier with a high priority number may shadow more specific ones. Adjust priority numbers or 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 test panel on the Bonus Engine page with real authenticated tickets before going live. Test different player profiles to verify each segment and tier works as expected.
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