«Марина, а сколько у меня осталось?» — «Сейчас посмотрю… кажется, три».
Кажется — это минус деньги. Один лишний визит в неделю по пакету «10 визитов за 12 000 ₽» стоит вам 1 200 ₽. В месяц — почти пять тысяч. За год — шестьдесят тысяч рублей, которые вы подарили, и вы никогда об этом не узнаете: в тетради всё сходится.
Абонементы в CraftYourCRM закрывают именно эту дыру. Не «учёт пакетов» — отказ в тот момент, когда администратор пробивает одиннадцатый визит.
Что меняется в цифрах
| Тетрадь или таблица | CraftYourCRM | |
|---|---|---|
| Остаток визитов | помнит администратор | считает система, видно в карточке и клиенту |
| Одиннадцатый визит | пройдёт незамеченным | отказ на кассе с объяснением |
| Истёкший срок | вспомнят в конце месяца | абонемент сам становится «истёк» |
| Продление | набирают заново, как первую продажу | одна кнопка «Продлить»: условия те же, даты — встык |
| Условия пакета | набирают руками при каждой продаже | берутся из прайса типов, скидка — осознанное действие |
| Оплата пакета | «принесите наличными» | ссылка на оплату картой, пакет включается сам |
| Смена администратора | «а как вы тут считали?» | правило одно и видно всем |
Как это выглядит на кассе
Абонемент №118 · Иван Петров · «10 визитов»
┌──────────────────────────────────────────────┐
│ Осталось: 1 из 10 Действует до 31.08 │
│ ● действует │
│ [ Отметить посещение ] │
└──────────────────────────────────────────────┘
…через визит:
│ Осталось: 0 из 10 │
│ ● использован │
│ ⚠ Визиты закончились — продайте новый пакет │
Плашка, кнопка и строка в списке читают одно и то же правило: «действует · заморожен · истёк · использован». Разойтись они не могут — это одно место в системе, а не три экрана, которые кто-то забыл синхронизировать.
У пакета можно назвать услугу. Поле «Услуга» в карточке абонемента отвечает на вопрос «за что он выдан»: «Групповая тренировка», «Персональная», «Массаж». Заполнили — визит по этой услуге спишется именно с него, а на чужую услугу пакет не потратится. Это важно, когда у человека их несколько: безлимит на групповые и десять персональных к конкретному тренеру больше не перепутаются. Оставили пустым — пакет универсальный и годится подо всё, ровно как раньше. Справочник услуг приезжает вместе с модулем онлайн-записи — без него поле просто остаётся пустым.
Почему мы отказываем, а не «предупреждаем»
Здесь мы сознательно строже, чем в собственном складе. На складе движение в минус проходит: если товар физически выдали, запрещать факт задним числом бессмысленно.
С абонементом наоборот. Одиннадцатый визит по десятивизитному пакету — не факт, а ошибка кассы, и стоит она деньги владельцу. Поэтому отказ приходит сразу, с человеческим объяснением, а не всплывает в сверке через месяц, когда доказать уже нечего.
Так же система ведёт себя с истёкшим сроком и с замороженным абонементом, и каждый называет своё состояние словами: «абонемент заморожен — визит по нему не отмечается». Как этот отказ выглядит у стойки регистратуры, показано в CRM для клиники: курс из десяти процедур, два переноса, один пропуск — и вопрос «сколько у меня осталось?», на который в тетради отвечают «кажется, три».
Заморозка возвращает дни, а не съедает их
Клиент заболел или уехал — поставьте абонементу статус «Заморожен». Визиты по нему не списываются, а CRM запоминает день, с которого идёт пауза. Вернули статус «Действует» — и дата «Действует по» сама переехала вперёд ровно на столько дней, сколько пакет простоял на паузе.
● действует до 30 сентября
↓ 1 августа — «Заморожен» (болезнь)
⏸ заморожен «Заморожен с»: 1 августа
↓ 15 августа — «Действует»
● действует до 14 октября ← 14 дней паузы вернулись сами
Считать и продлевать руками не надо — и не нужно бояться забыть: раньше именно это и происходило, а две недели болезни превращались в две недели сгоревшего абонемента. День начала паузы виден в карточке полем «Заморожен с» и правится руками: человек заболел в понедельник, а отметили вы это в среду — верните понедельник, и в срок вернутся все дни, а не часть.
Заморозку ставит и снимает человек: сроков «с… по…» заранее не задать, зато и «размораживать» пакет машина сама не станет — вы решаете, когда пауза кончилась.
Пауза клиента и заморозка его пакета — два разных поля, и путают их часто. Разбор с примером — в CRM для репетитора и курсов: статус ученика «Пауза» говорит лишь то, что человек не считается в активных, а срок его пакета продолжает идти, пока вы не заморозите сам пакет.
Напоминание, которое возвращает клиента
Вместе с модулем приезжают три готовых правила, и работают они на вас, а не на бумагу:
- в день окончания срока абонемент сам становится «Истёк» — работает сразу;
- «остался последний визит» — уведомление приходит сразу, как только по пакету остался один визит;
- «срок истекает через неделю» — приезжает выключенным: включите его тумблером в «Настройки → Абонементы», когда назначите ответственных.
Эти три приходят вашему сотруднику — тому, кто указан в поле «Ответственный». Это повод для продажи: «у Ивана остался один визит и неделя срока» — звонок вовремя и по делу.
А клиенту система пишет сама. Когда после отметки посещения у него остаётся два визита — и второй раз, когда визиты заканчиваются, — CRM отправляет ему короткое сообщение: сколько осталось и до какого числа действует пакет. Уходит оно тем же путём, что напоминания о записи: в Telegram, если клиент подключил вашего бота, иначе письмом на почту из его карточки. Канал выбирается один — двух сообщений об одном и том же не будет.
Иван, восьмое занятие отмечено:
┌────────────────────────────────────────────────────────┐
│ По абонементу «Абонемент на 10 занятий» осталось │
│ 2 визита. Срок действия — до 31.08.2026. │
└────────────────────────────────────────────────────────┘
…и ровно один раз, на десятом:
│ По абонементу «Абонемент на 10 занятий» закончились │
│ визиты — продлите его, чтобы продолжить. │
Ровно два сообщения за весь пакет, и ни одного лишнего: они привязаны к моменту, когда остаток прошёл отметку, а не к состоянию «визитов мало». Девятое занятие не пишет ничего, повторное открытие карточки — тоже.
Правила обычные — их видно в разделе автоматизаций, можно переписать текст, сдвинуть срок или выключить.
Прайс типов: завели один раз — дальше продаём в клик
Пока пакет один, три числа несложно набрать руками. Когда их пять — «Разовый», «8 занятий», «Годовая карта», «5 консультаций», «Пакет 10 моек», — руки начинают ошибаться: у одного клиента 8 занятий на 30 дней, у другого те же 8 — почему-то на 45, и никто уже не помнит, кто из них прав.
Поэтому у абонементов есть прайс типов. Отдельный модуль «Каталог абонементов» — включается в «Настройки» → «Модули» и ставится поверх уже работающих абонементов. Он заводит справочник «Типы абонементов», где строка — это строка вашего прайса:
Типы абонементов
┌────────────────────────────┬────────┬───────┬─────────┬───────────┐
│ Название │ Визитов│ Срок │ Цена │ В продаже │
├────────────────────────────┼────────┼───────┼─────────┼───────────┤
│ Абонемент на 8 занятий │ 8 │ 30 дн.│ 6 000 ₽ │ ✔ │
│ Пакет 5 консультаций │ 5 │ 90 дн.│ 7 500 ₽ │ ✔ │
│ Летняя карта (архив) │ 12 │ 60 дн.│ 9 000 ₽ │ — │
└────────────────────────────┴────────┴───────┴─────────┴───────────┘
Дальше продажа — это одно нажатие. Открываете тип, видите строку «8 визитов · срок по 19 сентября · 6 000 ₽» и жмёте «Продать клиенту». Открывается обычная форма нового абонемента, уже заполненная: название, число визитов, цена, услуга и обе даты. Остаётся выбрать клиента и сохранить.
Дата конца срока написана словами до нажатия — не «30 дней», а «по 19 сентября». Это разные утверждения ровно до тех пор, пока второе не напечатано: день продажи входит в срок, и спорить лучше с датой на экране, чем с арифметикой в голове.
Скидку по-прежнему даёте вы, а не система. Подставленные числа — обычные поля формы: видите 6 000 и можете сохранить 5 500. В карточке останется ровно та сумма, о которой договорились, — и именно на неё выпишется ссылка на оплату.
Поднимете завтра цену в прайсе — уже проданные абонементы не изменятся. Условия не «подсматриваются» в тип, а копируются в пакет в момент продажи: это снимок, а не ссылка. Поэтому клиент, купивший в августе за 6 000, в сентябре не обнаружит у себя 6 500, а ссылка на оплату не выпишется на сумму, которую он не согласовывал. Связь с типом при этом сохраняется отдельным полем — по нему видно, каких пакетов продали больше.
Каталог необязателен: студии, которая продаёт один вид пакета, он не нужен — абонементы работают и без него, ровно как раньше.
Продление — одна кнопка, а не вторая продажа с нуля
«Откатал десятку, хочет ещё» — самая частая продажа в студии. И до этого обновления она стоила ровно столько же, сколько первая: открыть раздел, «Создать», найти клиента в списке, набрать название, число визитов, цену, обе даты. Половина полей при этом — буквальная копия того, что уже открыто на экране.
Теперь на карточке абонемента рядом с «Отметить посещение» и «Ссылкой на оплату» стоит «Продлить», а под кнопкой — строка, которая говорит, что именно произойдёт:
Абонемент на 10 занятий · Осталось: 1 · по 31.08
┌──────────────────┐ ┌───────────────────┐ ┌───────────┐
│ Отметить визит │ │ Ссылка на оплату │ │ Продлить │
└──────────────────┘ └───────────────────┘ └───────────┘
новый — с 01.09.2026 по 01.10.2026
Нажатие открывает обычную форму нового абонемента, уже заполненную условиями этого пакета: клиент, название, услуга, число визитов, цена и ваши собственные поля — «Как узнал», «Филиал», что угодно, что вы завели сами. Остаётся проверить и сохранить.
Новый срок встаёт встык, а не «с сегодня». Если текущий пакет действует до 31 августа, продление, купленное 20-го, начнётся 1 сентября. Иначе клиент оплатил бы одиннадцать дней, которые у него уже есть, — и заметил бы это только в конце. Если срок уже вышел, встык становиться не к чему: новый идёт с сегодняшнего дня. Какой из двух случаев ваш — написано под кнопкой до нажатия, а не выясняется в форме.
Длина берётся у самого пакета, а не у прайса. Продлеваем то, что человек купил: тип мог с тех пор подорожать, поменять срок или вовсе уйти из продажи. Месячный пакет с 1 по 31 августа — это тридцать один день, поэтому продление с 1 сентября кончается 1 октября, а не 30-го: единица срока у нас день, а не «месяц».
Расход прошлого пакета не переезжает. Отметки посещений, остаток, статус и отметка заморозки остаются у старого абонемента — новый начинается полным. Подставить «использовано 6» значило бы выдать клиенту пакет, наполовину исчерпанный в момент продажи.
Список «Требуют внимания» перестал быть просто списком. Он отсортирован по срочности — сверху те, у кого визитов не осталось вовсе, — и у каждой строки стоит та же кнопка «Продлить»: разговор с клиентом и оформление продления больше не два разных захода. Если срочных больше, чем помещается, CRM пишет об этом прямо под списком и даёт показать остальных — «показано двадцать из сорока» молча мы не считаем допустимым.
Продление — это новая запись, а не «дописать десять визитов в ту же». Так и должно быть: посещения привязаны к конкретному пакету, и если сваливать два срока в одну запись, остаток за прошлый месяц станет не восстановить, а деньги двух продаж сольются в одно поле «Стоимость». Отдельными записями видно и историю клиента, и выручку по месяцам.
Пакет можно продать ссылкой
Раньше деньги за абонемент фиксировали отдельно — теперь на карточке пакета рядом с «Отметить посещение» стоит «Ссылка на оплату». Одно нажатие — и вы получаете адрес, который отправляете клиенту в мессенджер. Он платит картой, банк подтверждает — и абонемент включается сам.
Продали пакет и поставили ему статус «Заморожен»
↓
[ Ссылка на оплату ] → https://pay…/abc → отправили клиенту
↓
клиент заплатил 12 000 ₽ картой
↓
● действует ← CRM сняла заморозку сама, визиты пошли
Это тот же самый приём оплаты, что и по заказам, — со всей его страховкой: сумма сверяется с банком до того, как платёж признан вашим; выручка попадает в кассу и в отчёты; повторное нажатие отдаёт ту же ссылку, а не второй счёт (заплатить дважды невозможно). Сумму система берёт из поля «Стоимость» самого абонемента — назначить её «на глазок» из интерфейса нельзя, и это защита, а не ограничение.
Чтобы принимать оплату, нужен ваш договор с ЮKassa или Robokassa — подключается в «Настройки → Оплата».
Второй путь — для тех, кому счёт «в лоб» отправлять не хочется: кнопка «Поделиться статусом» даёт клиенту короткую публичную страницу пакета, где видно статус, стоимость и кнопку «Оплатить». Клиент сам решает, когда платить, и видит перед этим, за что. Сумма на странице и сумма в банке читаются из одного и того же поля «Стоимость» — разойтись им нечем.
«А сколько у меня осталось?» — клиент смотрит сам
Этот вопрос администратор слышит чаще любого другого, и каждый раз это минута работы: открыть, найти, посчитать, ответить. Между тем ответ уже лежит в базе — не хватало только показать его владельцу пакета.
В настройках абонементов есть строка «Показывать остаток клиенту в его кабинете» и одна кнопка «Показать клиенту». После нажатия в личном кабинете клиента появляется блок «Мои абонементы»:
Личный кабинет · Иван Петров
┌─────────────────────────────────────────────────────────┐
│ Мои абонементы │
│ ───────────────────────────────────────────────────── │
│ «10 визитов» Осталось: 3 по 31.08 ● действует│
│ «Курс массажа» Осталось: 0 по 12.07 ○ истёк │
└─────────────────────────────────────────────────────────┘
Четыре поля — название, остаток, до какого числа и состояние. Стоимости и внутреннего комментария там нет намеренно: цена бывает предметом отдельного разговора о скидке, а комментарий сотрудники пишут для себя. Если захотите показать больше — набор полей и заголовок правятся на вкладке «Портал», там же блок выключается.
Чужой пакет в кабинет попасть не может. Принадлежность CRM берёт не из совпадения имён, а из ссылки абонемента на карточку клиента — той же, по которой пакеты видны на самой карточке. И если понять эту ссылку однозначно нельзя (например, вы добавили абонементу вторую ссылку — на филиал), кнопка не появится вовсе, а система честно скажет, что раздел клиентов придётся выбрать руками. Мы предпочитаем промолчать, а не угадать: цена ошибки здесь — чужие данные на чужом экране.
Сам личный кабинет включается отдельно, на вкладке «Портал»: там же берётся ссылка для клиентов и рассылаются приглашения.
Кому это нужно в первую очередь
Мойкам и детейлингу — пакеты моек. Клиникам и кабинетам — курсы процедур. Студиям и залам — абонементы на занятия: остаток там пересчитывается прямо от отметки посещаемости группы, а доска «Абонементы по статусу» держит столбец «Истёк» — готовый список тех, кому пора звонить. Сервисам на обслуживании — пакеты часов поддержки, и там же названа граница, о которую обманываются: единица списания здесь отметка, а не час, поэтому «40 часов» приходится класть сорока отметками по часу. Общее у всех одно: деньги берутся вперёд, а расходуются частями, и потери не видны, пока их не посчитаешь.
Сколько это стоит
Нисколько. Абонементы — часть бесплатного тарифа, как и все остальные модули: платный тариф продаёт объём (места, записи, файлы), а не доступ к возможностям. Отдельной платы «за модуль», как принято у коробочных CRM, у нас нет и не будет.
Честные ограничения
- Заморозка ставится статусом, а не датами «с… по…» — период паузы заранее не запланировать: вы ставите «Заморожен», когда она началась, и «Действует», когда кончилась.
- Дни паузы возвращаются в момент разморозки, а не заранее. Пока пакет заморожен, «Действует по» показывает СТАРУЮ дату — новая появляется в ту секунду, когда вы вернули статус «Действует». Если вы подвинули дату руками тем же сохранением, CRM своих дней сверху не прибавит: считать за вас дважды она не станет.
- Оплата по ссылке заморозку снимает, но срок не двигает. «Заморожен до оплаты» — это не пауза по болезни: клиент ничего не терял, пока счёт ждал денег, и дарить ему дни не за что.
- Абонементам, заведённым до этого обновления, поле «Заморожен с» нужно досеять — кнопкой «Восстановить расчёт» в карточке модуля («Настройки» → «Модули»). Пока поля нет, заморозка работает по-старому: статус без возврата дней.
- Клиенту система пишет только после визита. Оба сообщения об остатке привязаны к отметке посещения: пакет, по которому клиент перестал ходить, промолчит до конца срока. О приближении даты предупредят вашего сотрудника — правилом «срок истекает через неделю».
- Клиенту пишем, только если есть куда. Сообщение уходит в Telegram (если клиент подключил вашего бота) или письмом на почту из его карточки. Нет ни того, ни другого — CRM промолчит; SMS в продукте пока нет.
- Порог «осталось мало» — два визита, и он не настраивается. Число зашито: у модуля почти нет настроек по замыслу, и превращать это в тумблер мы будем отдельно.
- Ссылка на оплату не выписывается на истёкший и исчерпанный пакет. Деньги за него не вернут ни дня и ни визита, поэтому CRM отказывает и предлагает оформить новый — продление тут не поможет.
- Чек 54-ФЗ по оплате абонемента собирается — контакт берётся из карточки клиента. В самом абонементе телефона и почты нет (и не должно быть): он выписан на карточку, и контакт CRM возьмёт оттуда — по той же ссылке, по которой пакет виден на клиенте. Условие одно: контакт должен быть хоть где-то — в карточке или в самом пакете. Если пусто в обоих, ссылка на оплату не выпишется вовсе, и CRM прямо скажет, чего не хватает: чек без телефона или почты по закону отправить некуда, а взять деньги и промолчать про чек — нарушение уже ваше.
- Остаток в общем списке догоняет за несколько секунд (в карточке он точен всегда).
- Прайс типов подставляет условия, но не проверяет их. Тип без числа визитов продать кнопкой нельзя (продавать нечего, и CRM так и говорит), а снятый с продажи — можно: она предупредит, но решение оставит вам. Считать по типу выручку «сколько каких пакетов продали» можно уже сейчас — через обычную группировку по полю «Тип пакета».
- Каталог типов — отдельный модуль, а не часть абонементов. Его нужно включить в галерее модулей отдельным нажатием; тем, кто продаёт один вид пакета, он не нужен.
- Кнопка «Показать клиенту» появляется не всегда. Если у абонемента больше одной ссылки на разделы вашего кабинета, однозначно понять, в каком из них живут карточки клиентов, нельзя — тогда блок портала заводится руками на вкладке «Портал». Там же он правится и выключается: второго тумблера в настройках абонементов мы не заводим, чтобы два переключателя одного и того же не разошлись.
- Клиент видит остаток, но не может им распорядиться. Блок только на чтение: записаться визитом, заморозить пакет или купить продление из личного кабинета пока нельзя.
- «Продлить» открывает форму, а не создаёт запись молча. Кнопка ведёт в обычную форму создания с подставленными условиями — сохранение остаётся за вами. Так продление проходит через ваши обязательные поля, права и разрешение конфликтов; «оформить пакет в одно нажатие, не глядя» мы намеренно не делаем.
- У пакета без обеих дат продление срок не подставит. Вывести длину не из чего, поэтому «Действует по» останется пустым, а строка под кнопкой честно скажет «срок проставите сами» — выдумывать «месяц» за вас CRM не станет.
- Один вид собственных полей в продление не переезжает: точка на карте. Продление открывает форму по адресу, а в адресе живёт текст: координаты приехали бы набором символов, из-за которого пакет вообще не сохранился бы. Поэтому точку CRM не подставляет — её видно пустой, и вы поставите её сами. Все остальные ваши поля — текст, число, дата, галочка, список, ссылка на другую запись, сотрудник — переезжают как обычно; галочка при этом переезжает в том виде, в каком стояла: отмеченная остаётся отмеченной, снятая — снятой.
Что дальше
Чтобы клиент сам видел остаток и срок — нажмите «Показать клиенту» в настройках абонементов; сам кабинет и приглашения в него живут в портале клиента. Чтобы он записывался на визиты сам — включите онлайн-запись. Пошаговая инструкция по настройке — в справке кабинета, статья «Абонементы и пакеты».
Как абонемент работает вместе с группами и расписанием зала, показано на отдельной странице: онлайн-запись клиентов для студии, школы и зала.
Как этим пользоваться
Пошаговый разбор с картинками — в справке.
Открыть инструкциюОткрыто целиком, без регистрации.
Что рядом
- Онлайн-запись: клиент записывается сам, пока вы работаетеПубличная страница, где клиент выбирает услугу и свободное время. Запись сразу в CRM, отмена и перенос — на его стороне, а двойная бронь невозможна: это запрещено на уровне базы данных, а не проверкой в коде.
- Портал клиента: он смотрит сам вместо того, чтобы звонить вамУ клиента появляется свой раздел, где видно его заказы, документы и счета. Вход по коду из письма, без пароля. Чужого он не увидит: в портале нет пути «взять запись по номеру».
- Платежи по заказу: клиент платит по ссылке, деньги идут вам напрямуюОплата по ссылке через ваш эквайринг: договор остаётся вашим, деньги не проходят через нас, чек 54-ФЗ пробивает ваш провайдер, а CRM передаёт ему позиции и ставки НДС.
Соберите свою CRM под свою нишу — бесплатно и без карты.
Собрать мою CRM →