// КЕЙС · Услуги для бизнеса · 6 недель
Собственный проект — nikitaberdnikov.ru
Что получилось
0 ₽/мес—за сквозную аналитику вместо подписки на сервис
Стек проекта · 5 инструментов

Автор кейса
Официальный партнёр amoCRM, Roistat, SIPUNI и Wazzup24 · настраиваю CRM и сквозную аналитику лично
Результаты в цифрах
- стоимость владения против подписки на готовый сервис
- 0 ₽/месстоимость владения против подписки на готовый сервис
- данных остаётся в РФ, на своём сервере
- 100%данных остаётся в РФ, на своём сервере
- заявка, калькулятор и диагностика доезжают до одного отчёта
- 3 формызаявка, калькулятор и диагностика доезжают до одного отчёта
- максимальное время до сигнала, если приём заявок сломается
- 1 часмаксимальное время до сигнала, если приём заявок сломается
Зачем это себе
Я продаю сквозную аналитику, поэтому имеет смысл держать её у себя — и не в виде подписки на чужой сервис, а собранной руками. Так я вижу, что реально ломается в такой системе, а не пересказываю документацию вендора.
Второй мотив прикладной. Готовые сервисы берут помесячную плату, которая растёт вместе с трафиком, и держат данные у себя. Для клиентских проектов это часто нормально, но иногда упирается либо в бюджет, либо в требование хранить всё на своём сервере в РФ. Мне нужен был работающий пример второго варианта, чтобы предлагать его осознанно.
Что получилось
Визит, заявка и сделка лежат в одной модели данных. Видно, по какому каналу пришёл человек, сколько времени прошло до обращения и чем закончилась сделка в amoCRM. Три разные формы — заявка, калькулятор и диагностика — пишутся одинаково и попадают в один отчёт, поэтому источники сравнимы между собой.
Персональные данные остаются в PostgreSQL на сервере в РФ. В аналитику уходит хеш телефона и идентификатор визита: этого хватает, чтобы связать рекламу с выручкой, и недостаточно, чтобы кого-то опознать. Такое разделение я потом переношу в клиентские проекты, где есть требования по хранению.
Чему это научило
Самое полезное открытие оказалось не про аналитику. Приём заявок на сайте однажды сломался и молча отдавал ошибку одиннадцать дней: в коллекцию добавили поле, а колонку в боевой базе никто не создал. Сборка была зелёной, тесты проходили, проверка доступности сайта показывала, что главная открывается. Заявки при этом терялись.
После этого я поставил себе две вещи, которые теперь ставлю и клиентам: канарейку, которая раз в час проверяет реальную запись заявки в боевую базу, и гейт на выкате, который останавливает деплой при расхождении схемы. Мониторинг доступности сайта такие поломки не ловит — падает не сайт, а одна операция внутри него.
Как шёл проект
- 01
Неделя 1
Свой счётчик визитов
Поднял ClickHouse рядом с сайтом и написал сбор визитов без сторонних скриптов: идентификатор посетителя в куке, источник перехода, UTM-метки. Никаких зарубежных сервисов в цепочке — это же требование я предъявляю клиентским проектам по 152-ФЗ.
- 02
Недели 2–3
Связка визита со сделкой
Заявка с сайта записывается сразу в три места: PostgreSQL как источник правды по персональным данным, amoCRM для работы отдела продаж и ClickHouse для аналитики. В аналитику уезжает не сам контакт, а его хеш и идентификатор визита, поэтому связать сделку с рекламой можно, а персональных данных в отчётах нет.
- 03
Недели 4–5
Возврат конверсий и ClientID
К каждой заявке прикладываю ClientID Метрики. Это закрывает петлю: рекламная система узнаёт не про факт заявки, а про то, что визит дошёл до сделки. Без такого возврата автостратегии учатся на промежуточном действии и оптимизируют не то.
- 04
Неделя 6
Контроль, что всё это живо
Канарейка раз в час пишет служебную заявку в боевую базу и тут же удаляет её. Если приём заявок сломается, я узнаю за час. Проверка расхождения схемы останавливает выкат, когда в коде появилось поле, а колонки на проде нет.
Обсудить похожий проект?
Посмотрю вашу ситуацию и подскажу следующий шаг. Отвечу лично в течение рабочего дня.