Мира · маркетолог магазина настолок «Кубик»
Отчёт сайта говорит, что треть выручки приносят «прямые заходы», а ВКонтакте почти ничего. Директор хочет урезать соцсети. Но я же вижу, что люди приходят к нам из соцсетей! Кто приводит покупателей?
Мы снова в «Кубике», где уже искали лучших клиентов в боссе блока D и делили их на сегменты в уроке про RFM. Тогда мы смотрели на заказы. Сегодня посмотрим на то, что было до заказа: откуда человек пришёл на сайт и сколько раз заходил, прежде чем купить.
Один заказ, четыре визита
Клиент 2858 купил в марте настолок на 11 030 ₽. Перед этим он заходил на сайт ещё трижды:
SELECT t.id, t.visited_at, t.utm_source, t.utm_medium, t.utm_campaign, t.order_id
FROM visits c
JOIN visits t ON t.customer_id = c.customer_id
AND t.visited_at BETWEEN c.visited_at - interval '14 days' AND c.visited_at
WHERE c.order_id = 4893
ORDER BY t.visited_at;
id | visited_at | utm_source | utm_medium | utm_campaign | order_id
-------+------------------------+------------+------------+--------------+----------
14451 | 2026-03-04 22:47:53+00 | vk | social | NULL | NULL
14562 | 2026-03-07 16:47:53+00 | newsletter | email | digest-16 | NULL
14617 | 2026-03-08 21:47:53+00 | newsletter | email | digest-6 | NULL
14765 | 2026-03-11 16:12:53+00 | NULL | NULL | NULL | 4893
4 марта он увидел пост ВКонтакте и посмотрел каталог. 7 и 8 марта открыл два письма рассылки. 11 марта набрал адрес сайта сам и оформил заказ. Кто заработал эти 11 030 ₽: ВКонтакте, рассылка или «прямой заход»?
Ответ зависит от договорённости, и эта договорённость называется моделью атрибуции. Разберём четыре модели и посмотрим, как от выбора модели меняется ответ Мире.
Откуда сайт знает источник
Ссылку в посте или письме маркетолог размечает метками в адресе:
https://kubik.shop/catalog?utm_source=newsletter&utm_medium=email&utm_campaign=digest-6
Это UTM-метки. Их три главные:
utm_source: площадка, откуда пришли.yandex,vk,newsletter,ozon;utm_medium: тип канала.cpc(платная реклама),organic(поиск без рекламы),email,social,marketplace;utm_campaign: конкретная кампания. Номер письмаdigest-6или промокодwelcome10.
Сайт записывает метки вместе с визитом в таблицу visits. Один визит это одно посещение сайта, то есть сессия. Визиты с метками и без перед заказом называют касаниями. У визита, на котором клиент оформил заказ, заполнен order_id: это закрывающий визит. Он есть у каждого заказа.
Если человек набрал адрес сам или открыл закладку, меток нет: utm_source пуст. Это прямой заход. Таких визитов 5672 из 19 361.
SELECT coalesce(utm_source, 'direct') AS source, utm_medium, count(*) AS visits
FROM visits
GROUP BY 1, 2
ORDER BY visits DESC;
Окно касаний
Сначала договоримся, какие визиты вообще считаются причастными к заказу. Пост, который клиент видел год назад, вряд ли привёл сегодняшнюю покупку. Берём окно: визиты того же клиента за 14 дней до закрывающего визита, включая его самого. Это обычное соединение таблицы с собой из урока 27: c это закрывающий визит, t все визиты-касания.
Выручку заказа считаем как в боссе блока D: сумма qty * price по позициям, без отменённых заказов. Позиции сначала сворачиваем в строку на заказ, иначе получим размножение строк из урока 26:
WITH order_revenue AS (
SELECT o.id, sum(i.qty * i.price) AS revenue
FROM orders o
JOIN order_items i ON i.order_id = o.id
WHERE o.status <> 'cancelled'
GROUP BY o.id
), touches AS (
SELECT c.order_id, r.revenue, t.id, t.visited_at,
coalesce(t.utm_source, 'direct') AS source
FROM visits c
JOIN order_revenue r ON r.id = c.order_id
JOIN visits t ON t.customer_id = c.customer_id
AND t.visited_at BETWEEN c.visited_at - interval '14 days' AND c.visited_at
)
SELECT count(DISTINCT order_id) AS orders, round(count(*)::numeric / count(DISTINCT order_id), 2) AS touches_per_order
FROM touches;
6191 заказ, в среднем 2,6 касания на заказ. Только у 1471 заказа касание одно, закрывающий визит. У остальных путь из двух-восьми визитов, и заслугу надо как-то делить.
урок из курса
Урок из курса «Аналитика данных с нуля». Курс покупается один раз и остаётся навсегда: 500 ₽.
Оплата пока не подключена: премиум и курсы открываются промокодом.