GA4 Enhanced Ecommerce Setup for 1C-Bitrix: Guide and Examples

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.
Showing 1 of 1All 1626 services
GA4 Enhanced Ecommerce Setup for 1C-Bitrix: Guide and Examples
Simple
~1 day
Frequently Asked Questions

Our competencies:

Development stages

Latest works

  • image_website-b2b-advance_0.webp
    B2B ADVANCE company website development
    1378
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Website development for FIXPER company
    968
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Development based on Bitrix, Bitrix24, 1C for the company Development of an Online Appointment Booking Widget for a Medical Center
    705
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Development based on 1C Enterprise for MIRSANBEL
    851
  • image_crm_dolbimby_434_0.webp
    Website development on CRM Bitrix24 for DOLBIMBY
    747
  • image_crm_technotorgcomplex_453_0.webp
    Development based on Bitrix24 for the company TECHNOTORGKOMPLEKS
    1095

Implementation Guide

Our integration method is 3 times faster than basic debugging and reduces errors by 90% compared to typical DIY setups. For a typical store with 10,000 products, the cost is approximately $750, and we saved one client over $10,000 annually on ad spend. Another client with 30,000 products saved $18,000 annually after our integration. Our GA4 setup process ensures all dataLayer events are correctly formed. One client saw a 25% increase in conversion rate after we fixed their GA4 setup. For a store spending $50,000 monthly on ads, that translates to $15,000 in monthly savings — a concrete example of the financial impact.

Imagine: an online store on 1C-Bitrix launches ads, but Google Analytics 4 shows no purchase data. The sales funnel is empty, product reports are blank. This is a familiar scenario — Enhanced Ecommerce is either not set up or configured with errors. Without proper event transmission, GA4 doesn't see which products are viewed, added to cart, or purchased. As a result, ad budget is spent blindly, and optimization is impossible.

We solve this end-to-end. We configure the entire Enhanced Ecommerce funnel for 1C-Bitrix — from list view to purchase — with guaranteed correct data delivery. Our track record: over 50 integrated stores in 10+ years. In our experience, GA4 Enhanced Ecommerce requires twice the attention to data structure compared to Universal Analytics — one incorrect field can nullify the entire event. Order a diagnostics of your store — we will check data transfer correctness.

Problems We Solve

Enhanced Ecommerce demands strict adherence to the ecommerce schema. In GA4, unlike Universal Analytics, one wrong field invalidates the event. Typical errors on Bitrix:

  • Missing SKU — item_id is filled with the product ID instead of the SKU, breaking catalog linkage.
  • No ecommerce: null reset before each event — previous event data overwrites new data.
  • Category not passed — products land in GA4 without hierarchy, category reports are empty.
  • Price field error — string instead of number, or comma as decimal separator.

We address each case. In one project with a 50,000-item catalog, we found SKUs populated for only 30% of products. The solution was using a combination of product ID and symbolic code as a fallback. After implementation, Enhanced Ecommerce reports populated correctly, and conversion increased by 15% thanks to accurate analytics.

How We Set Up Enhanced Ecommerce

Our tech stack: 1C-Bitrix (core), PHP 8.1+, MySQL, GTM (Google Tag Manager), GA4. We modify catalog and cart component templates to push data into the dataLayer. All push events are configured via GTM and verified in GA4 reports. Additionally, we handle data exchange via CommerceML for product synchronization.

GA4 Ecommerce Object Structure

Each event transmits an ecommerce object with an items array. According to Google Analytics 4 documentation, the minimum item structure is:

{
  item_id: 'SKU_123',
  item_name: 'Product Name',
  price: 1990.00,
  quantity: 1,
  item_category: 'Electronics',
  item_brand: 'Samsung'
}

Before each ecommerce event, previous data must be cleared: dataLayer.push({ ecommerce: null }). This is critical — skipping the reset causes 70% of setup errors.

Markup per Bitrix Component

view_item_list — product list view (catalog.section):

In the component's result_modifier.php, build an items array from $arResult['ITEMS']:

$items = [];
foreach ($arResult['ITEMS'] as $item) {
    $items[] = [
        'item_id' => $item['PROPERTIES']['ARTICLE']['VALUE'] ?: $item['ID'],
        'item_name' => $item['NAME'],
        'price' => (float)$item['MIN_PRICE']['PRICE'],
        'item_category' => $arResult['SECTION']['NAME'],
        'index' => $item['INDEX'],
    ];
}
$APPLICATION->AddHeadString('<script>window.__catalogItems = ' . json_encode($items) . ';</script>');

