Сквозная аналитика и атрибуция: модели атрибуции и связка каналов
1. Архитектура и принцип работы
Собираем идентификаторы: client_id Метрики, yclid, gclid, utm-метки, номер телефона, email, хеш от них. На сайте ставим счётчик и коллтрекинг, формы шлют скрытые поля с метками в CRM. Когда менеджер двигает сделку по стадиям, CRM отправляет событие обратно в систему аналитики через Measurement Protocol или офлайн-конверсии. Дальше строим user journey: все касания одного лида в хронологии. Модель атрибуции прогоняет эту цепочку и начисляет вес каждому касанию. Отчёт сводит каналы: сколько денег принёс каждый с учётом модели. Ключевая инженерная задача — не потерять идентификатор на стыке сайт → CRM → рекламная система, иначе цепочка рвётся и канал помечается как (direct) / (none).
2. Математическая механика и триггеры ранжирования
Сквозная аналитика опирается на join по ключу. Ключ — стабильный user_id: для анонимов это client_id Яндекс.Метрики (cookie _ym_uid, живёт 1 год), для известных — хеш email/телефона (SHA-256, нормализация: trim + lower). Модели атрибуции считают вклад касания i как долю от конверсии V: - Last Click: w_i = 1 если i — последнее касание, иначе 0. - First Click: зеркально. - Linear: w_i = 1/n для всех n касаний. - Position-based (U-shaped): 40% первому, 40% последнему, 20% делят между остальными. - Time Decay: w_i = 2^(-Δti/halflife) / Σ 2^(-Δtj/halflife), halflife обычно 7–14 дней для B2B. - Data-Driven: логистическая регрессия или шэпли-значения по коалиционной игре касаний. Для B2B с циклом 60–180 дней Last Click занижает SEO и контент, Data-Driven честнее. Считаем ROMI по каналу: (Revenue_attr − Cost) / Cost × 100%.
3. Специфика в Яндекс (YATI) vs Google
В Яндекс Директ и Метрике есть атрибуция по моделям (последний переход, первый, автоматическая) и офлайн-конверсии через загрузку CSV или Measurement Protocol. Метрика хранит визиты 90 дней в отчётах атрибуции, client_id живёт дольше. В Google Analytics 4 — data-driven атрибуция по умолчанию, окно 30/60/90 дней настраивается, офлайн-конверсии через Measurement Protocol и импорт из CRM. GA4 привязывает к Google Signals и требует согласия по Consent Mode v2, иначе данные режутся. Разница в идентификации: у Яндекса сильнее коллтрекинг и работа в РФ-сегменте, у Google — экосистема Ads + BigQuery для собственных моделей. Для B2B часто держат обе системы и сверяют расхождения по сделкам.
4. Нормативы SLA и диагностическая матрица
| Параметр / Метрика | Эталон по SLA | Критическая ошибка |
|---|---|---|
| Доля сделок с заполненным источником (match rate) | >= 85% | < 60% |
| Расхождение выручки Метрика vs CRM | <= 10% | > 25% |
| ROMI по SEO-каналу (Data-Driven) | >= 150% | < 50% |
5. Пошаговый инженерный протокол внедрения
- Заведите в CRM обязательные скрытые поля: utm_source/medium/campaign, yclid, gclid, client_id Метрики — заполняются автоматически из формы и коллтрекинга.
- Настройте обратную передачу стадий сделки в Метрику и GA4 через Measurement Protocol: цель = 'Сделка оплачена', ценность = сумма договора.
- Постройте таблицу user_journey в BI: один лид = одна строка на касание, поля user_id, channel, timestamp, conversion_value.
- Сравните Last Click и Data-Driven по каналам за квартал, перераспределите бюджет по ROMI, а не по числу лидов.
# Time Decay атрибуция, halflife=14 дней
def time_decay(touches, conv_time, halflife=14):
weights = {}
total = 0.0
for t in touches:
dt = (conv_time - t['ts']).days
w = 2 ** (-dt / halflife)
weights[t['channel']] = weights.get(t['channel'], 0) + w
total += w
return {k: v / total for k, v in weights.items()}
# Пример: касание SEO за 30 дней до сделки получает вес 2^(-30/14)=0.226,
# касание email за 3 дня — 2^(-3/14)=0.862. Нормируем на сумму.
6. Типичные ошибки при оптимизации
- Считать атрибуцию по лидам, а не по деньгам: в B2B один лид может стоить 50 тыс., другой — 5 млн, средняя цена сделки врёт.
- Терять идентификатор на стыке форма → CRM: если поле utm не проброшено в сделку, весь SEO-канал схлопывается в '(direct)'.
- Ставить окно атрибуции 30 дней при цикле сделки 120 дней: первые касания (SEO, вебинары) выпадают из модели и бюджет срезают несправедливо.
