Воронка предзаписи на Salebot: от комментария под рилсом до закрытого канала
Разбор целиком собранной воронки: человек пишет комментарий под роликом, получает сообщение в директ, переходит в Телеграм-бот, получает личную ссылку и попадает в закрытый канал — а каждый шаг считается в Launch Stats.
Здесь всё показано на Salebot, но принцип одинаковый для любого конструктора (BotHelp, Puzzlebot, ГетКурс): отличаются только названия полей.
Что получится
- Человек оставляет комментарий под роликом
- В директ ему приходит сообщение со ссылкой на бота
- В боте он нажимает «Старт» и получает личную одноразовую ссылку в канал
- По ссылке заходит в закрытый канал предзаписи
- Каждый шаг виден в воронке Launch Stats
Ключевая идея: ссылка в канал у каждого своя и работает один раз. Переслать её знакомому бесполезно. Поэтому число подписчиков канала всегда совпадает с вашей базой в боте, и в день продаж вы можете написать каждому лично.
Зачем вообще бот в середине
Заманчиво сократить путь и дать ссылку на канал сразу в директ. Но тогда вы теряете главное: бот в Телеграме не может написать человеку первым. Право отправить сообщение появляется только после того, как человек сам нажал «Старт».
То есть без шага с ботом в день открытия продаж у вас останется только пост в канале, который увидит далеко не вся аудитория. Один лишний клик покупает вам возможность обратиться к каждому лично.
Часть 1. Подготовка в Телеграме
Создайте закрытый канал
Меню Телеграма → «Создать канал» → тип частный. Название запомните: оно понадобится в текстах бота.
Добавьте бота администратором
«Управление каналом» → «Администраторы» → «Добавить администратора» → найдите своего бота.
Обязательное право одно — «Добавление подписчиков» (в некоторых версиях «Добавление участников»). Именно оно позволяет боту создавать пригласительные ссылки. Остальные права можно выключить.

Права стоит урезать не из вредности: если доступ к боту когда-нибудь уведут, лишние права превратятся в возможность переименовать канал или удалить посты.
«Управление публикациями» оставьте включённым, только если планируете публиковать посты прогрева через бота.
Узнайте номер канала
Перешлите любой пост из канала боту @getidsbot. В ответе найдите блок «Исходный чат» — там номер вида -100…. Он понадобится дальше.

Часть 2. Вход по метке
Зачем метка
У бота обычно уже есть сценарий для обычного /start. Если добавить в него ещё и предзапись, люди с рекламы попадут в старый сценарий — например, увидят сообщение о том, что набор прошлого потока закрыт.
Поэтому делается отдельный вход по метке: ссылка вида
t.me/ваш_бот?start=predzapis_7
Номер потока в метке — не формальность. Для следующего потока вы сделаете predzapis_8, и статистика переходов по старым ссылкам не смешается с новой.
Создайте отдельный блок
Новый блок, в поле «Условие» — только метка, соответствие «Полное совпадение». Существующий блок с /start не трогайте.

Настройте выдачу ссылки
В блоке есть поле «Калькулятор». Впишите туда одну строку, подставив свой номер канала:
invite = tg_create_chat_invite_link(ВАШ_НОМЕР_КАНАЛА, 1)
Вместо ВАШ_НОМЕР_КАНАЛА подставьте число из прошлого шага — вместе со знаком минус, без кавычек. Выглядеть будет примерно так: (-100…, 1).
Единица в конце означает «ссылка на одного человека».

