Если коротко, то прежде чем заливать деньги в рекламу, я остановился и за один день собрал в админке Картары аналитику воронки — регистрация, расклад, оплата, плюс каналы, когорты и retention, всё поверх событий, которые продукт и так уже писал у себя. И первое же, что вылезло из реальных цифр, а не из моей чуйки, оказалось такое: пользователи, которые пришли по рефералке от друга, конвертят примерно вдвое лучше органики. До первого расклада из них доходят 87.5% против 64.5%, до оплаты — 4.2% против 1.9%. То есть друг, который привёл друга, для меня дороже любого холодного трафика, а я об этом даже не подозревал, пока не построил дашборд и не увидел это на экране.
Главный принцип: не лей трафик в дырявое ведро
Вся эта история началась с простой мысли, которую я давно про себя крутил, но всё откладывал на потом. Вот вы запускаете продукт, у вас крутится бот, люди заходят, кто-то платит, и вроде всё живое, а спросите-ка себя — а сколько у вас людей из ста доходит от регистрации до покупки? а какая когорта живёт дольше, а какая отваливается на второй день? а откуда вообще приходят те, кто реально платит? И тут выясняется, что ответа нет, потому что воронка нигде не измеряется, конверсии рег→покупка нет, когорт нет, LTV нет. Когда мне эту дыру показали прямым текстом, я только и сказал: вот тут полностью согласен, сам давно об это думал.
И вот это для меня ключевой момент, ради которого я вообще сел писать этот текст. Соблазн-то какой — у тебя есть рекламный кабинет, руки чешутся, хочется нагнать максимально много людей и максимально дёшево, и кажется, что вот сейчас зальём бюджет и попрёт. А по факту ты просто льёшь воду в ведро с дырявым дном и даже не видишь, где именно течёт. Поэтому сначала ведро, потом вода. Сначала ты должен видеть, что вообще происходит внутри продукта, а уже потом решать, куда нести деньги. По той же логике я перед заливом трафика собрал в админке свой мониторинг ошибок вместо Sentry — чтобы не палить рекламный бюджет, пока не видишь, на чём спотыкаются люди.
Что именно я построил (и почему это заняло день, а не неделю)
Самое приятное во всей затее — что аналитику не пришлось городить с нуля. У Картары уже работал свой слой событий, продукт логировал, кто зарегался, кто открыл расклад, кто оплатил, и всё это потихоньку копилось. То есть данные лежали, их просто никто системно не смотрел. Мне оставалось взять эти события и собрать поверх них три вещи: воронку по шагам, разбивку по каналам и когорты. Сам код, как обычно, писал не я руками, я оркестрировал Claude Code — объяснял ему логику атрибуции и что именно хочу видеть на дашборде, а он раскладывал это по запросам и компонентам. Дашборд собрали с графиками, процентами перехода между шагами и удержанием по дням.
И вот тут хочу честно сказать, потому что я и сам код писать не умею и никогда это не скрывал: вся ценность была не в том, чтобы написать красивый запрос к базе, а в том, чтобы правильно задать вопрос данным. Какая разница, кто там настучал запросы по клавишам, если ты не знаешь, что именно спрашивать. А я знал, что хочу спросить, потому что меня этот вопрос про дырявое ведро мучил уже не первый месяц.
Атрибуция — самое скользкое место
Когда дошло до каналов, вылезла подстава, которую я бы вообще не заметил, если бы просто смотрел на цифры сверху. Логику атрибуции выстроили по приоритету: сначала смотрим, не партнёрский ли это источник, потом — не рефералка ли, и только если ничего не подошло, берём то, что записано в источнике регистрации, а если и там пусто — помечаем как неотслеженное. Вроде стройно. Но при этом мой главный платный канал в РФ — а это Telegram-реклама — схлопывался в одно слово «telegram», и всё. То есть весь платный трафик сливался в кучу с любым органическим переходом из Telegram, и понять, окупается реклама или нет, было физически невозможно.
Оказалось, что нужная мне метка просто терялась по дороге. Telegram при переходе по ссылке прокидывает параметр запуска, и в нём как раз сидела разметка кампании, но мы её не разбирали. Пришлось научить продукт парсить этот параметр и вытаскивать оттуда utm-метку, чтобы платный трафик отделился от случайных заходов. Без этого вся аналитика каналов была бы красивой картинкой ни о чём, со слепой зоной ровно в том месте, куда я и собирался вкладывать деньги. Вот и думайте, насколько легко обмануть самого себя одним недоразобранным параметром.
А что со старым трафиком
Заодно я полез разбираться со старой рекламной кампанией, которая когда-то крутилась через кабинет. Цифры там, кстати, были вполне симпатичные: 3036 кликов, потрачено 5400 рублей, CTR 2.55%, цена клика 1.78 рубля. То есть трафик-то был дешёвый, грех жаловаться. А вот толку с него ноль, и теперь понятно почему. Утечка была не в рекламе, а в лендинге: человек кликал, его редиректило в Telegram, и на этом всё, никаких целей, никакой аналитики, кто там дошёл до продукта, а кто отвалился. Дешёвый клик, который никуда не вёл и ничего не считал. Классическая ситуация, когда кажется, что у тебя проблема с трафиком, а на самом деле проблема в том, что ты не видишь, что с этим трафиком происходит дальше.
Главный инсайт пришёл не из головы
И вот ради чего вся возня. Когда дашборд ожил и я начал крутить разбивку по каналам, цифры показали то, чего я бы сам себе не придумал. Те, кто пришёл по рефералке от друга, ведут себя совсем не так, как холодный органический трафик. До первого расклада из реферальных доходят 87.5%, из органики — 64.5%. До оплаты из реферальных доходят 4.2%, из органики — 1.9%. То есть человек, которого привёл друг, конвертится примерно вдвое лучше на каждом шаге. И это вполне логично, если подумать: друг уже рассказал, что это и зачем, человек приходит прогретый, а не с улицы тыкать незнакомую штуку.
Но дело даже не в том, что инсайт логичный. Дело в том, что я бы его так и не использовал, останься он у меня в голове на уровне «ну наверное рефералы получше». Одно дело догадка, и совсем другое — конкретные 87.5 против 64.5 на экране. Потому что теперь это не ощущение, а основание для решения: вместо того чтобы тупо доливать бюджет в холодный платный трафик, разумнее вкладываться в то, чтобы существующие пользователи звали друзей, ведь этот канал у меня по факту вдвое эффективнее, а я его недокручиваю.
Что я с этого вынес
Главный вывод банальный до зевоты, но я его теперь пощупал руками, а не вычитал в умной книжке. Аналитика — это не та штука, которую делают «когда будет время» или «когда пойдёт трафик». Её делают до трафика, иначе вы потратите деньги вслепую и даже не поймёте, куда они утекли. У меня вся эта аналитика встала за один день поверх данных, которые и так лежали без дела, а отдача — сразу два главных решения: не нести деньги в неотслеживаемый канал, пока не разделил источники, и переключить фокус на реферальный канал, который вдвое сильнее.
И ещё одно, чисто человеческое. Самое опасное в одиночной разработке — это когда ты строишь продукт по своей чуйке и сам же в неё веришь, потому что спорить с тобой особо некому. Чуйка говорила «лей трафик», а данные сказали «у тебя дырявое ведро и недооценённый реферальный канал». Кстати, если бы я полез искать сторонние инструменты под такую задачу, нашёл бы тонну советов про дорогие сервисы аналитики, а оказалось, что половина уже была у меня под носом — в виде собственных событий, которые продукт писал в логи без всякой пользы. У меня, к слову, на таком же подходе построена и вся контент-система из рабочих логов — то, что и так уже пишется, превращается в дело. Так что прежде чем платить за чужое, посмотрите, что у вас уже копится в логах. Вот и делайте выводы.