Как посчитать Add to Cart Rate в SQL

Проверь себя · 1/3разбор после ответа
Дано выражение: CASE WHEN status = 'paid' THEN amount ELSE 0 END. Что вернётся, если status равно NULL, а amount равно 500?

Зачем Add to Cart Rate

В e-com-воронке шаги такие: просмотр товара → добавление в корзину → оформление → покупка. Add to Cart Rate показывает, насколько хорошо карточка товара превращает просмотр в желание купить. Если ACR падает, проблема в карточке товара — фото, описание, цена или отзывы.

Формула

Add to Cart Rate = adds_to_cart / product_views × 100%

Базовый расчёт

SELECT
    COUNT(*) FILTER (WHERE event_type = 'product_view') AS views,
    COUNT(*) FILTER (WHERE event_type = 'add_to_cart') AS adds,
    COUNT(*) FILTER (WHERE event_type = 'add_to_cart')::NUMERIC * 100
        / NULLIF(COUNT(*) FILTER (WHERE event_type = 'product_view'), 0) AS acr_pct
FROM events
WHERE event_date >= CURRENT_DATE - INTERVAL '30 days';

По продуктам

SELECT
    product_id,
    COUNT(*) FILTER (WHERE event_type = 'product_view') AS views,
    COUNT(*) FILTER (WHERE event_type = 'add_to_cart') AS adds,
    COUNT(*) FILTER (WHERE event_type = 'add_to_cart')::NUMERIC * 100
        / NULLIF(COUNT(*) FILTER (WHERE event_type = 'product_view'), 0) AS acr_pct
FROM events
WHERE event_date >= CURRENT_DATE - INTERVAL '30 days'
  AND product_id IS NOT NULL
GROUP BY product_id
HAVING COUNT(*) FILTER (WHERE event_type = 'product_view') >= 100
ORDER BY acr_pct DESC
LIMIT 50;

HAVING views >= 100 отсекает товары с микро-трафиком.

Закрепи формулу add to cart rate в Карьернике
Запомнить надолго — 5 коротких сессий с задачами на эту тему. Бесплатно
Тренировать add to cart rate в Telegram

По каналам

SELECT
    u.acquisition_channel,
    COUNT(*) FILTER (WHERE e.event_type = 'product_view') AS views,
    COUNT(*) FILTER (WHERE e.event_type = 'add_to_cart') AS adds,
    COUNT(*) FILTER (WHERE e.event_type = 'add_to_cart')::NUMERIC * 100
        / NULLIF(COUNT(*) FILTER (WHERE e.event_type = 'product_view'), 0) AS acr_pct
FROM events e
JOIN users u ON u.user_id = e.user_id
WHERE e.event_date >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY u.acquisition_channel
ORDER BY acr_pct DESC;

Пользователи из органического поиска обычно имеют ACR выше, чем из платного трафика — у них более прицельное намерение купить.

Частые ошибки

Ошибка 1. Уникальные просмотры против всех просмотров. Пользователь посмотрел товар 3 раза, добавил 1 раз — ACR = 100% (по пользователям) или 33% (по просмотрам)?

Ошибка 2. Игнорировать повторные добавления. Пользователь добавил → удалил → добавил снова. Это 2 события добавления, но один пользователь.

Ошибка 3. Не учитывать быстрые добавления. Добавление без просмотра карточки (через виджет рекомендаций). Где здесь «просмотр»?

Ошибка 4. Время между просмотром и добавлением. Пользователь посмотрел 1 января, добавил 15 апреля — это связанные события? По стандартной логике — да, но только если они в одной сессии или в пределах 24 часов.

Связанные темы

FAQ

Какой ACR считается хорошим?

В среднем по e-com показатель держится на 5-15%. В премиум-сегменте он ниже — 2-5%, в fast fashion выше — 15-25%. Точный ориентир сильно зависит от категории товара.

ACR падает — что делать?

Сначала проверьте, не менялись ли описание и фото товара. Затем протестируйте цену через A/B-тест. И сопоставьте динамику с отзывами и рейтингами — падение оценок часто тянет ACR вниз.

Считать ACR по каждому товару?

Да, это помогает находить проблемные товары. Если у популярного товара ACR всего 1%, значит, что-то не так с его карточкой.

ACR или CVR?

ACR измеряет шаг просмотр → добавление в корзину, а CVR — добавление → покупку. Их удобно смотреть вместе, чтобы понять, на каком именно шаге воронки теряются пользователи.

ACR на мобильных и десктопе?

На мобильных ACR обычно ниже — там сложнее попадать по элементам и легче промахнуться по кнопке. Стоит раскладывать метрику по типу устройства, иначе средняя цифра скрывает эту разницу.