Page body
What this page shows
This page shows the full loyalty-level ladder as one editable grid.
Each row represents one loyalty level. Operators edit the row values directly, add a new level to the end of the ladder, remove the current last level, and then save the full configuration.
When to use it
- adjust which point ranges belong to each level
- change cashback percentage for one or more levels
- update display names, bonus codes, expiration periods, tags, or images
- add a new top loyalty level at the end of the ladder
- remove the current highest level
- recalculate loyalty prices for games after the loyalty setup changes
Treat this page as bonus-adjacent configuration. It governs loyalty thresholds and loyalty bonus-code mapping, not the reusable bonus catalog in Bonuses.
How to read it
Read the grid from left to right:
- identity and naming:
Levels,Level Name - threshold range:
Loyalty Point Start,Loyalty Point End - reward meaning:
Cashback Percentage - supporting configuration:
Bonus Codes,Expiration Period,Tags,Level Image - row action:
Deletefor the current last level only
The grid is ordered by level number and is intended to represent one continuous ladder.
Important operator rules
Submitsaves the entire ladder, not only the row you last changed.- The first level is always stored with
startPoint = 0after save. - A new row starts with default zero values and should be completed before saving.
Deleteis intentionally available only for the last row.
Why values can be confusing
Cashback percentage is displayed differently from how it is stored
The UI shows cashback as a percentage, for example 5, 10, or 15.
The stored backend value is a decimal fraction, for example:
5%is saved as0.0510%is saved as0.10
Point ranges should stay continuous
The FE validation expects the next row startPoint to match the previous row endPoint.
Operators should treat the ladder as one continuous range model rather than unrelated rows.
Update LP Price is not the same as Submit
Submit updates the saved loyalty-level configuration.
Update LP Price runs a separate backend recalculation for casino game loyalty pricing. Use it when loyalty settings or default loyalty points have changed and game loyalty prices must be refreshed.
Known caveats
- The backend loyalty-level read/write service works only for
SUPERADMINuser type. - The backend forcibly resets the first row
startPointto0before saving. - The page uses a shared core asset search for
Level Image, but image selection itself does not change the verification ownership of the loyalty-level configuration.
Verification status
- status:
verified_backend - FE route and inline grid behavior checked from
loyalty-programs/index.tsxandLoyaltyPrograms.tsx - admin read/write and recalculation paths checked in
gs-admin-backend