Никита.Бердников

// КЕЙС · Услуги для бизнеса · 6 недель

Собственный проект — nikitaberdnikov.ru

Что получилось

0 ₽/месза сквозную аналитику вместо подписки на сервис

Стек проекта · 5 инструментов

ClickHouseamoCRMNext.jsЯндекс.МетрикаPostgreSQL
Никита Бердников

Автор кейса

Никита Бердников

Официальный партнёр amoCRM, Roistat, SIPUNI и Wazzup24 · настраиваю CRM и сквозную аналитику лично

Результаты в цифрах

стоимость владения против подписки на готовый сервис
0 ₽/месстоимость владения против подписки на готовый сервис
данных остаётся в РФ, на своём сервере
100%данных остаётся в РФ, на своём сервере
заявка, калькулятор и диагностика доезжают до одного отчёта
3 формызаявка, калькулятор и диагностика доезжают до одного отчёта
максимальное время до сигнала, если приём заявок сломается
1 часмаксимальное время до сигнала, если приём заявок сломается

Зачем это себе

Я продаю сквозную аналитику, поэтому имеет смысл держать её у себя — и не в виде подписки на чужой сервис, а собранной руками. Так я вижу, что реально ломается в такой системе, а не пересказываю документацию вендора.

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

Что получилось

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

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

Чему это научило

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

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

Как шёл проект

  1. 01

    Неделя 1

    Свой счётчик визитов

    Поднял ClickHouse рядом с сайтом и написал сбор визитов без сторонних скриптов: идентификатор посетителя в куке, источник перехода, UTM-метки. Никаких зарубежных сервисов в цепочке — это же требование я предъявляю клиентским проектам по 152-ФЗ.

  2. 02

    Недели 2–3

    Связка визита со сделкой

    Заявка с сайта записывается сразу в три места: PostgreSQL как источник правды по персональным данным, amoCRM для работы отдела продаж и ClickHouse для аналитики. В аналитику уезжает не сам контакт, а его хеш и идентификатор визита, поэтому связать сделку с рекламой можно, а персональных данных в отчётах нет.

  3. 03

    Недели 4–5

    Возврат конверсий и ClientID

    К каждой заявке прикладываю ClientID Метрики. Это закрывает петлю: рекламная система узнаёт не про факт заявки, а про то, что визит дошёл до сделки. Без такого возврата автостратегии учатся на промежуточном действии и оптимизируют не то.

  4. 04

    Неделя 6

    Контроль, что всё это живо

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

Обсудить похожий проект?

Посмотрю вашу ситуацию и подскажу следующий шаг. Отвечу лично в течение рабочего дня.

Отвечаю сам в течение 2 часов в рабочее время. Без спама и обзвонов.