Articles
    6 мин чтенияАвтор: Dorian BrenwaldtОбновлено

    Как проверить, предсказывает ли активация удержание

    Допустим, 46% пользователей, создавших проект в первую неделю, работают в продукте и на четвёртой неделе, а среди остальных таких только 22%. Разрыв в 24 пункта выглядит как готовая метрика активации, хотя почти такой же дал бы рекламный канал, который приводит людей с уже сформулированной задачей.

    Считать активацию метрикой можно, только если раннее поведение действительно отделяет тех, кто останется, от тех, кто уйдёт. И этот разрыв должен выдержать проверку: на разных каналах, на новых когортах и в эксперименте.

    Активация должна предсказывать удержание

    Онбординг можно пройти механически: пролистать экраны, нажать кнопку и так и не получить никакой пользы. Поэтому проверку начинают с конца. Сначала решают, что считать удержанием. Потом ищут раннее действие, которое стабильно отделяет вернувшихся от ушедших.

    Удержанием может быть возвращение на 21-28-й день, повторная покупка, созданный отчёт, оформленный заказ или другое ключевое действие. Затем ищите раннее событие, после которого люди возвращаются чаще. Причём это должно повторяться в разных когортах и в похожих сегментах.

    У хорошей активации три свойства. Она случается до момента удержания. Её совершает заметная доля новичков. И она связана с пользой, а не просто с переходами по интерфейсу. Для сервиса проектов это первый проект с приглашённым участником. Для маркетплейса, где польза в выборе, это сохранённый товар или первый заказ. Простое открытие каталога сюда не подходит. Универсального действия нет.

    Событие выбирают по разрыву когорт

    Кандидата на роль активации выбирают по данным, а не по ощущениям команды. Составьте список ранних действий, например за первые семь дней после регистрации. Для каждого сравните удержание тех, кто его совершил, и тех, кто нет. Смотрите разницу и в пунктах, и в процентах. Одной разницы мало: её может создавать сам состав трафика.

    Когортная матрица показывает то, что скрывает среднее. Это формат отчёта с вымышленными числами; ячейки содержат удержание активированных / неактивированных пользователей одной недели регистрации.

    Событие в первые 7 дней Когорта 1 Когорта 2 Когорта 3 Чтение результата
    Создал проект 46% / 22% 44% / 21% 47% / 24% устойчивый разрыв
    Добавил аватар 33% / 28% 27% / 26% 35% / 30% слабый сигнал
    Пригласил коллегу 58% / 25% 55% / 23% 39% / 24% проверить состав канала

    «Создал проект» сильнее: разрыв повторяется от когорты к когорте и почти не скачет. С «пригласил коллегу» сложнее. В первых двух когортах эффект большой, в третьей он проседает. Это надо проверить: мог появиться новый канал, измениться механика приглашений или тип пользователей.

    Смотрите и на то, сколько людей совершает действие. Почти идеальная связь у маленькой группы и так мотивированных пользователей помогает изучать ценную аудиторию. Строить на ней онбординг нельзя. Рабочая метрика должна оставлять место для роста и описывать путь, который продукт может улучшить.

    Корреляция ломается на канале и намерении

    Даже устойчивый разрыв ещё не доказывает, что дело в продукте. За ним может стоять канал или то, с какой целью человек пришёл. Это главная ловушка, её называют смещением отбора. Люди с ясной задачей из поиска по названию бренда быстрее создают проект и чаще возвращаются. Пришедшие из широкой рекламы могли зарегистрироваться из любопытства, ничего не сделать и уйти. В общей таблице создание проекта будет выглядеть причиной, хотя разрыв отчасти объясняется намерением.

    Поэтому сравнивайте активированных и неактивированных внутри одного источника, кампании, страны, устройства и версии продукта. Учитывайте и то, что было до активации: сколько сессий прошло до первого действия, как человек попал в продукт, какой выбрал тариф, какая у него роль в команде. Скрытых различий это не уберёт, но снизит риск принять качество трафика за заслугу продукта.

    Разбивка по сегментам нужна для решения. Допустим, разрыв есть в платном поиске, но исчезает в партнёрском трафике. Тогда не объявляйте событие универсальным. Значит, пути к пользе у этих людей разные, или посадочная страница обещает не то, что даёт первый сеанс. Лучше пересобрать онбординг или разделить аудитории, чем усреднять их.

    Исключите и обратную причину. Человек может вернуться по своим делам и совершить «раннее» действие уже во второй визит. В окно активации должны попадать только действия до того возврата, который вы измеряете.

    SQL должен фиксировать время и право попасть в выборку

    Ложную связь легко получить, даже если с трафиком всё в порядке: хватит одного неаккуратного запроса. Например, группы получили разное время, или в выборку попали люди, которые ещё не прожили нужный срок. Не берите свежие регистрации, для которых окно удержания ещё не закрылось. Есть и более хитрая ошибка, смещение бессмертного времени. На активацию дают семь дней, а неактивированных сравнивают с теми, кто ушёл уже на второй день. Первая группа просто получила больше времени в продукте.

    Упрощённый запрос: активацией считается создание проекта, удержанием критическое действие на 21-28-й день; берутся только регистрации, достаточно старые для обоих окон.

    WITH base AS (
      SELECT user_id, signup_at
      FROM users
      WHERE signup_at + interval '28 day' < current_date
    ), flags AS (
      SELECT b.user_id,
        MAX(CASE WHEN e.event_name = 'project_created'
          AND e.occurred_at >= b.signup_at
          AND e.occurred_at < b.signup_at + interval '7 day'
          THEN 1 ELSE 0 END) AS activated,
        MAX(CASE WHEN e.event_name = 'core_action'
          AND e.occurred_at >= b.signup_at + interval '21 day'
          AND e.occurred_at < b.signup_at + interval '28 day'
          THEN 1 ELSE 0 END) AS retained
      FROM base b
      LEFT JOIN events e ON e.user_id = b.user_id
      GROUP BY 1
    )
    SELECT activated, COUNT(*) AS users, AVG(retained) AS retention
    FROM flags
    GROUP BY 1;
    

    Для решения добавьте дату регистрации, канал, устройство, страну и вариант интерфейса. Проверьте дубликаты, смену идентификатора после авторизации и пропуски трекинга. Если project_created отправляется до успешного сохранения, измеряются нажатия.

    Сигнал должен пережить повторную проверку

    Правильный запрос даёт только кандидата, и его ещё надо перепроверить. Разрыв в одной когорте может быть случайным, особенно если группы маленькие, а событий вы перебрали десятки. Выберите кандидата на ранних когортах и проверьте его на следующих. Так меньше риск поверить в эффект, который был только в одном историческом срезе.

    Рядом со средним удержанием записывайте размер групп, разницу в пунктах и доверительный интервал, то есть диапазон, в котором, скорее всего, лежит настоящая разница. В маленьком сегменте впечатляющий рост может исчезнуть через неделю. Для денежных метрик смотрите медиану, распределение и долю платящих. Среднее искажают несколько крупных покупателей.

    Возьмём когорту в 2 000 регистраций: проект создали 800 человек (40%). Удержание 46% против 22% даёт разрыв 24 пункта. Стандартная ошибка разницы равна корню из 0,46 × 0,54 / 800 + 0,22 × 0,78 / 1 200, это примерно 0,021, и 95-процентный интервал составляет около ±4 пунктов: от 20 до 28. Сигнал надёжный.

    Теперь «пригласил коллегу» в третьей когорте: допустим, пригласили только 150 человек, удержание 39% против 24%. Ошибка здесь около 0,041, интервал ±8 пунктов, от 7 до 23. Разница, похоже, есть, но её величина неизвестна с точностью до трёх раз, и строить на ней онбординг рано.

    Полезна и проверка «пустышкой». Возьмите действие, которое никак не связано с пользой, например смену темы оформления. Если оно предсказывает удержание почти так же хорошо, как активация, обе метрики, скорее всего, ловят что-то другое: насколько активным был первый визит, какое было устройство или какой канал вы не учли.

    Сравните и время до активации. Действие в первые десять минут и на шестой день значат разное. Раннее говорит о понятном первом опыте, позднее скорее о настойчивости. Складывать их в один флаг нельзя.

    Эксперимент отделяет влияние продукта от выбора пользователя

    Наблюдения, даже повторённые на новых когортах, показывают только связь. Влияние проверяет эксперимент: он меняет шанс активации и не меняет состав аудитории. Например, одна группа получает в онбординге готовый шаблон проекта, другая идёт прежним путём. Распределяйте людей по группам случайно ещё до первого экрана. Факт показа варианта записывайте отдельным событием.

    Цепочка должна быть ясна: вариант влияет на создание проекта, оно связано с удержанием, а вариант не ухудшает другой опыт. Контролируйте:

    1. Удержание в заранее выбранном окне и по описанному критическому действию.
    2. Долю создавших проект и время до действия.
    3. Ошибки, обращения в поддержку, отмены, удаление проектов и денежные показатели, если изменение затрагивает оплату.

    Если активация выросла, а удержание нет, проверьте, хватило ли теста по размеру (мощность), правильное ли окно наблюдения и не повлиял ли вариант как-то иначе. Сам по себе такой результат механизм не объясняет. Рост удержания без заметного роста активации тоже важен: интерфейс мог помочь понять продукт другим путём. Не приписывайте эффект событию, пока не подтвердили всю цепочку.

    До старта запишите окно конверсии, размер эффекта, ради которого стоит что-то менять, и срок теста. Если смотреть на результат каждый день, растёт шанс остановиться на случайном всплеске. Каждый лишний взгляд даёт ещё одну возможность увидеть «значимость», которой нет. Поэтому правило остановки записывают до запуска.

    После выката следите за новыми когортами. Новизна интерфейса, сезон и рекламный микс меняют эффект. Краткосрочный эффект часто расходится с долгосрочным, и для удержания это особенно опасно. Окно в четыре недели может закрыться раньше, чем пройдёт эффект новизны. Новизна выдыхается, а отчёт уже сдан.

    Рост продукта меняет смысл раннего действия

    Определение, подтверждённое экспериментом, тоже стареет, потому что меняется сам продукт. На ранней стадии одно действие иногда описывает ценность, но с новыми ролями, тарифами, странами и сценариями уже нет. Администратор создаёт проект, исполнитель ждёт приглашения, клиент лишь смотрит результат, и общая активация начинает штрафовать нормальное поведение.

    Храните несколько путей активации для ролей, объединённых первым полезным результатом, и датируйте версии определения. Иначе квартальный график смешает старую таксономию, новый онбординг и изменение продукта, а скачок нельзя будет объяснить.

    Качество трекинга критично: владелец события, условия срабатывания, тесты после релиза и журнал изменений защищают от тихой деградации. Переименование события или автосоздание сущности требует отдельной проверки когорт до и после релиза.

    Что здесь легко посчитать неправильно

    У ловушек этой проверки есть имена, и знать их полезно: так их узнаешь до спорного отчёта. Смещение бессмертного времени, описанное выше на пальцах, в эпидемиологии разобрал Самай Суисса (Samy Suissa, «Immortal Time Bias in Pharmacoepidemiology», American Journal of Epidemiology, 2008): интервал, в течение которого пользователь по построению не мог «выпасть», ошибочно засчитывается активированной группе как заслуга продукта. В нашей задаче это ровно тот случай, когда на активацию дают семь дней, а срок дожития у групп разный.

    Второе имя носит ошибка отбора выживших: если в выборку берут только доживших до окна удержания, из неактивированных незаметно вымывается часть быстро ушедших, и разрыв когорт раздувается сам собой. Отсюда и правило брать регистрации, достаточно старые для обоих окон, и держать одинаковый критерий отбора для обеих групп.

    Полезно помнить и происхождение самой идеи «момента активации». Ранние примеры вроде «7 друзей за 10 дней» у Facebook или порога первой загрузки файла у Dropbox никогда не были универсальными константами. Конкретные команды нашли эти пороги на своих данных, а пересказывают их потом нередко вольно. Копировать чужую цифру бессмысленно: переносится сам метод (перебрать ранние действия, сравнить удержание, проверить устойчивость и причинность), а конкретное число каждая команда находит заново на своих когортах.

    Практический ориентир по величине разрыва тоже стоит задать заранее, до того как увидишь данные. Скажем, разрыв в удержании меньше 5-7 процентных пунктов на сопоставимых когортах чаще шум, чем сигнал, а десятки пунктов, как у «создал проект» в примере выше, уже трудно списать на состав трафика. Но и крупный разрыв ничего не стоит, если держится на сотне пользователей: доверительный интервал тут важнее самой средней.

    Когда эксперимент можно пропустить

    Сторонники быстрых решений резонно замечают, что эксперимент на удержание тянется неделями, а устойчивый разрыв на трёх когортах уже достаточно убедителен. Продукт меняется быстрее, чем заканчивается тест, и пока команда ждёт четвёртую неделю удержания, конкуренты выпускают два релиза.

    Посчитаем, сколько стоит проверка на тех же числах. Если доля активации вырастет с 40% до 50% и весь разрыв в 24 пункта причинный, общее удержание поднимется на 0,10 × 24 = 2,4 пункта, с 31,6% до 34%. Это верхняя граница: часть разрыва создаёт исходное намерение пользователя. Чтобы поймать 2,4 пункта при мощности 80% и уровне значимости 5%, нужно около 16 × 0,316 × 0,684 / 0,024², то есть примерно 6 000 пользователей в каждой группе. При 2 000 регистраций в неделю набор займёт шесть недель, и ещё четыре уйдут на окно удержания.

    Быстрый путь оправдан, когда изменение дешёвое и обратимое: подсказка в онбординге, порядок экранов, шаблон по умолчанию. Тогда разумно выкатить его на всех, оставив 5-10% пользователей в контрольной группе (holdout), и сравнить удержание, когда окно закроется. Если же на активацию собираются переориентировать команду, бонусы или целевые показатели квартала, десять недель проверки дешевле года работы на неверную метрику. Чем дороже решение, построенное на метрике, тем строже должно быть доказательство причинности.

    Метрика заслуживает места в ежедневной работе

    Активация выглядит рабочим предиктором по трём признакам: когортный разрыв стабилен, связь сохраняется в сопоставимых каналах и сегментах, а эксперимент вместе с ранним действием сдвигает и удержание. До этого она остаётся лишь гипотезой.

    Из трёх признаков дороже всего обходится последний, и на нём же чаще всего экономят. Почему? Матрицу нескольких когорт, разбивку по источникам и проверку тайминга в SQL можно собрать за день, а эксперимент занимает недели. Без него даже стабильный разрыв может означать лишь то, что вернувшиеся пользователи с самого начала были мотивированнее, а критическое действие просто совпадало с их намерением. В таком случае сокращение пути к первой ценности поднимет активацию и оставит удержание на прежнем уровне.

    Порог входа в эксперимент задаёт одна таблица: разрыв с интервалами для трёх-пяти ранних событий на трёх последних когортах. Кандидат, который её не пережил, до A/B-теста не доходит.

    Share:XLinkedInTelegramWhatsAppEmail