Напишите текст сообщения
В тексте обязательно используйте переменную #{invite} — в неё подставляется созданная ссылка. Без неё человек получит сообщение без ссылки.
Пример:
Вы записаны на седьмой поток.
Ваша личная ссылка в закрытый канал «Название канала»:
#{invite}
Потеряете канал — напишите мне слово КАНАЛ, пришлю вход заново.
Последняя строка важнее, чем кажется, — почему, в следующей части.
Часть 3. Что делать, когда человек потерял канал
Это случится обязательно. Люди листают список чатов, не помнят названий каналов и приходят в бота с вопросом «а где канал?».
Сразу две ловушки.
Первая. Ссылка, по которой человек уже вошёл, больше не работает. Если он нажмёт на неё повторно, увидит ошибку и растеряется.
Вторая, менее очевидная. Если просто выдавать ему новую одноразовую ссылку, она останется неизрасходованной — ведь он уже в канале, и вступления не происходит. Такую живую ссылку можно переслать кому угодно, и посторонний войдёт в канал мимо вашей воронки.
Решение: блок с ключевыми словами и двумя кнопками
Создайте блок, который ловит обращения про канал. В условии — несколько слов через точку с запятой, соответствие «По наличию ключевых слов»:
канал; ссылка; вступить; предзапись; не могу зайти
Именно «по наличию», а не «полное совпадение»: человек напишет «не могу найти канал», а не голое слово «канал».

Поле «Калькулятор» в этом блоке оставьте пустым — здесь ссылка не создаётся.
Добавьте две кнопки.
Кнопка «Открыть канал» — с заполненным адресом вида:
https://t.me/c/ВАШ_НОМЕР_БЕЗ_МИНУС_100/1
Это внутренняя ссылка канала. Возьмите номер канала, отбросьте -100 в начале и допишите /1 в конце. Например, из номера -100987654321 получится адрес, оканчивающийся на 987654321/1. Особенность такой ссылки — она открывает канал только тому, кто уже в нём состоит. Переслать её бессмысленно: посторонний не попадёт.

Кнопка «Я ещё не подписался» — поле адреса пустое. Она ведёт не на сайт, а в следующий блок бота.

Это самая частая ошибка при настройке: заполнить адрес у обеих кнопок. Вторая тогда просто перестанет работать.
И обязательно напишите в сообщении название канала словами — часть людей после этого найдёт его поиском и больше не вернётся с этим вопросом.
Третий блок: новая ссылка для тех, кто ещё не подписался
Кнопка «Я ещё не подписался» ведёт в отдельный блок. Он устроен почти так же, как первый, — в нём снова создаётся одноразовая ссылка.
Создайте новый блок и заполните три вещи.
Условие — текст кнопки, слово в слово:
Я ещё не подписался
Соответствие — «Полное совпадение». Когда человек нажимает кнопку, боту приходит ровно тот текст, который на ней написан. Если условие и надпись на кнопке разойдутся хотя бы одной буквой или в одной из них будет «е» вместо «ё», нажатие ни во что не попадёт, и человек не получит ответа.
Калькулятор — та же строка, что в первом блоке:
invite = tg_create_chat_invite_link(ВАШ_НОМЕР_КАНАЛА, 1)
Сообщение — с переменной #{invite}:
Вот новая ссылка в канал «Название канала»:
#{invite}
Она работает один раз и только для вас.
Кнопки в этом блоке не нужны.
Почему ссылка создаётся именно здесь
Может показаться, что проще выдавать новую ссылку сразу во втором блоке, без всякой развилки. Но тогда её получали бы и те, кто уже в канале — а у такого человека ссылка не израсходуется: вступления не происходит, он и так внутри. Она останется рабочей, её можно переслать, и посторонний войдёт в канал мимо вашей воронки.
Разделение на два блока это закрывает: ссылка, способная кого-то впустить, достаётся только тому, кто сам сказал, что ещё не подписан. А он заинтересован использовать её сам — иначе останется без канала и придёт за новой.
Тем, кто уже внутри, достаётся внутренняя ссылка из предыдущего шага — она никого не впускает и потому безопасна при пересылке.
Часть 4. Счётчики в Launch Stats
Теперь сделаем так, чтобы каждый шаг считался сам.
В Launch Stats откройте «Воронку» и у нужного этапа выберите источник «Вебхук (ссылка для бота)». Нажмите «Сохранить».

После сохранения рядом с выпадающим списком появится значок копирования — по нему копируется ссылка этого этапа. У каждого этапа она своя, привязать один вебхук к двум этапам нельзя.

