Уявіть: щомісяця 5000 замовлень, менеджери витрачають по 15 годин на вивантаження даних із Бітрікс та збірку звіту в Excel. При цьому до 30% даних втрачається через ручне копіювання. Стандартні звіти Бітрікс не показують прибуток по кожному менеджеру, ABC-аналіз товарів або конверсію по каналах. Впровадження кастомної аналітики скорочує ручну обробку на 30 годин на місяць, що дає значну економію.
Ми розробляємо звіти по продажах під ключ — від ORM-запитів до дашборду в адмінці та експорту в Excel. За 5 років реалізували більше 50 проєктів для магазинів на Бітрікс. Кожен звіт пришвидшує ухвалення рішень у 10 разів швидше за ручне вивантаження.
Обмеження стандартних звітів Бітрікс
Штатний модуль sale видає плоску таблицю замовлень із мінімальною групіровкою. Для управління продажами потрібна сегментація по менеджерах з урахуванням повернень, розбивка по категоріях товарів, динаміка середнього чека, аналіз повторних покупок. Готові звіти не вміють пов'язувати дані з різних таблиць — замовлення, кошик, оплати, властивості замовлень — в єдину аналітичну вибірку. За оцінками, до 80% часу менеджери витрачають на ручну обробку даних. Без кастомної аналітики бізнес покладається на здогадки, а не на цифри.
Як побудувати звіт з виручки з розбивкою по менеджерах?
Найбільш затребуваний звіт — виручка по періодах з розбивкою по менеджерах. Задача: показати, скільки кожен менеджер приніс у касу, зі скількох замовлень, який середній чек і відсоток скасувань. Дані збираються ORM-запитом до OrderTable з групіровкою по менеджеру та місяцю. Розраховуються метрики: виручка (без скасувань), сума скасувань, кількість замовлень, середній чек, конверсія у виконане замовлення, швидкість обробки.
Приклад ORM-запиту (без фільтра):
use Bitrix\Sale\Internals\OrderTable;
use Bitrix\Main\Entity\ExpressionField;
$result = OrderTable::getList([
'select' => [
'RESPONSIBLE_ID',
'MONTH' => new ExpressionField('MONTH', "DATE_TRUNC('month', %s)", ['DATE_INSERT']),
'REVENUE' => new ExpressionField('REVENUE', 'SUM(CASE WHEN %s NOT IN (\'F\', \'CA\') THEN %s ELSE 0 END)', ['STATUS_ID', 'PRICE']),
'CANCELLED' => new ExpressionField('CANCELLED', 'SUM(CASE WHEN %s IN (\'F\', \'CA\') THEN %s ELSE 0 END)', ['STATUS_ID', 'PRICE']),
'ORDER_COUNT' => new ExpressionField('ORDER_COUNT', 'COUNT(%s)', ['ID']),
'AVG_CHECK' => new ExpressionField('AVG_CHECK', 'AVG(CASE WHEN %s NOT IN (\'F\', \'CA\') THEN %s END)', ['STATUS_ID', 'PRICE']),
],
'filter' => [
'>=DATE_INSERT' => \Bitrix\Main\Type\DateTime::createFromPhp(new \DateTime('first day of this month')),
],
'group' => ['RESPONSIBLE_ID', 'MONTH'],
'order' => ['MONTH' => 'ASC', 'REVENUE' => 'DESC'],
]);
Метрики менеджера, які рахуємо:
- Виручка (без скасувань і повернень)
- Сума скасувань — показує якість роботи
- Середній чек — порівняння між менеджерами
- Кількість замовлень — навантаження
- Конверсія з «Новий» у «Виконаний» —
COUNT(status=F) / COUNT(*) по статусах
- Середня швидкість обробки —
AVG(DATE_STATUS - DATE_INSERT)
В одному проєкті ми скоротили час побудови такого звіту з 15 секунд до 2 за рахунок правильних індексів.
Як оптимізувати продуктивність звітів?
На магазині з 50 000+ замовлень ORM-запити з групіровкою виконуються 3-10 секунд. Рішення:
- Матеріалізовані представлення (PostgreSQL) або summary-таблиця, яка перераховується агентом раз на годину
- Індекси — обов'язкові:
(DATE_INSERT, STATUS_ID) на b_sale_order, (ORDER_ID, PRODUCT_ID) на b_sale_basket
- Кеш звіту в
managed_cache Бітрікса з TTL 1 година та інвалідацією при зміні замовлення
Що таке ABC-аналіз і як його реалізувати в Бітрікс?
ABC-аналіз показує, які товари та категорії генерують виручку, які лежать мертвим вантажем. Зазвичай 20% товарів дають 80% виручки. Реалізується віконною функцією SUM() OVER (ORDER BY revenue DESC) або програмно після вибірки. Сортування товарів за спаданням виручки, розрахунок наростаючого підсумку, присвоєння категорії: A (80% виручки), B (15%), C (5%).
Структура: JOIN BasketTable з OrderTable (фільтр по оплачених замовленнях) та з інфоблоком каталогу. Групіровка по розділах з агрегацією: виручка, кількість проданих одиниць, середня ціна продажу, середня знижка.
Візуалізація та дашборд
Звіти розміщуються на кастомній сторінці в /local/admin/. Стек візуалізації:
-
Chart.js — лінійні графіки динаміки, bar chart для порівняння менеджерів
- HTML-таблиці з сортуванням — для детальних даних
- PhpSpreadsheet — експорт у xlsx з форматуванням, формулами ПІДСУМОК, автошириною колонок
Дашборд будується як single-page з табами: «Загальна виручка», «По менеджерах», «По товарах», «ABC-аналіз». Дані підвантажуються через AJAX-ендпоінт, параметри фільтра (період, менеджер, категорія) передаються в запиті.
Інтеграція із зовнішніми системами
Для повної картини часто потрібна інтеграція з 1С УТ/ЄРП, CRM або телефонією. Ми підключаємо дані про оплати через REST API, синхронізуємо довідники контрагентів, додаємо воронку конверсій по каналах трафіку. Наприклад, для звіту по конверсіях використовуємо дані модуля sale та користувацьких властивостей замовлень, що дозволяє побачити шлях клієнта від ліда до оплати.
Що входить у роботу
- Аналітика: визначення метрик, погодження розрізів
- Бекенд: ORM-запити, оптимізація, кешування
- Фронтенд: дашборд, графіки, фільтри
- Експорт: Excel-шаблони, форматування
- Тестування: перевірка на реальних даних, навантаження
- Документація по звітах та підтримка 3 місяці
Строки розробки
| Етап |
Зміст |
Строк |
| Аналітика |
Визначення метрик, погодження розрізів |
1-2 дні |
| Бекенд |
ORM-запити, оптимізація, кешування |
3-5 днів |
| Фронтенд |
Дашборд, графіки, фільтри |
2-3 дні |
| Експорт |
Excel-шаблони, форматування |
1 день |
| Тестування |
Перевірка на реальних даних, навантаження |
1-2 дні |
Загальний строк — 1-2 тижні залежно від кількості звітів та складності метрик. Результат — дашборд в адмінці з експортом, який замінює ручне вивантаження та обробку в Excel.
Зв'яжіться з нами, щоб обговорити ваші метрики та отримати консультацію. Замовте розробку звіту — ми підготуємо комерційну пропозицію протягом дня.
Чому аналітика 1С-Бітрікс часто вводить в оману?
Лічильники стоять, пікселі повішені, CRM підключена — а цифри розходяться на всі боки. Конверсія e-commerce не передається в dataLayer. UTM-мітки втрачаються на редиректах ЧПУ. Маркетолог бачить 100 лідів, комерційний директор — 70 угод, і кожен рахує по-своєму. Рішення приймаються на відчуттях, а рекламний бюджет летить у нікуди — за нашими даними, втрати через некоректну аналітику сягають 30–40% бюджету. Для магазина з витратами на рекламу 100 000 грн на місяць це 30–40 тис. грн щомісячних втрат.
Ми налаштовуємо аналітику 1С-Бітрікс більше 10 років. Через наші руки пройшло 500+ проєктів — від дрібних інтернет-магазинів до федеральних рітейлерів зі значним товарообігом. Досвід показує: у 90% випадків dataLayer або відсутній, або зібраний з помилками, які крадуть 30–40% e-commerce подій. Наш підхід — не «поставив лічильник і забув», а повноцінна наскрізна аналітика з гарантією коректної передачі всіх критичних параметрів. Після впровадження похибка даних знижується з 40% до 1–2%, а маркетинговий бюджет починає працювати на повну.
Як аналітика 1С-Бітрікс вирішує проблему розбіжності даних?
Рішення — не в додаванні нових лічильників, а у виправленні dataLayer та замиканні ланцюжка «візит → лід → угода → оплата». Ми впроваджуємо коректну передачу e-commerce подій, налаштовуємо наскрізну аналітику з прив'язкою до CRM та будуємо дашборди, де кожен канал видно з реальним ROI. Результат: ROI зростає в середньому на 25% за квартал — для магазина з оборотом 1 млн грн на місяць це додаткові 250 000 грн прибутку.
Як виправити e-commerce трекінг у Яндекс.Метриці та GA4?
Базове налаштування — і чому його зазвичай роблять криво
- Встановлення через GTM, а не вставкою в
header.php — інакше при оновленні шаблону лічильник злетить.
- Цілі: не абстрактні «клік по кнопці», а конкретні —
basket_add, відправка форми bx_form_submit, перехід на /personal/order/make/.
- Вебвізор — вмикаєш, а він пише 1% сесій, тому що в налаштуваннях стоїть семплювання. Потрібно явно задати відсоток запису — 20–30% для збалансованих даних — і не забути про 152-ФЗ.
- Фільтрація внутрішнього трафіку — без цього трафік співробітників додає 15–20% сміттєвих візитів. Фільтруємо по IP, cookie
_ym_debug, заголовкам.
Електронна комерція — найнедооціненіша фіча
Модуль eCommerce в Метриці передає повний ланцюжок купівельної поведінки. Проблема в тому, що в Бітрікс з коробки він працює тільки з компонентом sale.order.ajax, і то криво — втрачає remove_from_cart при AJAX-оновленні кошика.
Що ми передаємо в dataLayer:
- Перегляд картки —
id, name, brand, category, price. Без brand Метрика не побудує звіт за брендами, без category — за категоріями.
- Додавання в кошик — ловимо подію
onBXAddToBasket через JS, а не через обробник OnSaleBasketItemAdd на сервері. Серверний обробник не знає про JS-контекст.
- Видалення з кошика — тут пастка: штатний компонент
sale.basket.basket при AJAX-оновленні не генерує окрему подію видалення. Потрібен свій обсёрвер.
- Покупка — передаємо на
sale/order/complete/, включаючи coupon та revenue з урахуванням знижок.
Приклад налаштування dataLayer для події 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
}]
}
});
});
| Параметр |
Звідки беремо |
Грабельки |
| ID товару |
PRODUCT_ID з інфоблоку |
Не плутати з ID торгової пропозиції — це різні сутності |
| Категорія |
Ланцюжок розділів інфоблоку |
Метрика чекає формат «Електроніка/Смартфони», роздільник — / |
| Бренд |
Властивість інфоблоку |
Якщо Highload-довідник — потрібен додатковий запит |
| Ціна |
CATALOG_PRICE_1 або тип ціни контрагента |
Передавати фінальну, після знижок |
| Купон |
CSaleBasket::GetList → DISCOUNT_COUPON |
Може бути порожнім — не ламайте dataLayer |
Чому GA4 на Бітрікс вимагає ручного налаштування?
GA4 працює на подіях, а не на хітах. Немає «переглядів сторінок» у звичному сенсі — є page_view як одна з подій. Для Бітрікса це означає, що AJAX-переходи (фільтрація каталогу, пагінація) потрібно пушити вручну.
Ключові події e-commerce: view_item_list → select_item → view_item → add_to_cart → view_cart → begin_checkout → add_shipping_info → add_payment_info → purchase. Кожна подія вимагає свій набір параметрів. purchase без transaction_id — не зарахується. add_to_cart без масиву items — марний. GA4 мовчки проковтне невалідні дані і покаже порожні звіти. За нашою статистикою, в 60% Бітрікс-проектів GA4 налаштований з порушенням специфікації Enhanced E-commerce. Це призводить до втрати до 40% транзакцій у звітах.
Користувацькі параметри, які реально потрібні:
-
user_type — guest / registered / wholesale
-
user_group — група користувача з Бітрікс
-
order_count — кількість замовлень у користувача
-
cumulative_discount — накопичувальна знижка
-
first_source — UTM першого візиту
Що дає наскрізна аналітика на Бітрікс?
Метрика бачить візити. CRM бачить угоди. Рекламний кабінет бачить витрати. А зв'язок між ними — розрив. Менеджер закрив велику угоду, але Метрика показує джерело (direct), тому що клієнт прийшов за прямим посиланням із закладок, а перший контакт був через Директ три місяці тому.
Наскрізна аналітика замикає ланцюжок: рекламний клік → візит → лід в CRM → угода → оплата → ROI. Після впровадження клієнти перерозподіляють бюджет на користь каналів з високим LTV, і ROI зростає в середньому на 25% за квартал. Roistat показує на 40% точнішу атрибуцію порівняно з Calltouch за нашими тестами на великих проектах.
Як збираємо
- UTM-мітки фіксуємо в cookie з TTL 90 днів і дублюємо в наскрізну систему.
- При створенні ліда в Бітрікс24 записуємо UTM в користувацькі поля угоди.
- Коллтрекінг підміняє номер і прив'язує дзвінок до візиту.
- Менеджер веде угоду по воронці, закриває — сума прив'язана до джерела.
- Сервіс агрегує витрати через API рекламних кабінетів.
- ROI = (виручка — витрати) / витрати по кожній кампанії.
| Платформа |
Сильна сторона |
Слабке місце |
| Roistat |
Багатоканальна атрибуція, коллтрекінг, інтеграція з Бітрікс24 |
Щомісячна вартість |
| Calltouch |
Найкращий коллтрекінг на ринку |
Наскрізна аналітика слабша, ніж у Roistat |
| CoMagic (UIS) |
Зв'язка дзвінки + чат + аналітика |
Інтерфейс застарів |
| Бітрікс24 CRM-аналітика |
Безкоштовно, всередині CRM |
Не рахує витрати на рекламу, немає коллтрекінгу |
Дашборди та воронка: де шукати діри
Будуємо дашборди в DataLens або Looker Studio. Ключове — не перевантажувати.
- Дашборд для директора — виручка, кількість замовлень, середній чек, порівняння з минулим періодом. П'ять віджетів, оновлення раз на годину.
- Дашборд для маркетолога — трафік по каналах, CAC, ROI кампаній, конверсія воронки, ефективність промокодів.
- Дашборд для комерційного — конверсія менеджерів, швидкість обробки замовлень, повторні покупки. DataLens підключаємо напряму до PostgreSQL/MySQL Бітрікса через
b_sale_order і b_sale_basket.
| Етап |
Що дивимося |
Де зазвичай проблема |
| Каталог → Картка |
CTR по товарах |
Погані фото, немає ціни в списку |
| Картка → Кошик |
Add-to-cart rate |
Немає кнопки «Купити» на першому екрані |
| Кошик → Чекаут |
Checkout initiation |
Неочікувана вартість доставки |
| Чекаут → Замовлення |
Completion rate |
Обов'язкова реєстрація, падіння sale.order.ajax |
Провал на чекауті — найнайдорожчий. Користувач уже хотів купити, вже поклав у кошик, і тут sale.order.ajax кидає 500-ку через неналаштований обробник доставки. Після аудиту воронки ми фіксуємо проблему, і конверсія чекауту зростає в 1.5-2 рази за місяць.
Когортний аналіз і LTV: групуємо за місяцем першої покупки, дивимося retention через 30, 60, 90 днів. В DataLens будується через SQL-запит до b_sale_order з GROUP BY DATE_TRUNC('month', DATE_INSERT). Головний інсайт — який канал приваблює клієнтів з високим LTV. Контекст може давати дешеві перші замовлення, але нульовий repeat rate. А SEO-трафік конвертується гірше, зате повертається. Без цього аналізу ви ризикуєте переплачувати за канали, які дають одноразових покупців.
Терміни та вартість налаштування аналітики
Що входить в налаштування: аудит поточного dataLayer та виправлення помилок; налаштування коректного e-commerce трекінгу для Метрики та GA4; розробка користувацьких подій під бізнес-вимоги; інтеграція наскрізної аналітики (Roistat/Calltouch) з Бітрікс24; створення дашбордів в DataLens/Looker Studio; документація по всіх подіях та параметрах; навчання маркетологів та комерційного відділу роботі зі звітами; технічна підтримка на місяць після запуску.
| Завдання |
Термін |
| Метрика + eCommerce (з коректним dataLayer) |
3-5 днів |
| GA4 + Enhanced E-commerce |
3-5 днів |
| Наскрізна аналітика (Roistat/Calltouch + CRM) |
2-4 тижні |
| Дашборди в DataLens/Looker Studio |
1-2 тижні |
| Комплексна система |
4-8 тижнів |
Вартість розраховується індивідуально залежно від обсягу робіт та складності інтеграцій. Отримайте консультацію — ми проаналізуємо ваш поточний dataLayer та запропонуємо оптимальне рішення. Замовте аудит або налаштування аналітики, щоб перестати втрачати гроші на некоректних даних. Звертайтеся — перевіримо, чи не втрачаєте ви гроші на аналітиці, за один день.