Setting up a 1C-Bitrix loyalty program

Our company is engaged in the development, support and maintenance of Bitrix and Bitrix24 solutions of any complexity. From simple one-page sites to complex online stores, CRM systems with 1C and telephony integration. The experience of developers is confirmed by certificates from the vendor.
Our competencies:
Development stages

Configuring Loyalty Program in 1C-Bitrix

Under "loyalty program" in Bitrix, different things are meant: cumulative discounts, bonus points, customer levels. It's important to define the mechanics right away, because built-in Bitrix tools cover only part of scenarios, the rest requires custom development or third-party modules.

What's built-in

Bitrix doesn't have a dedicated "loyalty program" module. Functionality is assembled from:

  • User groups — different levels with different prices and rights
  • Cumulative discounts — automatic transfer between groups by purchase amount (b_sale_user.DISCOUNT_VALUE)
  • Order discounts — condition "sum of previous orders" in rule constructor of sale module
  • Coupons — personal promo codes (b_sale_discount_coupon)

For bonus points (earning N points per purchase, spending on next order) there's no built-in mechanism — either custom module or integration with external loyalty system (Mindbox, UDS, 1C:Loyalty).

Implementing tiered program

Three-tier program (Basic / Silver / Gold) through user groups:

  1. Create three groups with corresponding price groups
  2. Configure automatic transfer via OnSaleOrderSaved event
  3. In personal account display current level and progress to next

Data for progress calculation:

// User's current purchase amount
$userSaleData = \Bitrix\Sale\Internals\UserTable::getList([
    'filter' => ['=USER_ID' => $userId],
    'select' => ['DISCOUNT_VALUE'],
])->fetch();

$currentTotal = (float)$userSaleData['DISCOUNT_VALUE'];

Integration with external loyalty systems

If bonus points are required — connect via REST API external system. Integration points:

  • OnSaleOrderSaved — award points when order is placed
  • OnSaleOrderStatusChange — award when transferred to "paid" status
  • Basket component — add points spending field

Display in personal account

For displaying loyalty program status, use custom template of bitrix:sale.personal component. The template includes your own logic for level and bonus calculation.

Estimated timeframes

Basic tiered program through groups with progress display — 1–2 business days. Full system with bonus points and external platform integration — 3–7 days.