Сайты на Tilda
Разработка сайта
Разработка дизайна
Проектирование
Тех. поддержка (на тильде)
Редизайн сайта
Как самостоятельно создать многостраничный сайт на Тильде?
Назад

Как собрать единый хаб на 800 000 клиентов за 1,5 месяца и сэкономить 3 000 000 ₽ за год

/
/
Кейс «Художник Онлайн»
Следите за внутренней кухней студии в нашем телеграм-канале
Какая полная инструкция по созданию многостраничного сайта на Тильде?
Читайте, как мы помогли онлайн-школе слезть с костылей и получить обновленную базу клиентов без переплат, хаоса и устаревших решений
У Художник Online есть база из ≈800 000 клиентов. Данные собираются из Tilda, GetCourse и рассылок. За 1,5 месяца мы создали для них единый хаб клиентов на популярном стеке и перенесли все данные в довольно шуструю базу. За счет этого наш клиент экономит как минимум 600 000 ₽ в год, а как максимум — 3 000 000 ₽.

Клиент

Художник Online — одна из крупнейших онлайн-школ рисования на русском языке. В арсенале — сотни обучающих продуктов по живописи, скетчингу, академическому рисунку, мастер-классы и марафоны. С момента запуска в 2016 году в школе отучились более 800 000 человек. Мы уже сотрудничали с командой Художник Online: разрабатывали для них сайт.

Контекст

Однажды ребята поделились, что у них есть свой сервис с базой клиентов, и его давно пора обновить под новые реалии. Стек, на котором он был собран, немного устарел. Сейчас на Yii PHP Framework разрабатывают не так много вещей, и чем дальше, тем тяжелее найти разработчиков, которые бы поддерживали сервис в бодром состоянии. К тому же новые функции приходилось прикручивать через костыли. А хотелось, чтобы все работало быстро и правки не длились неделями — все-таки в 21 веке живем.

Мы в NAJES предложили решение: разработать более шустрый сервис на современном стеке. Клиент согласился и ушел делать ТЗ.

Задача

  • Создать единый хаб клиентов на современном стеке, который легко поддерживать.
  • Реализовать интерфейс, через который ясно и быстро можно увидеть жизнь каждого клиента, от заявки до текущего момента (с какой рекламы приходил, что покупал, сколько денег принес).
  • Безболезненно перенести данные со старого сервиса на новый.
  • Настроить интеграцию с Tilda, GetCourse и Dashamail.
  • Уложиться в ограниченный бюджет и сроки.

Дополнительно клиент запросил внедрить в базу новую сущность «‎Продажа», чтобы по 13+ параметрам отслеживать, что именно приводит к покупке. Эту задачу мы реализовали в ином виде, об этом расскажем ниже.

Что было «до»

На момент обращения к нам у школы была своя внутренняя база на старом PHP-движке. Из-за большого объема данных и многочисленных костылей сервис был неповоротливым. Любые правки стоили дорого и тянулись неделями (найти нормального PHP-специалиста сейчас тяжело). Информация о клиентах поступала из разных источников: Tilda, GetCourse, Dashamail.
Интерфейс старого сервиса на PHP
В целом клиенту удобно было вести базу в GetCourse, но хранить там информацию обо всех 800 000 пользователях — для него довольно дорого и не оправдано стратегически.

Используя тариф VIP, клиент платит 108 800 ₽ в месяц за хранение данных 200 000 пользователей. Самый дорогой тариф (S400) стоит 145 000 ₽ в месяц и вмещает 400 000 пользователей. Но это только половина из всех клиентов, которые есть у Художник Online. Дальше — индивидуальные тарифы, которые больно бьют по бюджету бизнеса.

Поэтому, чтобы уложиться в лимит 200 000 пользователей, клиент регулярно чистит базу в GetCourse. А полные данные об этих и оставшихся клиентах хранятся в его собственной базе на PHP, которую нам и предстояло обновить. 

1. Погружение и теханализ

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

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

2. Планирование переноса и подготовка данных

  • Спроектировали целевые таблицы: emails / forms / orders + справочники (источники, кампании, типы/форматы продуктов).
  • Сопоставили старые поля с новыми и добавили недостающие по просьбе клиента (UTM-метки, YandexID и пр.).
  • Определили правила по умолчанию для пустых/частично заполненных полей (например, источник = «unknown», если UTM не пришли).
  • Сделали бэкап всей базы со старого сервиса, переформатировали данные под PostgreSQL, затем скриптами адаптировали данные к новой структуре БД.
  • Оптимизировали БД и получили около 300 МБ вместо 2 ГБ.

3. Разработка на новом стеке и перенос данных