Этап «Старт в боте»
Вернитесь в блок с меткой predzapis_7, откройте вкладку «API-запрос» и заполните:
- Тип запроса: GET
- URL запроса: ссылка этапа, а в конце допишите
?client_id=#{platform_id}
Остальные поля не трогайте.

Про client_id — это важно. #{platform_id} — идентификатор человека в Телеграме. Launch Stats запоминает его и при повторном обращении тем же идентификатором этап второй раз не засчитывает. Без этого хвоста человек, дважды нажавший «Старт», посчитается как два человека, и конверсия будет врать.
Проверка бессрочная и отдельная по каждому этапу: вернётся через месяц — всё равно останется одной единицей.
Этап «Вступил в канал»
Этот этап честнее считать по факту вступления, а не по числу выданных ссылок: часть людей ссылку получает, но в канал так и не заходит.
Создайте новый блок. В поле «Условие» нажмите «Конструктор условий» → вкладка «Мессенджеры» → Telegram → в списке выберите «Добавлен новый пользователь (new_chat_member)» → «Заменить условие».

Соответствие — «Полное совпадение»: это служебное событие, а не живой текст, нечёткое сравнение здесь только добавит ложных срабатываний.
Поле сообщения оставьте пустым. Блок срабатывает на событие внутри канала, и если в нём будет текст, бот начнёт публиковать его в канале при каждом вступлении.
Во вкладке «API-запрос» — ссылка этапа «Канал предзаписи», так же с ?client_id=.
Часть 5. Проверка
Проверяйте с телефона, полным путём, а не по отдельности.
- Откройте
t.me/ваш_бот?start=predzapis_7, нажмите «Старт» — должно прийти сообщение со ссылкой - Загляните в воронку: этап «Старт в боте» стал единицей
- Нажмите «Старт» ещё раз — должна остаться единица, а не двойка. Если стало две, значит не подставился
client_id - Войдите по ссылке в канал — этап «Вступил в канал» стал единицей
- Попробуйте открыть ту же ссылку повторно — она уже не работает, это правильно
- Напишите боту «не могу найти канал» — придут две кнопки
- Нажмите «Открыть канал» — канал открывается
Для проверки вступления нужен аккаунт, которого в канале ещё нет. Учтите: владелец канала не может из него выйти — Телеграм не позволяет. Так что попросите кого-то другого или используйте второй аккаунт.
Частые ошибки
Метка добавлена в общее условие рядом с /start. Тогда человек с рекламы попадает в старый сценарий. Нужен отдельный блок.
В сообщении нет #{invite}. Ссылка создаётся, но человек её не видит.
У бота нет права добавлять подписчиков. Ссылки не создаются вообще.
Адрес заполнен у обеих кнопок. Кнопка, ведущая в следующий блок бота, должна иметь пустое поле адреса.
В блоке события есть текст сообщения. Бот начнёт писать его в канал при каждом вступлении.
Забыт ?client_id= в ссылке вебхука. Цифры воронки завышены: один человек считается несколько раз.
Соответствие «Полное совпадение» у блока с ключевыми словами. Сработает только на голое слово, а живые формулировки пройдут мимо.
Что ещё стоит знать
Единица в воронке не снимается, если человек вышел из канала. Воронка фиксирует факт прохождения этапа — из этого считается конверсия. Текущее число подписчиков смотрите в самом Телеграме; разница между цифрами и будет оттоком за время прогрева.
Добровольный выход отследить нельзя. В списке событий есть только «удалён администратором».
Подтверждение вступления и одноразовая ссылка несовместимы. Это ограничение Телеграма: либо ссылка на одного человека, либо заявка с одобрением. Для описанной схемы подтверждение и не нужно — чтобы получить ссылку, надо пройти всю воронку.
Верхние этапы воронки (просмотры роликов, комментарии) настраивать вебхуками не нужно — в Launch Stats для них есть готовые источники, достаточно привязать ролики к нужной воронке в разделе «Контент».