Клуб по подписке на GetCourse: 1/3/6 месяцев, SaleBot и аналитика каждого цикла продления
В этом кейсе расскажу, как перенёс и перестроил техническую инфраструктуру клуба Sketch Pause: настроил подписки на 1, 3 и 6 месяцев, автоматические продления, GetCourse + SaleBot + Telegram и отдельную аналитику retention, которая учитывает автоматические и ручные продления, смену срока подписки и возврат участника в течение 30 дней.
Всем привет! Я Максим Ерохин, технический специалист онлайн-проектов.
В этой сфере работаю с 2020 года. За это время реализовал 600+ проектов: от отдельных воронок и вебинаров до больших клубных инфраструктур на GetCourse, SaleBot и Telegram.
В этот раз работал с клубом Sketch Pause.
С каким запросом пришёл клиент?
Перед стартом проекта клуб уже работал, но техническая инфраструктура была распределена между несколькими сервисами.
Основной задачей было перенести и перестроить клуб на связке GetCourse + SaleBot + Telegram, чтобы новые оплаты, подписки, продления и доступы работали в единой системе.
Нужно было реализовать:
— подписки на 1, 3 и 6 месяцев;
— автоматические продления и повторные попытки списания;
— отдельные старые цены для действующих участников и новые цены для новых;
— автоматическую выдачу и закрытие Telegram-доступов;
— синхронизацию GetCourse и SaleBot;
— перенос бесплатной части воронки из LeadConverter в SaleBot;
— уведомления перед списаниями и при ошибках оплаты;
— сегментацию участников;
— аналитику продаж и продлений.
На старте основная задача выглядела как большой перенос и пересборка клубной инфраструктуры.
Но уже в процессе работы стало понятно, что самой сложной частью проекта будет не сам перенос клуба, а корректная аналитика продлений.
Клиенту было важно понимать не просто количество повторных заказов, а реальную конверсию каждого цикла подписки: сколько участников дошло до точки продления и сколько из них в итоге осталось в клубе.
Причём нужно было учитывать не только обычное автосписание, но и ручную оплату, смену срока подписки и возврат участника после окончания доступа.
Именно вокруг этой задачи в итоге пришлось строить отдельную аналитическую архитектуру.
Какое решение было выбрано и почему?
Основой платной инфраструктуры клуба стал GetCourse.
Через него настроил продукты, подписки, автопродления, процессы, доступы, уведомления и основную аналитику по продажам.
SaleBot использовали для бесплатной части воронки, сегментации пользователей и синхронизации актуального срока подписки.
Telegram остался основной площадкой для взаимодействия с участниками клуба: бот, канал, чат и автоматическая выдача доступов после оплаты.
Отдельно для аналитики продлений подключили ReFunnels.
В итоге архитектура выглядела так:
GetCourse → оплаты, подписки, процессы и доступы
SaleBot → воронка и сегментация
Telegram → коммуникация с участниками
ReFunnels → аналитика циклов продления
Такую схему выбрали, чтобы не пытаться собрать всю логику в одном сервисе, а использовать каждый инструмент под конкретную задачу.
После этого перешёл к полной пересборке клубной инфраструктуры.
Что было сделано?
После согласования архитектуры приступил к полной пересборке клубной инфраструктуры.
1. Перенёс платную часть клуба на GetCourse
Новые оплаты клуба перевёл на GetCourse.
Внутри платформы собрал продукты, предложения, группы, сегменты и процессы, которые дальше управляют подписками и доступами участников.
2. Настроил подписки на 1, 3 и 6 месяцев
Для клуба реализовал три варианта подписки:
— 1 месяц — 1 990 ₽;
— 3 месяца — 4 590 ₽;
— 6 месяцев — 8 590 ₽.
Для каждого срока настроил отдельную логику оплаты, продления и доступа.
3. Настроил автоматические продления
Для каждого срока подписки собрал собственные процессы продления.
Первая попытка списания происходит примерно за 48 часов до окончания доступа. Если оплата не проходит — через 24 часа выполняется повторная попытка.
При успешном списании доступ автоматически продлевается на соответствующий срок.
4. Настроил сценарии при ошибке оплаты
Отдельно проработал ситуации, когда автосписание не проходит.
Система фиксирует ошибку, отправляет уведомление, делает повторную попытку и дальше определяет, нужно ли сохранить доступ или перевести пользователя в сценарий ручного восстановления подписки.
5. Настроил уведомления участникам
Перед списаниями и после них пользователь получает автоматические уведомления через e-mail и Telegram.
Настроил сообщения:
— перед ближайшим продлением;
— после успешной оплаты;
— после ошибки списания;
— при необходимости ручного продления;
— после окончания подписки.
6. Пересобрал Telegram-инфраструктуру
Подключил Telegram-бота GetCourse, канал и чат клуба.
После оплаты пользователь автоматически получает необходимые ссылки и доступы, а после окончания подписки система может закрыть их без ручной работы команды.
7. Синхронизировал GetCourse и SaleBot
Для каждого срока создал отдельную техническую логику.
После оплаты система фиксирует, какой срок сейчас активен у пользователя — 1, 3 или 6 месяцев — и передаёт актуальный статус в SaleBot.
Если человек меняет срок подписки, старое состояние удаляется и остаётся только новое.
8. Перенёс бесплатную воронку из LeadConverter в SaleBot
Существующую бесплатную часть воронки перенёс в SaleBot.
Сохранил стартовые сообщения, переходы, дожимы, проверку оплаты и исключение уже оплативших участников из дальнейших продающих сообщений.
9. Настроил специальное предложение для участников клуба
Для действующих участников клуба было отдельное предложение на дополнительный курс.
Настроил его выдачу нужному сегменту и защиту от ситуации, когда один и тот же оффер отправляется человеку повторно.
10. Реализовал сезонную логику доступа
По ходу проекта появилась дополнительная задача.
У клуба есть тематические месяцы, поэтому для части первых покупок нельзя было просто выдавать стандартные 30 / 90 / 180 дней.
Для таких пользователей настроил специальные сезонные предложения: первая покупка даёт доступ до окончания нужного тематического периода, а дальше подписка возвращается к стандартному циклу продлений.
11. Собрал отдельные дашборды по клубу
В GetCourse настроил аналитику, где можно отдельно смотреть:
— общую выручку клуба;
— новые продажи;
— продления;
— продажи и выручку по 1 / 3 / 6 месяцам;
— LTV клуба;
— отдельный LTV по всей школе.
12. Полностью протестировал систему
Перед сдачей проекта отдельно проверил первую оплату, все три срока, старые и новые цены, автопродления, ошибки списаний, Telegram, SaleBot, промокоды, доступы и основные процессы.
После этого отдельно перешёл к самой сложной части проекта — аналитике каждого цикла продления.
Как устроили аналитику продлений?
После настройки основной инфраструктуры появилась отдельная задача: клиенту было важно видеть не просто количество повторных заказов, а реальную конверсию каждого цикла продления.
Например, пользователь оплатил клуб на 3 месяца и дошёл до следующего продления.
Дальше он может:
— продлиться автоматически;
— оплатить вручную;
— сменить срок с 3 месяцев на 1 или 6;
— не оплатить сразу, но вернуться через несколько дней;
— окончательно уйти из клуба.
При этом первые четыре сценария по бизнес-логике должны считаться успешным продлением одного и того же исходного цикла.
Обычной аналитики заказов GetCourse для этого было недостаточно.
Один цикл продления = одна отдельная Session
Главным решением стало считать не самого пользователя, а каждый его цикл продления отдельно.
Один человек может находиться в клубе год и за это время пройти несколько точек продления.
Поэтому для каждого нового цикла создаётся собственный уникальный ID, например:
SP-3M-513069299-3
Где фиксируется:
— срок подписки;
— конкретный пользователь;
— номер его текущего цикла продления.
Таким образом один пользователь может иметь несколько независимых циклов, и история каждого из них считается отдельно.
Для каждого срока собрал отдельную аналитику
В ReFunnels создал три отдельные сцены:
— 1 месяц;
— 3 месяца;
— 6 месяцев.
Внутри каждого цикла фиксируются семь основных событий:
RENEWAL POINT — пользователь дошёл до точки продления.
AUTO ELIGIBLE — автоматическое списание технически возможно.
AUTO SUCCESS — автосписание прошло успешно.
MANUAL REQUIRED — требуется ручное продление.
MANUAL SUCCESS — пользователь оплатил вручную.
OVERALL SUCCESS — пользователь в итоге остался в клубе.
CYCLE END — цикл окончательно завершился без продления.
За счёт этого можно отдельно считать:
Общую конверсию продления
OVERALL SUCCESS / RENEWAL POINT
Конверсию автопродления
AUTO SUCCESS / AUTO ELIGIBLE
Конверсию ручного продления
MANUAL SUCCESS / MANUAL REQUIRED
Отвал
CYCLE END / RENEWAL POINT
Получилась аналитика не просто по повторным заказам, а по тому, что произошло с каждым конкретным циклом подписки после наступления точки продления.
Но оставался ещё один важный нюанс: что делать, если пользователь не продлился сразу, а вернулся через несколько дней или вообще выбрал другой срок подписки?
Как учитывали смену срока и возвраты в течение 30 дней?
Отдельная сложность появилась в ситуациях, когда пользователь не продлевал подписку сразу.
По логике проекта, если человек возвращался в клуб в течение 30 дней после окончания подписки, это всё ещё должно было считаться успешным продлением предыдущего цикла.
Например:
Было: подписка на 3 месяца
Дальше: срок закончился, продление не прошло
Через 10 дней: пользователь покупает уже подписку на 1 месяц
С точки зрения текущей подписки пользователь теперь находится на тарифе 1 месяц.
Но с точки зрения аналитики это всё ещё успешное продление старого 3-месячного цикла.
Чтобы это корректно считать, реализовал отдельное 30-дневное окно — Manual window.
Если пользователь не продлился сразу, система:
— фиксирует необходимость ручного продления;
— сохраняет исходный срок подписки;
— запускает 30-дневное окно возврата.
Если в течение этого периода приходит новая оплата клуба, система сначала закрывает старый цикл как успешный, а уже после этого фиксирует новый выбранный срок пользователя.
То есть сценарий:
3 месяца → окончание → возврат через 10 дней → покупка 1 месяца
аналитически превращается в:
старый цикл 3M = SUCCESS
новый текущий срок = 1M
Если же пользователь не возвращается в течение 30 дней, цикл окончательно закрывается как CYCLE END, после чего система очищает старые технические статусы и синхронизирует изменения с SaleBot.
Такая логика позволяет не терять реальные продления только потому, что пользователь оплатил позже или решил выбрать другой срок подписки.
Какой результат получили?
В результате полностью перестроили техническую инфраструктуру клуба Sketch Pause и собрали единую подписочную систему на связке GetCourse + SaleBot + Telegram + ReFunnels.
В проекте удалось реализовать:
— подписки на 1, 3 и 6 месяцев;
— отдельные старые и новые цены;
— автоматические продления и повторные попытки списания;
— уведомления и сценарии восстановления подписки;
— автоматическую выдачу и закрытие Telegram-доступов;
— синхронизацию актуального срока между GetCourse и SaleBot;
— перенос бесплатной воронки из LeadConverter в SaleBot;
— сезонную логику первого доступа;
— отдельные дашборды по продажам, продлениям и LTV;
— аналитику автоматических и ручных продлений;
— учёт смены срока подписки;
— 30-дневное окно возврата;
— отдельный цикл аналитики для каждого продления.
В итоге GetCourse отвечает за деньги, заказы и работу подписок, а ReFunnels отдельно показывает фактическое удержание участников и результат каждого renewal-cycle.
Это позволяет видеть не просто количество повторных заказов, а понимать, сколько участников реально дошли до продления, каким способом они остались в клубе и сколько циклов закончились окончательным уходом.
Перед сдачей проекта отдельно протестировал основные сценарии подписок и аналитику: автоматические и ручные продления, смену срока, возвраты в течение 30 дней и окончательное завершение цикла.
После тестирования система была передана команде и готова к дальнейшей работе на реальных участниках.
Обратная связь от клиента
После завершения работ проект передал команде вместе с дашбордами, аналитикой и видеообзором по основным процессам.
Хочу поделиться опытом работы с тех. специалистом
К Максиму обратились за помощью в тех. настройке GetCourse. Очень довольны системным подходом, который предоставляет Максим. Работу начали со сбора подробного ТЗ. Максим подробно объяснял каждый пункт, задавал нам наводящие вопросы, и с его помощью удалось составить на бумаге именно то видение проекта, которое мы и хотели. В КП были подробно прописаны все шаги и дедлайны по каждому этапу работы. Сама реализация проекта получилась отличной! Мы очень довольны результатом и тем, что за несколько месяцев работы не получили ни одной жалобы от клиентов.
Они кайфуют от того, что им предоставлена платформа, на которую они могут зайти и без всяких костылей и багов воспользоваться нашим продуктом. Результатом мы настолько довольны, что решили продолжить работу с Максимом на долгосрочной основе. Можем смело рекомендовать Максима как технического специалиста по GetCourse 🙌
Итог
На старте этот проект выглядел как большой перенос клуба на новую техническую инфраструктуру.
Но в процессе самой интересной частью стала именно аналитика продлений.
В подписочном продукте повторный заказ и успешное продление — не всегда одно и то же.
Пользователь может сменить срок подписки, оплатить вручную или вернуться спустя несколько дней после окончания доступа — и всё это нужно корректно учитывать в том цикле, из которого он пришёл.
В итоге для Sketch Pause получилась система, где отдельно можно смотреть деньги и продажи, а отдельно — реальное удержание участников и результат каждого цикла продления.
Для меня это был первый проект, где retention-аналитика клуба была проработана настолько подробно — от автоматических и ручных продлений до смены срока, возврата в течение 30 дней и окончательного churn.
*Материал создан исключительно в образовательных целях — чтобы поделиться опытом и разобрать актуальные решения различных запросов в технической части запусков в сфере инфобизнеса и не только. Если остались вопросы — пиши в Telegram.