Мы выбрали стек, который позволяет быстро запускать продукт, легко поддерживать его в будущем и не зависеть от дорогих подписок на готовые CRM.

В основе — Next. js, современный фреймворк на базе React. Он выполняет роль как фронтенда, так и бэкенда (API-слой, авторизация, интеграции). Такой подход позволил объединить логику приложения и интерфейс в одном репозитории, ускорив разработку и уменьшив расходы на инфраструктуру. Данные хранятся в PostgreSQL (быстрая и надежная СУБД).

Панель администрирования собрали на Ant Design Pro — коробочном решении с готовым интерфейсом, который мы адаптировали под нужды клиента. Это помогло сохранить время и бюджет на дизайн интерфейса и разработку. Стилизацию сервиса докрутили с помощью Tailwind.

  • Настроили структуру базы на Ant Design Pro под бизнес клиента.
  • Добавили правила маршрутизации данных, чтобы система автоматически направляла заявки туда, куда надо.
  • Подключили интеграции с Tilda, GetCourse и Dashamail через вебхуки.
  • Сделали удобную карточку клиента — на одном экране видно всю историю: от формы регистрации до заказа.
  • Обеспечили надежную и безопасную работу с данными: без дублей, с логами, с автоматической склейкой по email.
  • Базу загрузили на облачный сервер, все данные хранятся на территории РФ, в соответствии с законодательством.

У сервиса сейчас довольно простой интерфейс и 8 разделов.

1. Формы. Здесь отображаются заявки/регистрации, поступившие с Tilda и других форм. Можно фильтровать по дате, типу регистрации, контактному типу и источнику. Клиент заходит сюда довольно часто, чтобы отслеживать новые регистрации в режиме реального времени.
Раздел «‎Формы», котором можно отслеживать новые регистрации
2. База клиентов. Здесь хранятся карточки всех 800 000 клиентов, начиная с 2016 года. Напомним, что изначально клиент хотел внедрить в базу сущность «Продажа» (чтобы отслеживать все доступные параметры и понимать, что привело к покупке).

После анализа реальной работы БД мы предложили клиенту не выделять «Продажи» в отдельный раздел, а вставить нужную ему информацию прямо в карточку клиента.

Теперь общая выручка по клиенту, количество покупок, даты первой/последней покупки, список продуктов и источник входа — все в одном месте. Оплаты и заказы из GetCourse прикрепляются к тому же профилю, поэтому можно смотреть, какие клиенты и какие активности приводят к покупкам, и все это без реализации дополнительных сущностей.
Какое практическое пособие по созданию качественного дизайна на Тильде?
Так выглядит карточка клиента
  • Вся история покупок теперь в одном месте, не завязанная только на GetCourse.
  • Можно быстро просмотреть путь пользователя: когда пришел, через какую форму зарегистрировался, что и когда купил.
  • Появилась база для аналитики — анализ LTV, сегментация по продуктам, повторные продажи.
И главное — все это работает автоматически, без ручного импорта или двойного ввода.

3. Правила. Правила настраиваются по принципу «‎если → то». Например, «‎если пришла форма с этим направлением, то отправь в этот рассылочный список», а еще «‎поставь тег» и «‎перенаправь в группу GC».

Это раздел, который расширяет полномочия базы данных. Благодаря ему эта БД работает как полноценный инструмент централизованного управления сразу всеми данными, которые хранятся в 3 источниках.
Раздел «‎Правила» дополнительно экономит клиенту до 200 000 ₽ в месяц

Правила управляют передачей данных по вебхукам. Сторонние сервисы для этих целей, по словам клиента, обошлись бы ему в 150 000 — 200 000 ₽ в месяц. Сейчас же он может настроить их внутри своего сервиса вручную и без программиста, бесплатно. Правила применяются автоматически и сразу работают в связке со всеми интеграциями.
Раздел «‎Правила» дополнительно экономит клиенту до 200 000 ₽ в месяц

Правила управляют передачей данных по вебхукам. Сторонние сервисы для этих целей, по словам клиента, обошлись бы ему в 150 000 — 200 000 ₽ в месяц. Сейчас же он может настроить их внутри своего сервиса вручную и без программиста, бесплатно. Правила применяются автоматически и сразу работают в связке со всеми интеграциями.
4. Заказы. Это хранилище всех покупок и транзакций, которые приходят из GetCourse по обратной интеграции. Можно смотреть, какие клиенты совершили покупку, когда и по какому продукту.

