What this module is for
Loyalty Programs is the backoffice screen where operators maintain the loyalty-level ladder used by the CRM and related player-facing loyalty logic.
Use it when you need to:
- review the current level sequence
- change point ranges for each level
- adjust the cashback percentage stored for a level
- update bonus codes, expiration settings, tags, or level images
- recalculate loyalty prices for casino games after loyalty configuration changes
Surface map
List: one inline-editable grid where operators manage the full level ladder and submit the whole configuration
What makes this module different
- There is no separate detail route. Operators edit directly inside the grid.
- Saving sends the full level array, not a single-row patch.
Update LP Priceis a separate maintenance action. It recalculates game loyalty pricing from casino game categories and theDefault Config One Loyalty Point Price in stakes EURcasino setting; it does not itself save the level ladder.
Common confusion points
Cashback Percentageis shown as a percent in the UI, but the stored value is a decimal fraction.- The first level always starts from
0after save because the backend enforces that value. - The grid allows deleting only the last level, which helps keep the level ladder contiguous.
- Level images are selected from the shared asset catalog, but the image picker is only a support dependency. The main module ownership stays in the admin backend loyalty settings flow.
Update LP Pricedepends on the casino settingdefaultLoyaltyPoints. If that JSON setting is wrong or incomplete, recalculated game loyalty prices can be wrong even when the loyalty-level ladder is correct.
Verification scope
This module is documented from:
The image picker uses the existing core asset catalog, but it is not the primary source of truth for loyalty-level business rules.