Configuring Conversion Rate Optimization (CRO) on 1C-Bitrix
CRO is a systematic process: measure the numbers, identify the bottleneck, form a hypothesis, implement the change, and measure the outcome. Not "make a pretty button" — but first find out why only 8 out of 1,000 product page visitors add to cart, and then determine exactly what needs to change to make it 11.
Auditing the Current Funnel
Start with data, not design. In Yandex.Metrica: Reports → Conversions → Funnels. In GA4: Explore → Funnel exploration. Goals are needed at each step: catalog view, product page view, add to cart, checkout start, payment.
If no goals exist — setting them up is the first step. JavaScript event goals are the only reliable option for 1C-Bitrix, where most transitions happen via AJAX without a URL change:
// In the sale.order.ajax component template on successful order creation
BX.addCustomEvent('onSaleOrderComplete', function(order) {
ym(METRIKA_ID, 'reachGoal', 'order_complete', {
order_id: order.orderId,
total_price: order.totalPrice,
});
gtag('event', 'purchase', {
transaction_id: order.orderId,
value: order.totalPrice,
currency: 'RUB',
});
});
Key Metrics by Funnel Stage
| Stage | Normal Range | Warning Signal |
|---|---|---|
| Catalog → Product page | 25–50% | < 15% |
| Product page → Cart | 5–15% | < 3% |
| Cart → Checkout | 40–65% | < 25% |
| Checkout → Payment | 55–75% | < 40% |
| Payment → Confirmation | 80–95% | < 70% |
Segment by device: mobile conversion at the checkout stage is consistently 1.5–2.5× lower than desktop — this is the starting point for mobile optimization.
Product Page: What Affects "Add to Cart"
Load speed. Every second of LCP delay cuts conversion. In 1C-Bitrix, the main culprits are: slow rendering of catalog.section/catalog.element without cache, heavy images without WebP. Enable the Composite Site, configure WebP through the CDN module or ImageMagick.
Missing stock availability data. If warehouses are configured but availability information is not displayed on the product page, the buyer goes elsewhere to check. The catalog.element component shows stock via CATALOG_QUANTITY — ensure the USE_PRODUCT_QUANTITY parameter is enabled in the component settings.
Non-functional "Add to Cart" button on mobile. A classic problem: the button is clickable, but the handler fails due to a JavaScript error. Always test using mobile DevTools, not just on desktop.
Price without VAT and with VAT side by side. For B2B catalogs this is critical. Configured through the 1C-Bitrix pricing system: \Bitrix\Catalog\PriceTable with different price types.
Checkout Page: Primary Drop-Off Points
The sale.order.ajax component is the most challenging from a CRO perspective. Drop-off at this stage is caused by:
Long form. The default form contains 10–15 fields. Remove everything non-essential: middle name, postal code, fax. In the order properties (Shop → Settings → Order Properties), mark unnecessary fields as optional or hide them entirely.
No guest checkout. By default, 1C-Bitrix requires registration. Enable guest checkout: in the Shop module settings → "Allow checkout without registration".
Unexpected shipping cost. A shipping cost that only appears in the cart is the leading cause of abandoned carts. Show an estimated shipping cost already on the product page via an AJAX request to sale.delivery.cost.calculate.
Too many steps. A multi-step checkout loses 15–20% of users at each step transition. Single-page checkout (sale.order.ajax) in AJAX mode without page reload is the standard for 1C-Bitrix.
A/B Testing Without Google Optimize
A simple implementation in 1C-Bitrix:
// In the template: determine the variant for this user
$userId = $USER->IsAuthorized() ? $USER->GetID() : session_id();
$abVariant = crc32($userId . 'checkout_test_v1') % 2; // 0 or 1
// Pass the variant to JavaScript
echo "<script>window.AB_VARIANT = {$abVariant};</script>";
// Register in Metrica
echo "<script>ym(METRIKA_ID, 'params', {ab_checkout: 'v{$abVariant}'});</script>";
In the component template, load different blocks based on window.AB_VARIANT. After 2–3 weeks, compare conversion rates in Metrica using the ab_checkout parameter for segmentation.
Schema Markup to Improve Search CTR
The best traffic is targeted traffic. Schema.org Product markup with price and availability data improves CTR in search results, meaning incoming visitors are more purchase-ready. Validate markup after every template update using Google Rich Results Test — 1C-Bitrix sometimes generates invalid JSON-LD in catalog.element.
Timelines
| Stage | Timeline |
|---|---|
| Funnel audit, goal setup | 3–5 days |
| Checkout page optimization | 1–2 weeks |
| Load speed (LCP, CLS) | 1–2 weeks |
| A/B test of a single hypothesis | 4–6 weeks (observation + analysis) |







