Стикаємося з цим постійно: замовник просить «зробіть ROI-дашборд», але без коректного збору даних та правильної атрибуції будь-які цифри — ворожіння. Вбудована аналітика Бітрікс24 CRM показує воронку угод та джерела лідів, але не відповідає на питання: скільки грошей витрачено на кожен канал відносно виручки. ROI-аналітика — обчислюваний показник, що потребує даних з двох систем: витрати з рекламних систем та доходи з CRM. Налаштування повної картини включає збір ланцюжка дотиків, вибір моделі атрибуції, імпорт витрат та візуалізацію. Наш досвід: понад 50 проєктів з інтеграції Бітрікс24, сертифіковані інженери, гарантія прозорої звітності. На одному з проєктів щомісячна економія рекламного бюджету після впровадження ROI-аналітики склала значну суму при великих вкладеннях — за рахунок перерозподілу бюджетів між каналами.
Яку модель атрибуції обрати?
Перш ніж налаштовувати звіти — визначтеся, якому дотику приписується конверсія.
First-click — перший канал, через який користувач прийшов на сайт. Показує, що приваблює нову аудиторію.
Last-click — останній канал перед конверсією. Стандарт GA4 та Яндекс.Метрики, але переоцінює ретаргетинг і брендові запити.
Linear — рівномірний розподіл між усіма дотиками. Вимагає зберігання повної історії.
Для B2B з довгим циклом угоди (місяць і більше) оптимальна комбінація first-click + last-click — два звіти одночасно. Для e-commerce достатньо last-click. Мультитач-атрибуція дає в 1.3 раза більш точну оцінку ROAS порівняно з last-click, але й складніша в реалізації.
| Модель | Складність | Точність для B2B | Рекомендований цикл продажів |
|---|---|---|---|
| First-click | Низька | Низька (початок) | Довгий (>1 міс) |
| Last-click | Низька | Середня | Короткий (<1 міс) |
| Linear | Висока | Висока | Будь-який |
| Мультитач | Дуже висока | Дуже висока | Будь-який (потребує даних) |
Зберігання ланцюжка дотиків: як організувати?
Для мультитач-атрибуції потрібна таблиця подій відвідувань, пов'язаних з лідом/угодою. Нижче — приклад ORM-класу Бітрікс24:
class TouchpointTable extends \Bitrix\Main\ORM\Data\DataManager { public static function getTableName(): string { return 'local_crm_touchpoints'; } public static function getMap(): array { return [ new \Bitrix\Main\ORM\Fields\IntegerField('ID', ['primary' => true, 'autocomplete' => true]), new \Bitrix\Main\ORM\Fields\StringField('SESSION_ID'), new \Bitrix\Main\ORM\Fields\IntegerField('LEAD_ID'), new \Bitrix\Main\ORM\Fields\IntegerField('DEAL_ID'), new \Bitrix\Main\ORM\Fields\StringField('UTM_SOURCE'), new \Bitrix\Main\ORM\Fields\StringField('UTM_CAMPAIGN'), new \Bitrix\Main\ORM\Fields\StringField('UTM_MEDIUM'), new \Bitrix\Main\ORM\Fields\StringField('UTM_TERM'), new \Bitrix\Main\ORM\Fields\IntegerField('TOUCH_ORDER'), // 1=first, N=last new \Bitrix\Main\ORM\Fields\DatetimeField('CREATED_AT'), ]; } } Дані збираються через JavaScript-код на сайті: при кожному візиті з UTM-параметрами — запис у cookie/localStorage, при відправці форми — передача всього ланцюжка на сервер. Це стандартний підхід, рекомендований офіційною документацією.
Як обчислити ROI?
class RoiReportBuilder { public function buildReport(string $dateFrom, string $dateTo, string $attributionModel = 'last'): array { $deals = $this->getWonDeals($dateFrom, $dateTo); $costs = $this->getAdCosts($dateFrom, $dateTo); $revenueByChannel = []; foreach ($deals as $deal) { $channel = $this->getChannel($deal, $attributionModel); $revenueByChannel[$channel] = ($revenueByChannel[$channel] ?? 0) + $deal['OPPORTUNITY']; } $result = []; foreach ($costs as $channel => $cost) { $revenue = $revenueByChannel[$channel] ?? 0; $result[] = [ 'channel' => $channel, 'spend' => $cost, 'revenue' => $revenue, 'profit' => $revenue - $cost, 'roi' => $cost > 0 ? round(($revenue - $cost) / $cost * 100, 1) : null, 'roas' => $cost > 0 ? round($revenue / $cost, 2) : null, 'cpl' => $cost > 0 ? round($cost / max(1, $this->getLeadsCount($channel, $dateFrom, $dateTo)), 0) : null, ]; } usort($result, fn($a, $b) => ($b['roi'] ?? -PHP_INT_MAX) <=> ($a['roi'] ?? -PHP_INT_MAX)); return $result; } } Метрики ROAS (Return on Ad Spend) і CPL (Cost Per Lead) доповнюють ROI: ROAS показує, скільки рублів виручки приніс кожен доллар витрат; CPL — вартість ліда. Після впровадження ROI-аналітики вартість ліда знижується на 15-25%.
Дашборд у Бітрікс24
Для відображення ROI-аналітики — два варіанти.
Варіант 1: Кастомний звіт у /local/php_interface/admin/ — таблиця з фільтром за періодом, перемиканням моделі атрибуції, експорт в Excel.
Варіант 2: Вбудовуваний застосунок Бітрікс24 (React) — дашборд на окремій сторінці. Дані беруться з кастомного бекенду. Графіки через Recharts або ApexCharts.
// React-компонент ROI-дашборда function RoiDashboard() { const [period, setPeriod] = useState({ from: startOfMonth, to: today }); const [model, setModel] = useState<'first' | 'last' | 'linear'>('last'); const { data, isLoading } = useQuery({ queryKey: ['roi', period, model], queryFn: () => fetchRoiReport(period, model), }); return ( <div> <PeriodSelector value={period} onChange={setPeriod} /> <ModelSelector value={model} onChange={setModel} /> {isLoading ? <Spinner /> : ( <> <RoiTable data={data?.channels} /> <SpendVsRevenueChart data={data?.channels} /> </> )} </div> ); } Ключові звіти в системі
Зведена таблиця по каналах — основний звіт:
| Канал | Витрати | Ліди | CPL | Виручка | ROAS | ROI |
|---|---|---|---|---|---|---|
| Яндекс/brand | 45 000 | 38 | 1 184 | 380 000 | 8.4 | 744% |
| VK/ретаргетинг | 28 000 | 22 | 1 273 | 115 000 | 4.1 | 311% |
| Директ/конкуренти | 67 000 | 19 | 3 526 | 95 000 | 1.4 | 42% |
Динаміка по місяцях — тренд ROI кожного каналу, дозволяє бачити сезонність і деградацію.
Воронка по джерелах — конверсія лід → кваліфікований → угода в розрізі каналів. Канал з дешевими лідами, але низькою конверсією, часто поступається дорожчому з якісними лідами.
Що входить в роботу?
- Аудит поточної схеми збору UTM та інтеграцій
- Вибір та налаштування моделі атрибуції
- Створення кастомної таблиці touchpoints і JavaScript-збирача
- Імпорт витрат з рекламних систем (cron-завдання)
- Розробка ROI-звіту з візуалізацією (адмінка або React-застосунок)
- Документація та навчання співробітників
- Гарантійна підтримка 1 місяць після здачі
Скільки часу займає налаштування?
Базовий ROI-звіт (last-click, один канал) — від 1 тижня. Багатоканальний дашборд з кількома моделями атрибуції — від 3 до 5 тижнів. Оцінимо ваш проєкт безкоштовно. Зв'яжіться з нами — обговоримо деталі та підготуємо комерційну пропозицію. Отримайте консультацію прямо зараз.
Досвід нашої команди — понад 7 років в інтеграціях Бітрікс24, сертифіковані спеціалісти. Гарантуємо прозорість даних і окупність інвестицій в аналітику.
Покрокова інструкція: як налаштувати ROI-дашборд за 5 кроків
- Визначте модель атрибуції (first/last/linear) виходячи з циклу продажів.
- Встановіть JavaScript-збирач UTM-ланцюжка на всі сторінки сайту.
- Створіть HL-блок або ORM-таблицю для зберігання дотиків.
- Налаштуйте імпорт витрат з Яндекс.Директ, VK Ads, Google Ads через REST API.
- Розробіть дашборд з фільтрами та вивантаженням в Excel.







