Настройка атрибуции конверсий для сайта
Атрибуция — распределение заслуги за конверсию между рекламными каналами. Пользователь увидел баннер, потом нашёл через поиск, через 3 дня вернулся по email и купил. Какой канал получает заслугу? Ответ зависит от модели атрибуции.
Модели атрибуции
| Модель | Логика | Когда использовать |
|---|---|---|
| Last Click | 100% последнему каналу перед покупкой | Быстрые решения, низкий чек |
| First Click | 100% первому касанию | Оценка каналов, привлекающих новых |
| Linear | Поровну между всеми каналами | Длинный цикл продаж |
| Time Decay | Больше вес недавним касаниям | Короткий цикл сделки |
| Position-based | 40% первому + 40% последнему + 20% остальным | Баланс между привлечением и конверсией |
| Data-driven | ML на основе реальных данных GA4 | Достаточно данных (1000+ конверсий/мес) |
Настройка в GA4
GA4 по умолчанию использует Data-Driven Attribution. Переключение:
GA4 → Admin → Attribution Settings → Reporting Attribution Model
Для сравнения моделей:
Reports → Advertising → Attribution → Model Comparison
Выбрать два канала (например, Paid Search и Email) и сравнить их вклад по разным моделям.
Сохранение UTM-параметров в БД
Для собственной атрибуции — хранить UTM-параметры при каждом визите:
// При загрузке страницы
const utmParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'utm_term'];
const currentUtm = {};
const urlParams = new URLSearchParams(window.location.search);
utmParams.forEach(param => {
if (urlParams.has(param)) {
currentUtm[param] = urlParams.get(param);
sessionStorage.setItem(param, urlParams.get(param));
}
});
// Сохранить в localStorage для last-touch
if (Object.keys(currentUtm).length > 0) {
localStorage.setItem('last_utm', JSON.stringify({ ...currentUtm, timestamp: Date.now() }));
}
// При оформлении заказа — передать UTM-параметры
$order->update([
'utm_source' => session('utm_source'),
'utm_medium' => session('utm_medium'),
'utm_campaign' => session('utm_campaign')
]);
Мультиканальная атрибуция на сервере
-- Анализ конверсий по first-touch атрибуции
SELECT
first_visit.utm_source,
COUNT(DISTINCT o.id) as orders,
SUM(o.total) / 100.0 as revenue
FROM orders o
JOIN sessions first_visit ON first_visit.user_id = o.user_id
AND first_visit.id = (
SELECT id FROM sessions
WHERE user_id = o.user_id
ORDER BY created_at ASC
LIMIT 1
)
WHERE o.created_at >= NOW() - INTERVAL '30 days'
GROUP BY first_visit.utm_source
ORDER BY revenue DESC;
Окно атрибуции
Окно — сколько дней назад должно быть касание, чтобы засчитываться. GA4 по умолчанию: 30 дней для конверсий, 90 дней для покупок. Для B2B с длинным циклом — увеличить до 90–180 дней.
Срок настройки: 2–3 дня для настройки GA4 + хранения UTM в БД.