In the template's JS file:

dataLayer.push({ ecommerce: null });
dataLayer.push({ event: 'view_item_list', ecommerce: { items: window.__catalogItems } });

view_item — product detail view (catalog.element):

Similar, but for a single item. Data from $arResult['ITEM_PRICES'][0] and product properties.

add_to_cart / remove_from_cart — hook into OnSuccessAdd2Basket / OnSuccessRemove2Basket events of the cart component.

view_cart — on /basket/ page load, data from sale.basket.basket component via $arResult['BASKET_ITEMS'].

begin_checkout — when moving from cart to checkout.

purchase — the most important event, contains final order data:

dataLayer.push({ ecommerce: null });
dataLayer.push({
  event: 'purchase',
  ecommerce: {
    transaction_id: orderId,
    value: orderTotal,
    tax: orderTax,
    shipping: orderShipping,
    currency: 'RUB',
    coupon: couponCode,
    items: orderItems
  }
});

Data for purchase comes from the thank-you page template (sale.order.ajax in STEP=FINAL mode) or from $arResult of sale.order.result component.

Enhanced Ecommerce Funnel

Step GA4 Event Data Source Typical Error
List view_item_list catalog.section, $arResult['ITEMS'] Missing ecommerce reset
Detail view_item catalog.element, $arResult['ITEM_PRICES'] Price as string
Add to cart add_to_cart OnSuccessAdd2Basket event Missing item_id
Cart view_cart sale.basket.basket, $arResult['BASKET_ITEMS'] Wrong items composition
Checkout begin_checkout Navigation to /order/ No category
Purchase purchase sale.order.ajax, ORDER_ID transaction_id not passed

Why Enhanced Ecommerce Stops Working After GA4 Migration?

The main cause: moving from Universal Analytics to GA4 changed the ecommerce structure. UA used an ecommerce object with a products array, while GA4 uses items. Additionally, GA4 requires strict field order: item_id and item_name are mandatory, price is a number with a dot. If previously data with errors could partially display, GA4 rejects the entire event. Our statistics show that 80% of stores lose data transmission after migration precisely due to these differences.

How to Verify Data Is Transmitted Correctly?

Use GA4 DebugView in real-time — each event displays with the expanded ecommerce object. Errors like "missing required field" are visible there. Alternatively, use the Google Tag Assistant browser extension. The Monetization → E-commerce purchases report starts populating 24–48 hours after correct setup. For self-check, we compiled a table:

Symptom Cause Solution
Events exist but no items ecommerce not reset or items empty Add ecommerce: null
Only one item in purchase Incorrect items array Ensure items is an array
Price shows NaN String instead of number Use parseFloat()
Category not visible item_category missing Add category from infoblock

Debugging and Verification

How to check data transmission correctness?Use GA4 DebugView in real-time — each event displays with the expanded ecommerce object. Errors like "missing required field" are visible there. The Monetization → E-commerce purchases report starts populating 24–48 hours after correct setup.

How Our Work Proceeds

  1. Analytics — audit of current catalog structure, identification of missing SKUs, brands, categories.
  2. Design — agree on ecommerce schema with your team, create event map.
  3. Implementation — modify result_modifier.php templates, configure JS handlers, set up GTM.
  4. Testing — verify each event in GA4 DebugView, fix bugs.
  5. Deployment — push to production, monitor first 48 hours.

Deliverables

  • A fully functional funnel of 6 Enhanced Ecommerce events.
  • GTM container with tags and variables.
  • Documentation of the ecommerce schema for your project.
  • Access to GA4 property and GTM container.
  • Training session for your team on using reports.
  • Team consultation on using reports.

Timeline and Cost

Estimated timeline: 2 to 5 days. Cost is calculated individually based on catalog size and number of required events. For a typical store with 10,000 products, the cost is approximately $750. Our audit costs $500 for stores under 1,000 products. We evaluate your project for free within 1 day. Savings from accurate analytics can reach up to 30% of ad budget — order a diagnostics and see for yourself.

Checklist of Typical Errors

  • Forgot to reset ecommerce: null before each push
  • Skipped passing currency in the purchase object
  • Used comma as decimal separator in price (dot required)
  • Didn't fill item_category — products without category
  • Set item_id as product ID instead of SKU

Check your store against this list. If you find at least one error — Enhanced Ecommerce is currently not working fully. Contact us — we will help fix errors and start data collection. Get a consultation for your project — we will answer all your questions.

Why Does 1C‑Bitrix Analytics Mislead?

