Как найти причину падения конверсии на 10%?

«Как найти причину падения конверсии на 10%?» — вопрос из категории Аналитика и метрики, который задают на 33% собеседований Data Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Когда на моем проекте внезапно упала конверсия, я действовал по методике «дробления» (drill-down), чтобы изолировать проблему. Вот мой пошаговый подход:

1. Валидация и сегментация данных: Первым делом я проверяю, не артефакт ли это данных (например, проблемы с трекингом). Затем разбиваю общую метрику на ключевые сегменты, чтобы понять, где именно произошел спад.

-- Анализ конверсии по основным каналам за последние 7 дней vs предыдущие 7 дней
WITH current_period AS (
    SELECT 
        traffic_source,
        COUNT(DISTINCT session_id) AS sessions,
        COUNT(DISTINCT CASE WHEN event = 'purchase' THEN session_id END) AS conversions
    FROM web_events 
    WHERE event_date BETWEEN CURRENT_DATE - 7 AND CURRENT_DATE
    GROUP BY traffic_source
),
previous_period AS (
    SELECT 
        traffic_source,
        COUNT(DISTINCT session_id) AS sessions,
        COUNT(DISTINCT CASE WHEN event = 'purchase' THEN session_id END) AS conversions
    FROM web_events 
    WHERE event_date BETWEEN CURRENT_DATE - 14 AND CURRENT_DATE - 8
    GROUP BY traffic_source
)
SELECT 
    COALESCE(c.traffic_source, p.traffic_source) AS traffic_source,
    ROUND(c.conversions * 100.0 / NULLIF(c.sessions, 0), 2) AS conv_rate_current,
    ROUND(p.conversions * 100.0 / NULLIF(p.sessions, 0), 2) AS conv_rate_prev,
    ROUND(
        (c.conversions * 100.0 / NULLIF(c.sessions, 0)) - 
        (p.conversions * 100.0 / NULLIF(p.sessions, 0)), 
        2
    ) AS conv_rate_diff
FROM current_period c
FULL OUTER JOIN previous_period p ON c.traffic_source = p.traffic_source
ORDER BY ABS(conv_rate_diff) DESC;

Этот анализ сразу покажет, упала ли конверсия равномерно или, например, только у трафика из определенной рекламной сети (Google Ads) или региона.

2. Глубокий анализ «виновного» сегмента: Если падение сконцентрировано в одном канале (например, «Paid Social»), я смотрю глубже:

  • По кампаниям/объявлениям: Не было ли отключения высококонверсионных кампаний или запуска новых, но низкокачественных?
  • По устройствам/браузерам: Может, упала конверсия только на мобильных устройствах? Это намек на проблемы с UX или скоростью загрузки мобильной версии.
  • По воронке: Использую когортный анализ, чтобы увидеть, на каком конкретном шаге (просмотр товара -> корзина -> оформление) увеличился отток.

3. Проверка внешних и технических факторов:

  • Релизы: Сверяюсь с графиком релизов фронтенда/бэкенда. Падение часто совпадает с deployment'ом новой версии, которая могла сломать кнопку покупки или форму заказа.
  • Производительность: Анализирую метрики скорости загрузки страниц (например, через Google Lighthouse или внутренний мониторинг) за тот же период. Рост времени загрузки на 2 секунды может легко «убить» 10% конверсии.
  • Ошибки: Проверяю логи на предмет участившихся JS-ошибок на критических страницах или роста 4xx/5xx ошибок на API эндпоинтах, отвечающих за оформление заказа.

4. Формулировка гипотезы и проверка: На основе данных я формулирую гипотезу (например, «Конверсия упала из-за ошибки в новой платежной форме, которая появляется у 30% пользователей Safari»). Затем либо проверяю ее через логи, либо, если возможно, запускаю A/B-тест, откатывая изменение на части трафика.