Регистрации врут. Как я собрал когортный ретеншн по дням, которого нет в Яндекс Метрике из коробки
Почему "сколько пришло и сколько зарегистрировалось" - это только половина правды, и что я сделал, чтобы видеть вторую.
Короткая мысль, с которой все началось
Регистрация - это не результат. Результат - это пользователь, который вернулся.
Звучит банально, пока не попробуешь честно ответить на вопрос "сколько из тех, кого мы привели в прошлом месяце, реально осталось с продуктом через неделю". Не в среднем по больнице, а по каждому каналу и каждой кампании, по дням: D1, D3, D7, D30.
Я попробовал ответить на этот вопрос в Яндекс Метрике и довольно быстро уперся в стену. А когда собрал нормальный когортный ретеншн сам - увидел вещи, которые в стандартных отчетах были не видны в принципе. Например, что наш лучший канал по регистрациям оказался одним из худших по удержанию.
Дальше по порядку.
Чего не хватает в Метрике
Сразу честно, чтобы не было разговоров в комментариях: когортный анализ в Яндекс Метрике есть. В вебной версии это отдельный отчет в платных отчетах - "Когортный анализ" и "Retention-анализ". Там можно выбрать когорту, метрику возвращаемости и посмотреть retention.
Проблема не в том, что инструмента нет. Проблема в том, что для продуктовой работы им почти невозможно пользоваться:
- Ретеншн считается грубыми диапазонами дней - 0-1, 2-4, 5-10, 11-30. То есть чистого по-дневного D1 / D3 / D7 / D30 по когортам из коробки не получить. А именно это и нужно, чтобы видеть, на каком дне пользователи отваливаются.
- Разрезать удержание одновременно по источнику и по UTM-кампании, да еще нормально выгрузить в удобный вид - отдельная боль.
- Нет нормального контекста: какая база у когорты, дозрела ли она, можно ли вообще делать вывод по этим цифрам или там три с половиной человека.
По-хорошему за честным когортным ретеншном надо лезть в Logs API, выгружать сырые данные на уровне пользователей и считать самому в ClickHouse / DataLens или хотя бы в гугл-таблице. Это уже не "открыл отчет и посмотрел", это полноценный пайплайн.
А метрика при этом критичная. Без нее ты оптимизируешь привлечение вслепую: видишь регистрации, радуешься росту, а кто из этих людей реально пользуется продуктом через неделю - не знаешь.
Что я сделал
Я не стал поднимать тяжелый стек. Сделал инструмент поверх API Метрики прямо в Google Sheets - на Google Apps Script.
Логика простая. Раз в сутки скрипт сам, по триггеру, ходит в API Метрики, тянет данные и собирает в таблице:
- Когортную матрицу ретеншна D0-D30 по дням с тепловой картой. Строка - дата регистрации (когорта), столбцы - дни с момента первого визита, в ячейке - доля вернувшихся. Это та самая классическая когортная "лесенка", ради которой все и затевалось.
- Ретеншн D1 / D3 / D7 / D10 / D30 в разрезе каждого источника и каждой UTM-кампании. То есть не просто "общее удержание", а удержание по каналам - чтобы понимать, какой трафик приводит людей, которые остаются.
- Дашборд с ключевыми метриками за период (визиты, пользователи, регистрации, целевые действия), сводными Weighted D1-D30 и авто-выводами.
- Честный контекст к каждой когорте: размер, зрелость и пометку, можно ли вообще по ней делать выводы. Когорты с малой базой подсвечиваются серым - чтобы никто не побежал принимать решение по выборке из 4 человек.
Все живет в обычной гугл-таблице. Делится одной ссылкой, обновляется само каждое утро. Никаких BI-платформ, серверов и подписок.
Отдельно про методику, потому что это важно для честности цифр. Я считаю classic day retention - вернулся ли пользователь ровно на N-й день после первого визита. Это строгая метрика: для продуктов с нерегулярным заходом значения на D7+ будут низкими, и это нормально, это не "продукт умирает". Об этом я прямо пишу в самом дашборде, чтобы цифры никого не пугали и не вводили в заблуждение.
Что вылезло, когда я наконец это увидел
Вот ради чего все и делалось. Беру четыре основных канала за 30 дней и смотрю две метрики рядом: конверсию в регистрацию и D7 retention (вернулись на 7-й день).
- finam_app / referral: конверсия в регистрацию 38% - лучший канал по конверсии. А D7 retention 1,8%.
- youtube / influencer: конверсия 28%, D7 4%.
- telegram / content: конверсия 18%, D7 1% - регистрируются и почти сразу отваливаются.
- finamx-landing: конверсия 16% - средне. Зато D7 7,2% - лучший канал по удержанию.
Смотрите, что получается. Лучший канал по регистрациям и лучший канал по удержанию - это разные каналы. Более того, они идут почти в обратном порядке: чем выше конверсия в регистрацию, тем ниже удержание.
Если смотреть только на регистрации - а так смотрит большинство дашбордов - вывод напрашивается "льем в referral и telegram, там дешево и конверсит". А по факту эти каналы приводят людей, которые не задерживаются в продукте. Канал, который реально приносит остающихся пользователей (finamx-landing), по верхнеуровневым метрикам выглядит средненько и легко попадает под нож при оптимизации бюджета.
Вот это расхождение между "зарегистрировался" и "остался" - и есть та самая вторая половина правды, которую без когортного ретеншна по каналам просто не видно.
Что я из этого вынес
Несколько мыслей, которые мне кажутся полезными за пределами конкретно моего кейса.
- Конверсия в регистрацию и удержание - разные метрики, и оптимизировать только первую опасно. Высокий CR может маскировать мусорный трафик.
- Когортный ретеншн по дням - это не "продвинутая аналитика для зрелых команд", а базовая гигиена. Без него вы не знаете, работает ли вообще ваше привлечение. И да, в коробочной Метрике этого нормально не сделать - это объективное ограничение инструмента, а не ваша лень.
- Не обязательно строить тяжелый пайплайн, чтобы закрыть эту дыру. Apps Script + API + гугл-таблица закрывают 80% потребности почти бесплатно. Тяжелый стек нужен, когда упретесь в объемы или в rolling retention - но это уже следующий шаг.
- Честность важнее красоты дашборда. Маленькие когорты, незрелые окна, строгая методика - все это надо подсвечивать прямо в отчете, иначе кто-нибудь примет решение по случайному всплеску на выборке из десяти человек.
Если такие штуки вам близки - я пишу про продуктовую аналитику и подобные самоделки в своем телеграм-канале. Заходите, если интересно.