5. Продуктовый каталог. Раздел, где перечислены все продукты, которые можно продавать: курсы, мастер-классы, марафоны. Каждая покупка из раздела «Заказы» привязывается к конкретному продукту из каталога. Благодаря этому можно:
  • строить аналитику (какие продукты покупают чаще, что работает лучше в воронке);
  • группировать заказы по направлениям (например, живопись, скетчинг, курсы для детей и т. д.);
  • настраивать фильтры и отчеты.
Так выглядит продуктовый каталог внутри базы
Здесь мы добавили фишку, которой не было в старом сервисе клиента: теперь можно выгрузить данные в Excel, отредактировать и загрузить обратно. Например, чтобы массово обновить контактные данные, удалить дубли, изменить статусы заказов, поправить категории продуктов. По сути, это способ взять базу в руки, покрутить, почистить и вернуть обратно, без риска что-то поломать в интерфейсе и без привлечения разработчиков.

6. Пользователи. Это управление системными аккаунтами: кто может войти в систему, роли, настройки доступа.

7. Справочники. Здесь хранятся контрольные списки: источники трафика, кампании, форматы продуктов, типы регистраций. Это важно для чистоты данных и правильного анализа, чтобы все метки и категории были в одном месте, а не разбросаны.

8. Система. Чисто технический раздел с логами.

Как работает новая база данных на практике

Когда пользователь нажимает «Записаться на курс», система получает данные через вебхуки, автоматически определяет или создает профиль клиента, фиксирует UTM-метки и связывает заявку с рекламной кампанией. Заявки с Tilda попадают в таблицу записей на курсы, а покупки с GetCourse — в таблицу заказов с деталями оплаты. Вся история действий сохраняется в карточке пользователя, и менеджеры всегда могут видеть полную картину взаимодействия клиента с сервисом.

Сейчас клиент использует базу под три основные задачи.
  1. Управление интеграциями и маршрутизацией данных. Связка Tilda ↔ GetCourse ↔ email-рассылки и другие сервисы через вебхуки и заведение новых правил обработки (куда и что отправлять).
  2. Ведение единой базы клиентов и бэкап. Получение из GetCourse всех событий (создание пользователей, заказы) и ведение полной базы клиентов у себя, без зависимости от внешних сервисов.
  3. Аналитика. На основе продуктового каталога и заказов — анализ продуктовой матрицы, LTV и карточек клиентов (сколько покупок, как часто и т. д.).
Раздела «‎Аналитика» в сервисе еще нет, но клиент настроен прийти к этому в будущем. Сейчас нужные данные можно выгрузить и посчитать вручную.

Обычно клиент проводит глубокий анализ раз в полгода или год, под важные задачи: смену тарифов, продуктовую стратегию, пересмотр сегментов. Все данные он берет именно из этой БД, ведь только в ней собраны все доступные данные о клиентах.
Своя БД = экономия на отчетах

Преимущество своей базы в том, что тут нет жестких шаблонов, как в типовых CRM: не нужно подстраиваться под чужую логику или платить за каждый кастомный отчет. Можно вытащить любую комбинацию параметров и отфильтровать данные так, как нужно именно вам, а не так, как разрешает CRM.
Сейчас, учитывая динамику новых регистраций в GetCourse, клиент (по его словам) экономит около 50 000 ₽ в месяц за счет того, что не хранит все данные там, а перегоняет их в свою базу. В год это 50 000×12 = 600 000 ₽. Если учесть собственную реализацию передачи данных по вебхукам — это экономия еще около 200 000 ₽ в месяц, или 2 400 000 ₽ в год.
Получается, что суммарно клиент экономит 3 000 000 ₽ в год, просто единожды инвестировав в разработку своего сервиса, который уже окупился.
Команда продолжает пользоваться сервисом и уже планирует следующий этап — масштабирование и внедрение встроенной аналитики. Это подтверждает: решение оказалось не только выгодным, но и перспективным с точки зрения развития бизнеса.

Советы тем, кто ведет объемную базу клиентов

  • Не подгоняйте бизнес под инструмент и не миритесь с костылями. Стройте систему под реальные потребности, а не под ограничения готовой платформы. Если инструмент мешает — значит, пора перейти на новый или создавать свой.
  • Думайте стратегически, а не из позиции здесь и сейчас. Если есть ресурсы — инвестируйте их в независимость. На дистанции правильное решение окупится, даже если кажется, что уже поздно менять систему.
  • Развивайтесь поэтапно. Не обязательно сразу делать сложный продукт. Можно запустить MVP, а потом постепенно добавлять аналитику, отчеты и расширения.
Как это сделано: читайте о жизни веб-студии в NAJES китchен

Перейти в телеграм
Никита Алексеев
Руководитель направления маркетинга студии NAJES
Автор статьи: