Клиентка пишет в директ: «Напомните, когда я записана и на что?» Администратор открывает CRM, ищет карточку, переписывает дату и услугу в мессенджер. Через неделю тот же вопрос задаёт другая. Кабинет клиента убирает этот обмен: одна ссылка, по которой человек сам видит свои записи — и ближайшие, и все прошлые.
Где это в CRM
- Выдача ссылки: «Клиенты → клиент», кнопка «Ссылка кабинета» в шапке карточки, рядом с «Редактировать». Подсказка на кнопке: «Скопировать личную ссылку клиента на историю и предстоящие визиты».
- Что открывает клиент: страницу «Мой кабинет» — отдельную публичную страницу, не кабинет сотрудника.
Как выдаётся ссылка
Нажатие на кнопку делает две вещи: сервер выдаёт токен кабинета этого клиента, а браузер собирает из него адрес и кладёт его в буфер обмена. Появляется сообщение «Ссылка кабинета скопирована» — дальше вы вставляете адрес туда, куда вам удобно: в мессенджер, в SMS, в письмо.
Токен выдаётся лениво: если его ещё не было, он создаётся при первом нажатии и сохраняется в карточке; при следующих нажатиях возвращается тот же самый. То есть ссылка у клиента одна и навсегда, и повторное нажатие не делает старую недействительной.
Рассылки ссылки нет. Нигде в напоминаниях или письмах кабинет не упоминается — адрес передаёт салон, осознанно и конкретному человеку. Это та же логика, что и у согласий и запросов на отзыв.
Что видит клиент
Страница помещается в один экран телефона и состоит из трёх частей.
Вверху — название салона, приветствие по имени и телефон салона, кликабельный: с телефона по нему сразу звонится.
Дальше «Предстоящие визиты»: дата с днём недели, время начала, услуга, мастер, статус и цена. У каждого ближайшего визита есть ссылка «Управлять записью» — она ведёт на страницу самой записи, где можно перенести или отменить. Управление записью живёт не в кабинете, а там, и работает по собственному токену этой записи: кабинет только указывает на неё.
Ниже «История визитов» — то же самое, но без кнопки управления. В предстоящие попадает запись, время которой ещё не наступило и статус которой не закрыт; отменённые, неявки и завершённые уходят в историю независимо от даты. Отдаются последние двести записей клиента — для салонной практики это вся история, но формально предел есть.
Чего в кабинете нет: абонементов, сертификатов, баланса депозита, фото до и после, формул окрашивания, чатов. Всё это остаётся внутри CRM. Нет и телефона с почтой самого клиента — страница не показывает человеку его же контакты, чтобы ссылка, попавшая не в те руки, не отдавала заодно и персональные данные.
Почему это отдельный домен
Страницы, которые открывает клиент салона — страница записи, отзыв, согласие, кабинет, — собираются в отдельное приложение и живут на собственном домене. Причина не в порядке, а в безопасности: общий домен с кабинетом сотрудника означал бы общее хранилище браузера с токенами доступа.
Кабинет расположен корнево — /client/<токен> — без префикса /book, который есть у страницы записи. Адрес собирает одно место во фронте и одно на бэкенде, по одинаковому правилу: пока отдельный домен не поднят, ссылка ведёт на домен CRM и работает так же.
Публичный запрос по токену не требует авторизации вообще и ограничен тридцатью запросами в минуту с адреса — та же защита, что и на других публичных страницах.
Безопасность ссылки
Токен — это и есть ключ. Он случайный, длиной 48 символов, и хранится в карточке клиента с уникальным индексом. Подобрать его перебором не выйдет, а вот переслать — легко, поэтому относиться к нему нужно как к личной ссылке, а не как к публичному адресу.
Ссылка не имеет срока действия, поэтому единственный способ отозвать то, что ушло не туда, — перевыпустить её: рядом со «Ссылкой кабинета» есть кнопка перевыпуска с подтверждением. Старая ссылка перестаёт работать в тот же момент, новая сразу копируется в буфер обмена — остаётся переслать её клиенту.
Объединение карточек учли отдельно: если ссылка ушла клиенту до того, как его дубликат объединили с основной карточкой, по старому токену откроется история основной. Иначе человек увидел бы пустой кабинет именно тогда, когда вы навели порядок в базе.
Если токен не найден, страница говорит «Кабинет не найден или ссылка недействительна» — и ничего больше: по ответу нельзя узнать, существует ли такой клиент.
Что стоит делать
Отправляйте ссылку в личную переписку, а не в общий чат. Постоянным клиентам её достаточно отправить один раз — она не меняется, и человек может сохранить её в закладках. И не используйте кабинет как замену напоминанию: он отвечает на вопрос «когда я записана», когда клиент сам об этом вспомнил, а напоминание приходит тогда, когда не вспомнил.
Комментарии
Комментариев пока нет. Задайте вопрос — отвечаем в течение суток.