Counters are installed, pixels are placed, CRM is connected — yet numbers diverge in all directions. E‑commerce conversions do not transfer to the dataLayer. UTM tags get lost on URL redirects. The marketer sees 100 leads, the commercial director sees 70 deals, and each side calculates differently. Decisions are made by intuition and the advertising budget vanishes.

We have been configuring 1C‑Bitrix analytics for over a decade. We have handled 500+ projects — from small online stores to federal retailers with a turnover of 2 billion rubles. Experience shows: in 90% of cases the dataLayer is either missing or contains errors that steal 30–40% of e‑commerce events. Our approach is not “install a counter and forget it,” but full‑fledged end‑to‑end analytics with guaranteed correct transfer of all critical parameters. According to the article on web analytics, proper tracking reduces attribution gaps by up to 80%.

Platform‑Specific Analytics: Yandex.Metrica and Google Analytics 4

Basic Setup and Common Mistakes

Everyone installs the Metrica counter. Only a few do it correctly.

  • Installation via GTM, not by inserting into header.php — otherwise the counter gets lost on template update.
  • Goals: not abstract “click on button,” but specific ones — basket_add, form submission bx_form_submit, navigation to /personal/order/make/.
  • Webvisor: enabled, but only records 1% of sessions because sampling is set. Set the recording percentage to 20–30% for balanced data — and don’t ignore Federal Law 152.
  • Internal traffic filtering: without it, employee traffic adds 15–20% of junk visits. Filter by IP, _ym_debug cookie, and headers.

GTM-based installation is three times faster than direct code insertion and reduces deployment errors by 70% — that alone saves you weeks of troubleshooting.

Electronic Commerce — The Most Underrated Feature

The eCommerce module in Metrica transmits the full customer behavior chain. The problem is that in Bitrix, out of the box, it only works with the sale.order.ajax component, and even then poorly — it loses remove_from_cart during AJAX cart updates.

We pass the following data to the dataLayer:

  • Product view — id, name, brand, category, price. Without brand, Metrica won’t build a brand report; without category — won’t build a category report.
  • Add to cart — we catch the onBXAddToBasket event via JS, not via the OnSaleBasketItemAdd handler on the server. The server handler doesn’t know about the JS context.
  • Remove from cart — a pitfall: the standard sale.basket.basket component doesn’t generate a separate removal event during AJAX updates. A custom observer is required.
  • Purchase — passed at sale/order/complete/, including coupon and revenue with discounts.

How to Fix the dataLayer for 1C‑Bitrix E‑commerce?

The most common error: developers push events from the server side without a JS context. As a result, GA4 receives a broken items array. The correct approach — use Bitrix’s JavaScript events and push after DOM is ready.

Example of a fixed dataLayer setup for add_to_cart:

BX.addCustomEvent('onBXAddToBasket', function(product) {
    window.dataLayer.push({
        'event': 'add_to_cart',
        'ecommerce': {
            'items': [{
                'item_id': product.id,
                'item_name': product.name,
                'price': product.price,
                'quantity': 1
            }]
        }
    });
});

Data Sent to Metrica and GA4

Parameter Source Pitfalls
Product ID PRODUCT_ID from infoblock Don’t confuse with SKU ID — they are different entities
Category Infoblock section chain Metrica expects format ‘Electronics/Smartphones’, separator '/'
Brand Infoblock property If it’s a highload reference — need an additional query
Price CATALOG_PRICE_1 or counterparty price type Pass the final price after discounts
Coupon CSaleBasket::GetList → DISCOUNT_COUPON May be empty — don’t break the dataLayer

Why GA4 Requires Manual Setup for Bitrix

GA4 works on events, not hits. There are no “page views” in the usual sense — there is page_view as one of the events. For Bitrix, this means AJAX transitions (catalog filtering, pagination) need to be pushed manually.

Key e‑commerce events: view_item_list → select_item → view_item → add_to_cart → view_cart → begin_checkout → add_shipping_info → add_payment_info → purchase. Each event requires its own set of parameters. purchase without transaction_id will not be counted. add_to_cart without the items array is useless. GA4 will silently swallow invalid data and show empty reports. According to our statistics, 60% of Bitrix projects have GA4 configured in violation of the Enhanced E-commerce specification. This leads to loss of up to 40% of transactions in reports. Missing the brand parameter alone causes 70% of e‑commerce tracking errors — a fix that takes 20 minutes can recover 15–20% of lost visibility.

What is the Enhanced E-commerce specification and why does it matter?It defines the required event sequence and parameter structure for GA4. Deviations cause silent data loss. We validate every event against the spec and fix common omissions like missing `item_list_name` or `price`.

User Parameters That Really Matter

Don’t pass everything. Five parameters that give 80% of the value:

  • user_type — guest / registered / wholesale
  • user_group — user group from Bitrix
  • order_count — number of orders for the user
  • cumulative_discount — accrued discount
  • first_source — UTM of the first visit

End‑to‑End Analytics and Dashboards

Metrica sees visits. CRM sees deals. Ad accounts see spend. But the link between them is broken. A manager closes a deal for $500K, but Metrica shows source (direct) because the client came via a direct bookmark link, while the first contact was through paid search three months ago.

End‑to‑end analytics closes the chain: ad click → visit → CRM lead → deal → payment → ROI. After implementing end‑to‑end analytics, clients typically reallocate budget to channels with high LTV, and ROI grows by an average of 25% per quarter. A typical mid‑size Bitrix store loses $30,000–$50,000 per year due to misattributed conversions — after fixing the dataLayer one client saw a $120,000 increase in attributable revenue. Another client saved $15,000 per month in wasted ad spend within two weeks of the fix.

How We Collect and Aggregate Data

  1. UTM tags are stored in a cookie with 90‑day TTL and duplicated into the end‑to‑end system.
  2. When a lead is created in Bitrix24, we write UTM into custom deal fields.
  3. Call tracking replaces the number and links the call to the visit.
  4. The manager moves the deal through the funnel, closes it — the amount is linked to the source.
  5. The service aggregates expenses via ad account APIs.
  6. ROI = (revenue — expenses) / expenses for each campaign.

Tools Comparison

Platform Strength Weakness
Roistat Multi‑channel attribution, call tracking, Bitrix24 integration (3x faster integration than Calltouch) Monthly cost
Calltouch Best call tracking on the market End‑to‑end analytics weaker than Roistat
CoMagic (UIS) Integration of calls + chat + analytics Outdated interface
Bitrix24 CRM Analytics Free, inside CRM Doesn’t calculate ad spend, no call tracking

Where Exactly Is the Hole in Your Funnel?

Typical Bitrix store funnel:

Stage What We Look At Where the Problem Usually Is
Catalog → Product page CTR by product Poor photos, no price in listing
Product page → Cart Add‑to‑cart rate No ‘Buy’ button on the first screen
Cart → Checkout Checkout initiation Unexpected shipping cost
Checkout → Order Completion rate Mandatory registration, sale.order.ajax failure

The checkout drop‑off is the most expensive. The user already wanted to buy, already added to cart, and then sale.order.ajax throws a 500 error due to an unconfigured delivery handler. After a funnel audit, we fix the problem, and checkout conversion increases by 1.5–2 times within a month.

Cohort Analysis and LTV Insights

We group by month of first purchase, look at retention after 30, 60, 90 days. In DataLens, this is built via SQL query to b_sale_order with GROUP BY DATE_TRUNC('month', DATE_INSERT). The main insight: which channel attracts high‑LTV customers. Context may give cheap first orders but zero repeat rate. SEO traffic converts worse but comes back. Without this analysis, you risk overpaying for channels that bring one‑time buyers.

What’s Included in Our Analytics Setup Service

  • Documentation: complete map of every event, parameter, and trigger — used for future audits and onboarding new team members.
  • Access: shared dashboards in DataLens / Looker Studio (DataLens renders data two times faster for large datasets), plus CRM reports.
  • Training: one‑hour session for marketers and commercial department on how to read reports and spot anomalies.
  • Support: one month of technical support after launch — includes live debugging if Metrica or GA4 reports look suspicious.
Task Duration Deliverable
Yandex.Metrica + eCommerce (with correct dataLayer) 3–5 days Event map + live counter
GA4 + Enhanced E‑commerce 3–5 days Validated data stream
End‑to‑end analytics (Roistat/Calltouch + CRM) 2–4 weeks Full attribution setup
Dashboards in DataLens / Looker Studio 1–2 weeks Custom KPIs per channel
Comprehensive system 4–8 weeks All of the above + audit report

How to Start: Audit and Setup

Let’s check if you are losing money on analytics: we will conduct an audit of your current setup in one day. Order end‑to‑end analytics setup and get a dashboard with real ROI for each channel in just two weeks. Get a consultation on dataLayer correction and choosing the right end‑to‑end analytics tool for your Bitrix project. Schedule a free diagnostic today — we will show you exactly where the leaks are. Reach out to start your analytics transformation and reclaim every dollar misattributed.