Predictive Analytics for 1C-Bitrix: Setup and Integration

Typical situation: an online store on Bitrix with a catalog of 50,000 items. Conversion from visitors to buyers is 1.2%, but we could achieve 3% with personalized recommendations. Custom ML solutions on PHP/SQL require a powerful server and months of development. Ready cloud services—RetailRocket, M

Our competencies:

Frequently Asked Questions

Typical situation: an online store on Bitrix with a catalog of 50,000 items. Conversion from visitors to buyers is 1.2%, but we could achieve 3% with personalized recommendations. Custom ML solutions on PHP/SQL require a powerful server and months of development. Ready cloud services—RetailRocket, Mindbox, Exponea, Segmentify—are already trained on millions of transactions and deliver results immediately after integration. We have been handling such integrations for over 10 years and have completed over 50 projects. Our goal is to set up two-way data exchange so that recommendations appear within days, not a month. We guarantee stable operation and an increase in average check by 15–20%.

Recently, on a project with a catalog of 120,000 items, we integrated RetailRocket in 5 days. After configuring server-side recommendations, conversion grew from 1.8% to 3.2% in one month. This result is achieved through proper transmission of all data types and using server-side rendering.

How to choose a predictive analytics service for Bitrix?

The choice depends on tasks. RetailRocket is better for medium-sized stores (1,000–100,000 items) with Russian-speaking audience: it offers a ready module and Russian-language support. Mindbox wins in depth of analytics and email/SMS integration, but costs 2–3 times more and is suitable for omnichannel projects. Segmentify focuses on real-time content personalization, while Exponea (Bloomreach) is a European vendor with strict GDPR, powerful segmentation, and analytics. For stores serving Europe, Exponea is a must.

Service Specialization Price Segment Best for
RetailRocket Personalization, recommendations Mid Medium stores (1–100k items)
Mindbox Omnichannel analytics, mailings High Large projects, email/SMS integration
Exponea (Bloomreach) Real-time personalization, GDPR High European projects, strict requirements
Segmentify Real-time content Mid Media, content projects

Data for transfer to the analytics service

Transfer of events from the browser

Most services use JavaScript SDK to collect behavioral events. The SDK is installed in the <head> of the site template. The standard set of events includes product view, add to cart, and purchase. Here is a step-by-step instruction:

  1. Install the JavaScript SDK in the <head> template. Connect the service script.
  2. Define the product view event in the catalog.element template:
// Example for a RetailRocket-like service analytics.push(['trackProductView', { id: <?= (int)$arResult['ID'] ?>, groupId: <?= (int)$arResult['IBLOCK_SECTION_ID'] ?>, price: <?= (float)($arResult['CATALOG_PRICE_1']['PRICE'] ?? 0) ?>, isAvailable: <?= $arResult['CATALOG_QUANTITY'] > 0 ? 'true' : 'false' ?> }]); 
  1. Add to cart—in the "Buy" button handler or via the OnSaleBasketItemAddBefore event.
  2. Purchase—on the order success page via $arResult['ORDER_ID'] of the sale.order.ajax component.

Transfer of the product catalog

The service must know the current catalog to show recommendations. Transfer is via a feed (YML, CSV, or custom format) or via API. A Bitrix agent generates the feed and publishes it at a URL. Example of feed generation in JSON:

function generateAnalyticsFeed(): void { $elements = \CIBlockElement::GetList( ['SORT' => 'ASC'], ['IBLOCK_ID' => CATALOG_IBLOCK_ID, 'ACTIVE' => 'Y'], false, false, ['ID', 'NAME', 'IBLOCK_SECTION_ID', 'DETAIL_PAGE_URL', 'PREVIEW_PICTURE', 'CATALOG_PRICE_1', 'CATALOG_QUANTITY'] ); $rows = []; while ($el = $elements->GetNext()) { $rows[] = [ 'id' => $el['ID'], 'name' => $el['NAME'], 'categoryId' => $el['IBLOCK_SECTION_ID'], 'url' => 'https://' . SITE_SERVER_NAME . $el['DETAIL_PAGE_URL'], 'imageUrl' => 'https://' . SITE_SERVER_NAME . \CFile::GetPath($el['PREVIEW_PICTURE']), 'price' => $el['CATALOG_PRICE_1'], 'inStock' => $el['CATALOG_QUANTITY'] > 0, ]; } file_put_contents($_SERVER['DOCUMENT_ROOT'] . '/upload/analytics_feed.json', json_encode($rows)); } 

The feed is updated by an agent once per hour. The URL is registered in the analytics service dashboard. For an online store with 50,000 products, generation takes about 3 seconds.

Transfer of user data

On registration and profile update—send data to the service via API. Event handlers OnAfterUserRegister and OnAfterUserUpdate:

AddEventHandler('main', 'OnAfterUserRegister', function($fields) { if ($fields['EMAIL']) { AnalyticsService::identifyUser([ 'email' => $fields['EMAIL'], 'userId' => $fields['USER_ID'], 'firstName' => $fields['NAME'], 'phone' => $fields['PERSONAL_PHONE'], ]); } }); 

AnalyticsService::identifyUser() makes a POST request to the service API to identify the user.

Why server-side recommendations are better than client-side?

The client widget of the service is the simplest path: insert a <div> and get ready-made markup, but it has drawbacks: loading external JS delays rendering, customization is not possible. Server-side API gives full control: data comes in PHP, can be cached, mixed with promotional items, inserted directly into the HTML response. Tests show server-side rendering speeds up loading of the recommendation block by 40% compared to the client-side approach.

Example of getting recommendations in the catalog.element template:

$recommendations = AnalyticsService::getRecommendations([ 'type' => 'similar', 'productId' => $arResult['ID'], 'userId' => $USER->GetID(), 'limit' => 8, ]); // Pass to template for rendering with standard Bitrix tools $arResult['ANALYTICS_RECOMMENDATIONS'] = $recommendations; 

What's included in the work

  • Installing and configuring the JavaScript SDK of the service in the site template: view, cart, purchase events.
  • Catalog feed generator in the format required by the service, with an update agent (once per hour or more often).
  • PHP event handlers for user identification on registration/profile update.
  • Server-side API client for requesting recommendations and integration into catalog components.
  • Transfer of order data via API or webhook on successful payment.
  • Integration monitoring: error logging, alerts, Grafana dashboard.
  • Documentation: description of settings, data schemas, support contacts.

For each stage, we provide written guarantees and fix SLA in the contract. On average, after configuring recommendations, clients see an increase in average check by 15–20% and conversion growth by 30–40%. Time savings on manual data collection and report generation amount to up to 20 hours per month. Contact us—we will select the optimal solution and show examples of our integrations. Order an audit of your current analytics system—we will find out which data is already ready for transfer and what needs refinement.

Timeline

Stage Timeframe
SDK installation and basic events (view/cart/purchase) 2–3 days
Catalog feed with update agent 1–2 days
User identification and profile transfer 1–2 days
Server-side recommendations on catalog pages 2–3 days
Triggered mailings via the service 3–5 days

Cost is calculated individually—depends on the number of products, update frequency, whether triggered mailings are needed. Get a consultation on your project—it's free.

Data transfer standards via CommerceML are described in Bitrix documentation.