March 2, 2024

Закрытый клуб с подпиской GC + SaleBot

Всех приветствую! В этом кейсе я расскажу как мы реализовали закрытый клуб по подписке в проекте Steamate

Мой клиент - это YouTube блоггер, который рассказывает о заработке на играх в Steam.

В начале 2023 года он написал мне с идеей о запуске клуба. Мы созвонились и обсудили как в его случае всё сделать максимально круто, но при этом просто, так как это MVP.


1. Прототипирование

Изначально мы начали с проектирования структуры бота в Miro. Важно было на этапе прототипа продумать все сценарии и UserFlow, чтоб сделать его максимально удобным для клиента и не возникло несостыковок или тупиковых сценариев.

В процессе прототипирования несколько раз созванивались, уточняли детали и переделывали. На данном этапе это делается в разы проще, чем в процессе разработки.

Во время создания прототипа мы окончательно решили какие сервисы будут использоваться и как они будут между собой взаимодействовать. Хотели изначально прикрутить Prodamus прямо в бота, но решили всё таки создавать заказ в GetCourse по API и отправлять ссылку в бота.

2. Разработка

После согласования прототипа мы начали разработку. Сначала базовая настройка GetCourse: домен, почта, платежка, продукты/предложения, а потом самое интересное - Telegram бот.

Путь клиента был такой:

Человек заходил на Tilda страницу, выбирал тариф, в виджете заполнял почту и переход в TG-бота.

На этом этапе происходило связывание GetCourse профиля и TG-бота. Так же на этом этапе сохранялись UTM метки.

Вот такая получилась реализация бота.

В боте ему приходило сообщение с выбранным на сайте тарифом и возможностью оплатить банковской картой, криптой или TF2-ключами. Крипта и TF2-ключи вели на менеджера, а кнопка "Оплата картой" генерировала заказ на GetCourse и присылала в бот ссылку:

Страницу оплаты мы тоже немного задизайнили)

После оплаты в бота приходит сообщение с успешной оплатой и ссылками на канал и чат.

Если это была не оплата, а продление, то приходит другое сообщение - "Доступ в Портал успешно продлён"

Далее следует череда напоминаний об оплате: за 3 дня, за сутки, за 2 часа. И если человек не продлил доступ - то удаление

На этапе прототипирования мы так же продумали дожимы об оплате и возможные ошибки: например, если GetCourse API на время повиснет и SaleBot затупит или просто забудут оплатить сервис.

3. Ошибки

Возможным ошибкам было уделено отдельное внимание, поэтому я даже вынесу это в отдельный раздел.

Любой процесс, который отправлял данные в SaleBot мы делали не просто 1 блок - отправка WebHook. Мы делали в 3 попытки, получая статус каждый раз.

Мы делали CallBack и проверяли дошёл ли он в бота. Eсли возвращалась ошибка, то пробовали ещё раз через 10 минут. Если снова не вышло - то уведомляем сотрудника и пробуем ещё раз через час.

Мы сделали отдельного бот для ошибок и системных сообщений

Прикрутили его напрямую к GetCourse, для получения ошибок с процессов, а системные сообщения и ошибки с SaleBot отправляли по API, не привязывая его в проект.

4. Аналитика

Как такового запрос на глубокую аналитику или оцифровку воронки не было. Мы внедрили базовое сохранение UTM-меток в карточке клиента, чтоб понимать откуда он пришел.

Так же мы сделали логгер, который выгружал действия с чата и канала: добавления, удаления, ошибки и т.д.

Сейчас им конечно же не пользуются, но на начальном этапе клиент хотел чётко видеть что происходит и что делает бот.


На данный момент бот уже несколько раз переделался, клуб сейчас является частью основного продукта, а не отдельным, как изначально.

На GetCourse было реализовано огромное количество нестандартных функций, например, динамические виджеты, о которых я рассказывал в этом видео на YouTube-канале, PreLoader, оформление, кастомизация панелей пользователя и много чего другого.

О всех самых интересных фишках я рассказываю в своих Telegram и YouTube каналах. Подписывайтесь.

Отзыв заказчика


Бесплатная консультация по техническим настройкам 👇
https://t.me/ma_andrey

Telegram-канал 👇
https://t.me/tech_cases

YouTube-канал 👇 https://www.youtube.com/@andrey-tech