Материал из Блога Адама
Предыстория
Еще год-полтора назад появилось такое понятие как "Схемный трафик" и изначально им пользовались исключительно гемблисты. Позже этим же способом начали лить бинарки, крипту, нутру и все прочее. Сейчас схемный находится в топе, все больше аффов адаптируют свои классические воронки под работу с мессенджерами в связке с чат-операторами.
Мне было интересно взяться за подобное и посмотреть на устройство этого изобретения изнутри, ну и конечно же придумать пару технических штук для упрощения работы операторов и команды в целом.
О чем эта статья
Сегодня речь пойдет об автоворонке и ее реализации с помощью сервиса PuzzleBot. Кто не в курсе, Puzzle - это no-code конструктор чат ботов Telegram, обладающий практически неограниченными возможностями.
Почему я выбрал именно PuzzleBot?
- Стабильность
- Наличие входящего и исходящего API
- Наличие сценариев / постинга
- Возможность интеграции WebApp в бота
Сразу скажу, в данной статье я не буду разбирать конкретные примеры воронок (текст, визуал), а лишь покажу возможности, которые открываются при использовании связки партнерки + трекера + пазла. Для кого-то информация изложенная внизу может показаться банальной, для кого-то это будет откровением.
Чтобы было проще понять о чем идет речь, я сделал пример такого бота специально для вас: ➡️ https://t.me/scheme_traffic_bot ⬅️. Потыкайтесь и вернитесь в статью.
Немного о минусах и плюсах
Для начала стоит перечислить минусы использования ботов в схемном трафике. Глупо было бы ожидать, что все будет идеально, ведь если крупные команды прямо сейчас заливают на каналы, значит не все так гладко, ну либо они слишком ленивы и не хотят заниматься продумыванием структуры ботов.
Главный и самый существенный минус бота - это неумение аудитории пользоваться кнопками и прочим функицоналом ТГ. Среди всего прочего, этот минус выделяется и бьет по шарам. Тем не менее, этот "острый угол" можно сгладить с помощью сценариев / событий / контента внутри бота.
Плюсы бота:
- Полный трекинг всего что можно оттрекать
- Сигментирование аудитории на всех этапах
- Сохранение контактов юзера, если они регнулись через ссылку на бота из канала (вместо прямых ссылок, размещаем ссылки на бота в канале и юзеры делают регу через него)
- Скрытость воронки (контента) от посторонних глаз
- Процент отписки (блокировки) от бота ~25% от общего числа подписавшихся за счет персонализированного контента. Тогда как в канале этот процент может достигать 55-60%.
- Автоматическая работа с юзером на основе S2S постбэков из Keitaro \ Binom
- Возможность встраивания WebApp (сайт) прямо внутрь бота
- Возможность использования Conversion API Facebook для трекинга различных событий
Минусы бота:
- Отсутствие соц. подтверждения в виде количества подписчиков на канале \ количестве просмотров и лайков на постах
- Безграмотность аудитории и не понимание как работать с ботом (зависит от гео и от вашего поясняющего этот момент контента)
- Не у всех партнерок есть настройка постбэков в трекер на каждое из событий
Как сделать подобное
Если вы протыкали все кнопки в тестовом боте и дошли до этой главы, то вы готовы немного напрячь мозги и сделать красиво. Ниже будет приведена пошаговая инструкция для реализации. Сразу скажу, для того чтобы пройтись по руководству и нигде не ошибиться, нужно ознакомиться хотя бы с базой функционала вашего трекера и сервиса PuzzleBot. Без этого фундамента вряд ли у вас получится собрать "пазл" воедино и получить что-то рабочее на выходе.
Бот, который был приведен в примере выше, собран в связке ПП + Keitaro + PuzzleBot. Соответственно, все, что приведено ниже, будет сделано на примере Keitaro. Если у вас Binom - курите их доку.
Из тех знаний, которые пригодятся в работе:
- Настройка постбэков из партнерской сети
- Настройка S2S постбэков внутри кампании трекера
- Входящий API сервиса PuzzleBot
Я не буду рассказывать, как работает тот или иной сервис / как подцепить бота в Puzzle или как добавить в бота ресурс (канал или чат). Читайте их доку / смотрите поясняющие видосы на их Youtube-канале. Там все / обо всем подробно расписано.
Настроим PuzzleBot
1. После подключения бота и нужных ресурсов в него зайдем в раздел Модерация и создадим следующие категории:
- Зарегистрирован
- Сделал Sale
- Сделал Rebill
В моем примере они указаны так. Вы, конечно же, можете назвать их как вам заблагорассудится. Главное, чтобы эти категории отображали смысл полученного постбэка от трекера (lead/sale/rebill).
Категории будут присваиваться юзерам автоматически (если это настроено в конструкторе) после прохождения определенных команд в боте (рега, деп, редеп). Далее мы сможем смотреть стату, "разбивать" их по статусам и пр. Создавать категории можно не только под постбэки, но и под любые другие действия в боте - тут все зависит от ваших целей.
2. Зайдем в Конструктор Puzzle и создадим 3 базовые команды, которые будут вызываться по API PuzzleBot с помощью настроеного S2S постбэка в кампании Keitaro. У меня эти действия называются registred, deposited, redeposited. Вы же можете назвать их как вам угодно, главное чтобы было понимание, что это названия команд, в дальнейшем необходимо будет указывать при обращении к апи паззла.
Так выглядит базовая конструкция бота для работы с постбэками из Keitaro TDS. От этих 3х действий можно строить дальнейшие логические цепочки и планировать воронку.
Рассмотрим подробнее, как выглядят эти команды внутри:
Остальные действия deposited, rediposited настроены аналогичным образом, как на скриншоте выше, но категории там присваиваются юзеру уже совсем другие, которые отвечают отработке постбэков на sale / rebill.
В каждой команде я поставил доп. действие при срабатывании команды. Первое, что мы делаем - меняем категорию для юзера, у которого сработала команда registred. По желанию делаем уведомление в спец. группу о переходе юзера из одной категории в другую. Это уже по желанию, но мне так удобнее, потому что я и моя команда всегда видим кто/что/когда сделал и можем по одному клику найти этот диалог в тг.
3. Создадим токен от нашего Puzzle бота для доступа к внешнему API и сохраним его к себе в блокнотик. Он нам пригодится, когда будем настраивать S2S внутри кампании KT.
Созданные токены всегда доступны в настройках бота, в разделе "Интеграции".
На этом настройка базы для автобота завершена. После настройки других компонентов (пп, трекера) этого большого пазла можно будет вернуться и "обвесить" этот каркас контентом и пр. лабудой.
Настройка партнерской сети
Практически в каждом трекере уже имеются готовые шаблоны для прокидывания постбэков из ПП. Все, что вам надо сделать, зайти в раздел Партнерские сети (/admin/#!/affiliate_networks/) в трекере, нажать на кнопку "Создать" и выбрать готовый шаблон постбэка. Далее вам выпадет готовая ссылка для вставки в настройки партнерской сети. Мы ее копируем, идем в настройки нашей ПП и вставляем в настройки постбэков.
Но что делать, если среди шаблонов не оказалось нужной ПП? Не отчаиваться и запастись терпением. Для начала рекомендую прочесть FAQ от КТ по созданию Партнерской сети в трекере.
Для успешного создания своей ПП в Keitaro необходимо знать 1 фундаментальную вещь: все данные синхронизируются с помощью subid (в биноме это clickid) трекера. Сабайди - это уникальный идентификатор клика, который у каждого юзера при каждом заходе на ссылку кампании разный. Я специально выделил жирным, что это именно ссылка кампании, а не прямая на лендинг, т.к. subid попросту не присваивается юзеру, если вы заливаете напрямую ссылку на ленд! Этот subid мы обязаны передать в партнерку, чтобы в дальнейшем, после целевого действия юзера, партнерка смогла забрать этот subid из своей БД и отправить постбэк в трекер. Звучит сложно, но на самом деле все гораздо проще, чем кажется.
Mindmap с объяснением взаимодействия ПП и трекара и роли Subid в этом взаимодействии:
Еще одна важная деталь состоит в том, что для каждого события свой статус. В кейтаро есть 3 основных статуса: lead (конверсия), sale (продажа), rebill (на самом деле sale + tid, но в БД КТ это пишется как rebill - допродажа).
Хвост постбэка на lead:
postback/?subid={subid}&status=lead&payout={payout}
Хвост постбэка на sale:
postback/?subid={subid}&status=sale&payout={payout}
Хвост постбэка на rebill:
postback/?subid={subid}&status=sale&payout={payout}&tid={tid}
По поводу статуса lead все понятно. Но есть некоторая путаница по поводу sale & rebill. Смотрите, если мы отправляем постбэк только с 3 метками subid / status / payout - то все это считается продажей, но если к этому хвосту добавить tid (transaction id) - то этот постбэк будет считаться допродажей. По этой логике можно быстро собирать свои постбэки для любого из событий, для любой из ПП, где есть возможность настраивать постбэки.
Настроим источник в Keitaro
Зайдем в "Источники" (/admin/#!/traffic_sources/) в трекере и выберем источник, с которого будем заливать схемный трафик, в моем случае это Facebook. Пропишем метку, в которую будет записываться chat_id (уникальный идентификатор пользователя Telegram). По этому параметру в дальнейшем будет происходить синхронизация с ботом юзера. Если не передать chat_id, мы не сможем сделать S2S запрос на API PuzzleBot с названием команды для ее запуска у юзера.
Поэтому настраиваем либо как на скрине, либо в таком порядке:
Моя метка (Название метки для отображения в стате) | my_metka | {my_metka} (в виде макроса).
Далее необходимо прожать галку в левом нижнем углу "Обновить в кампаниях" и сохранить. Опять же, если вы льете не только схемный, но и другие вертикали, необходимо вручную удалить источник из кампании со схемным и снова его туда проставить, а затем сохранить, чтобы все измененные метки из источника подятнулись и проставились в раздел параметров внутри кампании.
Так выглядит у меня настройка кампании. Остальные метки замазаны. Вы можете проставить свои метки в ближайшее свободное поле
Параметры должны проставиться в каждой кампании, которую вы собираетесь заливать в связке с ботом.
Настройка S2S постбэков внутри кампании Keitaro
Вот тут-то нам и пригодится созданный токен от PuzzleBot и их дока. Из их руководства следует: Для того чтобы вызвать команду у конкретного пользователя, мы обязаны сделать запрос с указанием его chat_id Telegram и названием запускаемой команды:
method: sendCommand
params:
command_name - string, name of command ot condition
tg_chat_id - number, Telegram id of resource or user
success result: code = 0, data = "ok"
URL для запуска команды registred в моем случае будет выглядеть вот так:
https://api.puzzlebot.top/?token=LF4cRL0ZXmV2S6SXUCMYJmkVHIZ&method=sendCommand&command_name=registred&tg_chat_id={sub_id_9}
Я скопировал заранее созданный api-ключ из сервиса PuzzleBot и подставил его в метку token=. Затем в метку command_name= прописал название команды так, как она называется у меня в конструкторе внутри PuzzleBot. Ну и конечно же вставил метку от трекера, в которой у меня хранится chat_id человека, который совершил целевое действие на моей ссылке кампании.
Небольшая путаница возникает у людей, когда они сталкиваются с настройкой S2S в КТ. Почему я поставил макрос с названием {sub_id_9} вместо {chat_id}? - Все просто: Для БД трекера "chat_id" - это лишь пользовательское название метки sub_id_№ с порядковым номером 9. Если вы поставите в S2S ваше пользовательское название (у меня это chat_id), то трекер попросту не найдет такой метки, не сможет испольнить макрос и получить значение из БД.
Найти свой порядковый номер sub_id_ очень легко. Достаточно зайти в кампанию и посчитать сверху вниз по нарастающей, как указано это на скриншоте снизу:
Исходя из этой логики, нужное мне значение лежит в метке sub_id_9
1. С собранной ссылкой для S2S идем во вкладку S2S Postback внутри настраиваемой кампании, создаем перый наш постбэк для события lead и вписываем собранную ссылку в поле URL:
2. Далее я создаю еще один постбэк с помощью кнопки "Добавить", заменяю в URL в метке command_name= значение на следующую мою пользовательскую команду из конструктора PuzzleBot - у меня это deposited:
3. Те же действия проделываем с 3им постбэком: создаем, заменяем на соответствующу/ команду (у меня это redeposited) и снимаем галки, как показано на скрине:
Проставляем ссылки в бот
Копируем ссылку из кампании, убираем все ненужные метки из ссылки, оставляем только те, что действительно нужны (chat_id). Можете, конечно, и не убирать, но те же макросы от Facebook тут работать не будут (вообще лучше создать отдельный источник в КТ и проставить кастом параметры там).
В метку, где будет храниться наш chat_id, пишем внутренний макрос PuzzleBot в виде chat_id={{USER_ID_TEXT}}:
Поздравляю, с этого момента, любое целевое действие, совершенное пользователем на нашей трекинговой ссылке КТ, будет передаваться по API в Puzzle и для пользователя будет запускаться команда, указанная в command_name=.
Подитог
С виду все выглядит невероятно сложно, но если разобраться в этом всего лишь один раз - можно будет творить все, что придет в голову. Возможности современных сервисов это позволяют.
На описанный выше "каркас" можно навешать любой контент. В общем можно все это оформить интуитивно для пользователя и вывести для себя идеальную формулу автобота. Ну а если аудитория безграмотная, можно наполнить бот визуалом, объясняющим как с ним взаимодействовать (прямо показывать, что можно тыкать на кнопки в видео).
В таком сетапе Латам у нас шел замечательно, а вот Индия в дикий минус, потому что индусы не очень грамотные и очень ленивые, тупо не хотят разбираться с тем как это работает. В общем все зависит от гео и от вашего подхода / инструкций в визуале.
О чем будет следующая статья
В следующей теме я разберу возможности пролива на канал и регистрации юзеров через бот, а также создание персональных ботов для каждого обработчика и снятие 50% существующих головняков у команд.
С помощью регистрации юзеров через бота, мне удалось выстроить систему, при которой обработчики могут записывать юзеров пришедших им в личку просто переслав сообщение этого юзера в свой персональный бот (красное выделение).
Так же за счет интеграции персональных ботов с трекером у обработчика появляется возможность смотреть свою стату с подсчетом их заработка даже не заходя в трекер (синее выделение):