Page body
What this page shows
This page is the full working surface for affiliate coupon codes.
Operators use it to:
- review the current coupon-code catalog
- verify which PID a code points to
- check whether
Force Registrationis enabled - see how many distinct players have used the coupon code
- add, update, delete, copy, and export coupon codes
Use this page when the question is about affiliate or PID-driven promo-code routing.
If the question is about the reusable bonus configuration itself, use Bonuses / Form or Bonuses / View instead.
How the page is organized
- top orientation cards summarize the current coupon-code catalog
- the
Affiliate PIDspanel shows reference PIDs and affiliate-link details - the filter block narrows the visible coupon rows
- the main grid shows one row per coupon code and exposes row actions
How to read the page
Coupon Codeis the operator-facing promo code value. The copy button copies this exact code to the clipboard.PIDshows the affiliate PID linked to the coupon code.Bonus Countis the number of distinct players found inuser_coupon_codesfor this promo code. It is not a money amount and not a count of issued bonus objects.Force Registrationshows whether the coupon should still attach the affiliate tag when the player is already registered.Created AtandUpdated Atare shown in UTC on the grid.
Filters that change the result
Coupon CodePIDForce Registration
Force Registration currently behaves as a positive filter only. The verified backend path narrows the query when the value is true, but the current read service does not apply an explicit false filter for No.
Main actions
Add New Couponopens the create modal.Editopens the same modal with current row values.Deleteopens a destructive confirmation modal.Exportdownloads a CSV built from the currently loaded FE rows.Show Affiliate PIDsexpands a reference panel so operators can copy a PID before creating or editing a coupon.
Why values can differ from expectations
Bonus Count is user usage, not a payout amount
The backend calculates Bonus Count as a distinct-user count from user_coupon_codes where promo_code matches the coupon code. It does not represent bonus money or marketing spend.
Active Coupon Codes is not a real active-state check
The current backend stats service treats every stored coupon as active. In the verified implementation, Active Coupon Codes is the same count as Total Coupon Codes.
Force-registration rate is catalog-based
Force Registration (%) is calculated from the current coupon catalog, not from player conversion or registration performance.
Known caveats
- Card trends are not trustworthy business trends. The current backend service generates them from a random helper.
- The
Resetbutton in the verified FE implementation resubmits the current form state instead of clearing all fields. Exportworks on the rows currently loaded in FE memory. It is not a dedicated backend export endpoint for the full dataset.- The affiliate PID panel is a reference helper. It shows affiliate links where
pidexists, but it is not itself a coupon-code editor.
Verification status
- status:
verified_backend - FE checked:
/coupon-codesPidCouponCodesCouponFormModalDeleteCouponModaluseAffiliateCouponCodes
- backend checked:
CrudAffiliateCouponPidsServiceGetAffiliatesPidService