Личный кабинет клиента и бонусная программа для сети салонов красоты
Запись в сети салонов шла через звонки и переписку администратора, а программа лояльности существовала в виде бумажных карт и записей в тетради. Мы сделали личный кабинет клиента с записью онлайн, историей визитов, оплатой и бонусным счётом, добавили Telegram-бот, через который можно записаться и посмотреть баланс, а бонусы перевели в систему: они начисляются за визиты и за приведённых друзей и списываются при оплате.
- Период
- 2026
Имя заказчика не раскрывается. Отрасль, масштаб и цифры остаются те же.
Что изменилось
- Звонок → сам
- Как клиент записывается на услугудо проекта запись принимал администратор по телефону и в переписке; после клиент выбирает салон, мастера, услугу и время сам, в кабинете или в Telegram-боте, без участия сотрудника
- Тетрадь → счёт
- Где живут бонусы клиентадо проекта начисления вели на бумажных картах и в записях администратора; после у клиента бонусный счёт, который он видит сам и который считает система
- 2
- Основания для начисления бонусоввизит клиента и приведённый им друг: реферальное начисление привязано к первому визиту приглашённого, а не к самому факту приглашения
- Все точки
- Единый счёт на всю сетьбонусы, история визитов и запись общие для всех салонов сети: клиент, накопивший в одном салоне, тратит в любом
У каждой величины указано, с чем сравнивали и за какой период.
Что было не так
Запись в салоны шла через администратора. Клиент звонил или писал, администратор смотрел свободное время у нужного мастера, называл варианты, записывал. На каждую запись уходил разговор, а вечером и в выходные, когда клиенту как раз удобно записываться, звонок часто оставался без ответа.
Программа лояльности существовала, но жила на бумаге. Карты клиентов, отметки о визитах, начисления, записанные от руки. Это работает, пока салон один и администратор помнит постоянных клиентов в лицо. В сети из нескольких точек это разваливается: карту клиент забыл дома, в другом салоне его не знают, а сколько у него накоплено, не знает никто, включая его самого.
Из этого следовало главное: бонусы не работали как бонусы. Смысл программы лояльности в том, что клиент знает про накопленное и возвращается ради него. Если баланс нельзя посмотреть, он не влияет на решение прийти снова.
История визитов тоже была знанием администратора, а не клиента. Каким цветом красили в прошлый раз, у какого мастера, сколько это стоило, всё это выяснялось заново при каждом обращении.
Смысл программы лояльности в том, что клиент знает про накопленное. Если баланс нельзя посмотреть, он не влияет на решение прийти снова.
Что мы построили
Личный кабинет клиента, в котором собрано всё, что раньше было разбросано между администратором, бумажной картой и памятью. Клиент заходит и видит свою историю визитов, баланс бонусов и свободное время мастеров.
Запись клиент оформляет сам: выбирает салон сети, услугу, мастера и время. Это снимает с администратора разговор, а с клиента ожидание ответа: записаться можно в одиннадцать вечера, когда до салона всё равно не дозвониться.
Оплата и предоплата встроены в тот же сценарий. Клиент платит за услугу или вносит предоплату за бронь картой, не отдельным переводом и не на месте.
Уведомления закрывают обратную сторону: клиент получает напоминание о записи и сообщение о начислении бонусов в Telegram. Напоминание здесь не маркетинг, а способ сократить неявки, из-за которых у мастера простаивает час, отведённый конкретному человеку.
Записаться можно в одиннадцать вечера, когда до салона всё равно не дозвониться.
Telegram-бот: запись там, где клиент уже есть
Кроме кабинета на сайте мы сделали Telegram-бот, и через него доступно то же самое: запись на услугу, свой баланс бонусов и ближайшие визиты. Это не урезанная версия кабинета для галочки, а второй вход в ту же систему.
Причина в том, где клиент находится в момент, когда решает записаться. Сайт нужно вспомнить, открыть и войти. Telegram уже открыт: в нём пришло напоминание о прошлом визите, и ответить на него записью на следующий это одно касание, а не переход в отдельное приложение.
Бот и кабинет работают с одними данными, а не с двумя копиями. Запись, сделанная в боте, видна в кабинете, бонус, начисленный за визит, виден в обоих местах. Это звучит очевидно, но именно здесь обычно и ломается: бот, прикрученный отдельным сервисом со своей базой, начинает показывать не тот баланс, и клиент перестаёт верить обоим.
Уведомления идут туда же, в Telegram: напоминание о записи и сообщение о начислении бонусов приходят в тот же чат, из которого можно записаться снова.
Сайт нужно вспомнить и открыть. Telegram уже открыт, и запись на следующий визит становится ответом на напоминание о прошлом.
Как устроены бонусы и почему за друга платят не сразу
Бонусы начисляются по двум основаниям. Первое обычное: клиент пришёл, оплатил услугу, на счёт упало начисление. Второе реферальное: клиент приводит друга и получает бонусы за него.
Реферальное начисление устроено не так, как его чаще всего делают. Бонусы приходят не за приглашение, а за первый состоявшийся визит приглашённого. Разница принципиальная. Начисление за сам факт приглашения превращает программу в игру с системой: приглашения рассылаются веером, счета набивают бонусами, а клиентов в салоне не прибавляется. Привязка к состоявшемуся визиту означает, что бонусы появляются тогда же, когда появляется выручка, из которой они оплачены.
Списание идёт при оплате услуги: бонусы уменьшают сумму к оплате, и клиент видит это до подтверждения, а не узнаёт постфактум. Правила начисления и списания вынесены в настройки: проценты, пороги и условия меняет сеть у себя, а не разработчик по заявке. Условия программы лояльности меняются чаще, чем код, и не должны требовать релиза.
Счёт общий на всю сеть. Клиент, накопивший в салоне у дома, тратит в салоне у работы: с точки зрения программы это один клиент, а не карточка конкретной точки.
Бонусы за друга приходят не за приглашение, а за его первый состоявшийся визит: тогда же, когда появляется выручка, из которой они оплачены.
Почему запись и бонусы живут в своей базе
На рынке есть отраслевые системы записи, и вопрос, брать готовую или делать своё, задавался в начале проекта. Выбрали своё, и вот в чём причина.
Бонусная программа это правила, по которым сеть удерживает клиентов, и они принадлежат сети. В готовой системе бонусы работают так, как их задумал её разработчик, и отличаются от задуманного ровно настолько, насколько позволяют настройки. Реферальное начисление, привязанное к первому визиту приглашённого, это уже не настройка, а другая логика.
Второе: клиентская база. История визитов, контакты, предпочтения и накопления это то, ради чего сеть работает годами. В собственной системе она принадлежит сети, и вопрос переезда или изменения тарифов чужого сервиса её не касается.
Третье: кабинет, оплата, уведомления и бонусы это один сценарий, а не четыре сервиса, склеенные между собой. Клиент выбирает время, видит списание бонусов, платит и получает напоминание внутри одного потока, где каждый шаг знает про предыдущий.
История визитов и накопления это то, ради чего сеть работает годами. В своей системе она принадлежит сети.
Что это дало
Запись перестала упираться в рабочий день администратора. Клиент оформляет её сам и тогда, когда ему удобно, а сотрудник занимается теми, кто уже в салоне.
Бонусы стали видимыми, а значит начали работать. Клиент знает, сколько у него накоплено и что он может этим оплатить, и это знание влияет на решение вернуться, ровно то, ради чего программу лояльности заводят.
Сеть перестала быть набором отдельных точек с точки зрения клиента: один счёт, одна история, любой салон.
И клиентская база собралась в одном месте и в собственности сети: кто ходит, как часто, к каким мастерам и на какие суммы. Раньше этот ответ складывался из тетрадей нескольких администраторов, а чаще не складывался вообще.
На чём построено
Технологии проекта взяты из общего реестра компании: у каждой описана роль и класс задач, где мы её применяли.
Интерфейс
- TypeScriptОсновной язык интерфейса
- ReactБиблиотека интерфейсов
- Next.jsКаркас приложения и рендер на сервере
Серверная часть
- Node.jsОсновная серверная среда
- FastifyБыстрый веб-сервер на Node.js
Данные
- PostgreSQLОсновная база данных
- RedisКеш, сессии и очереди
Интеграции
- ЮKassa, CloudPayments, РобокассаПриём платежей на сайте
- Telegram Bot APIБоты и мини-приложения
Инфраструктура
- DockerУпаковка сервисов в контейнеры
- NginxБалансировка, маршруты, HTTPS
- LinuxСерверная операционная система
Что применяли в проекте
Каждая услуга это отдельный раздел с составом работ и ориентиром по стоимости.
- Веб-приложенияСистема, в которой работает компания: учёт, заявки, документы, права доступа.
- Telegram-ботыРабочий инструмент в мессенджере, которым люди пользуются без обучения.
- FrontendИнтерфейсы, в которых работают каждый день и не устают к вечеру.
- ИнтеграцииСвязываем системы, которые сейчас не разговаривают друг с другом.
У вас похожая задача?
Первый разговор ни к чему не обязывает: разберём вашу ситуацию и скажем, нужен ли вам такой проект вообще.
Другие проекты
- Торговый бот для биржи Bybit и мониторинг P2P в TelegramСделка открывается из Telegram или по заданным правилам, состояние позиций и P2P-рынок команда видит в одном месте
- ИИ-обработка входящих заявок: ответы клиентам в Telegram, почте и на сайтеСистема собирает обращения из трёх каналов, отвечает на них сама по материалам заказчика и передаёт человеку то, что должен решать человек
- Единый канал заявок: Telegram-бот, форма сайта и переписка с клиентом в Битрикс24Заявки из бота и с сайта попадают в воронку Битрикс24 сами, а менеджер отвечает клиенту в Telegram прямо из карточки сделки