0 из 51 урока
АкадемияМодуль 3 · урок 3.512 минДля техспеца

Переменные и развилки «а|б»

Воронка отправляет один и тот же блок сотне людей. Переменные делают сообщение адресным — подставляют имя, город, ответ клиента. Развилки {{а|б}} делают его непохожим на соседнее, и это уже не про вежливость: Telegram считает одинаковый текст на десятки адресов рассылкой.

Как работает подстановка

Всё, что стоит в фигурных скобках, CRM заменяет значением в момент отправки блока, а не при запуске воронки: дожим, ушедший через сутки, подставит ответ, который клиент дал за эти сутки.

Имена не нужно помнить наизусть: рядом с полем текста стоит кнопка «{…}» — «Вставить переменную». Она открывает окно с поиском и тремя группами: «Системные», «Переменные школы» (всё, что есть в карточках клиентов и в воронках школы, включая ещё не сохранённую схему) и «Дата и время». Выбранное имя встаёт туда, где стоял курсор. Переменную, которой у школы ещё нет нигде, — например, поле из ответа вебхука, который ни разу не приходил, — набирайте руками, без опечаток.

Блок «Сообщение»: слева схема, справа поле текста, счётчик длины и чипы переменных123
Блок «Сообщение»: слева схема, справа поле текста, счётчик длины и чипы переменных
  1. Ряд над полем текста — форматирование. Кнопка «а|б» ставит развилку вокруг выделенного куска
  2. Под полем — счётчик «осталось … символов». Развилки он считает по самому длинному варианту: в поле лежат все, а уедет один
  3. Переменные вставляются кнопкой «{…}» у поля: окно с поиском, системными именами, переменными школы (здесь {опыт}), датой и временем
  4. В «Старте» на схеме видно развилку {Привет|Здравствуйте} в готовом тексте приветствия

В том же ряду форматирования — кнопка со смайликом и искрой: премиум-эмодзи Telegram. Чтобы они появились в списке, пришлите нужные эмодзи боту школы с аккаунта с Telegram Premium. Анимированными их увидит только клиент бота Telegram, и только если Premium есть у владельца бота; в личке с рабочего номера, MAX, ВКонтакте и других каналах придёт обычный смайл.

Имя, ник, телефон и два разных id

ПеременнаяЧто подставитсяГде ошибаются
{name}только имя — первое слово из Telegram или из карточкиждут полное ФИО — оно в {client} и {fio}
{username}, {тег}обращение: есть публичный ник — @ник, нет — имя клиента, кликабельное и с уведомлениемдумают, что без ника обращение пропадёт. Не пропадёт
{phone}телефон из карточки лидаTelegram телефон не отдаёт: пусто, пока номер не собран воронкой или анкетой
{tg_id}id самого человека в Telegramпутают с местом разговора; для ВКонтакте и MAX есть {messenger_id}, а номер клиента в CRM — {tervio_id}
{chat_id}id разговора: в личке равен {tg_id}, в чате тест-драйва это id группыотдают вебхуку как «кого искать» — тот найдёт группу, а не человека
💡 В группе имя берётся не из названия чата

Название чата тест-драйва — служебная строка вроде «Тест-драйв. Здравствуйте! …», первое слово в ней «Тест-драйв.». Поэтому в группе {name} берётся из карточки лида или из подписи его сообщений: пусто в карточке — пусто в сообщении.

Свои переменные: то, что сказал клиент

  • Ответ клиента — «Сохранить ответ в переменную» на стрелке «Ждать ответа»: «Стрелки: ожидание, время, дожимы».
  • «Вычислить» в блоке «Действия» — значение из других переменных: «Блок «Действия»: этапы, вебхук, событие, команда, переходы, A/B». Формула бывает многострочной: каждая строка вида имя = выражение сама становится переменной.
  • Ответ вебхука — «Сохранить ответ / поля JSON» в действии «Вебхук».
  • Данные события — поля vars из вебхука или «Передать переменные» у действия «Событие».
  • Ссылки, которые выдаёт воронка — «Создать чат», «Доступ к курсу», «Ссылка на оплату» кладут ссылку в переменную с именем, которое вы зададите.
  • Руками в карточке — раздел «Переменные клиента» в правой колонке диалога: «Карточка клиента: ответственный, этапы, воронка».

Часть переменных CRM кладёт сама: {codeword} — кодовое слово, которым запустили воронку; {start_payload} — метка из ссылки запуска бота; {тип_ответа} — чем ответил клиент; {мессенджер} (telegram, max или vk), {id_подключения} и {тип_подключения} — откуда он пишет; {вошёл_в_чат} и {время_входа_в_чат} — вошёл ли он в созданный воронкой чат; {перешёл_по_ссылке} и {время_перехода} — клик по отслеживаемой ссылке. А в карточку клиента, пришедшего в бота по ссылке с меткой, CRM один раз записывает тег_запуска — первую метку, с которой он пришёл («Воронка в боте: кнопки, ссылки запуска, тег запуска, передача в личку»).

Запомните приём с fio: спросили «как вас зовут?», сохранили ответ в fio — и дальше {name} подставляет то, что человек написал сам, а не его подпись в Telegram.

Что будет, если значения нет

  • Имя, телефон, ник и оба id есть у каждого прогона всегда, иногда пустые. Пустое значение оставляет пустое место: «Привет, {name}!» превращается в «Привет, !». Фразу с переменной читают дважды — с ней и без неё.
  • Своя переменная, которой у клиента нет (не дошёл до вопроса), или имя с опечаткой — CRM вырежет скобки целиком и подчистит знаки вокруг: «Привет, {фио}!» уйдёт как «Привет!». Так же в подписи к медиа, в подписи кнопки и в названии чата. Клиент скобок не увидит, но и вы не увидите ошибки: опечатку выдаёт только пропавшее слово.
  • В адресе и теле вебхука незаполненная переменная остаётся как есть, со скобками: так ошибка настройки видна по ответу сервиса, а не теряется.

Имена, которые уже заняты

Часть имён CRM подставляет сама, что бы вы в них ни положили, — занять их нельзя:

  • Везде — в блоках и на стрелках: tg_id, chat_id, client, client_username, client_tg_id, lead_key, тег, codeword, start_payload, тег_запуска, тип_ответа, мессенджер, id_подключения, тип_подключения, адрес_подключения, tervio_id, messenger_id, баланс_баллов, подпись_ссылки. Лист с такой переменной не сохранится — редактор скажет, что имя занято. Читать их в условиях можно.
  • Дополнительно в панели «Переменные клиента»: name, username, phone. Эти значения CRM берёт из Telegram и карточки, и запись под тем же именем не подставится.
  • Имена с подчёркивания в начале — служебные ключи прогона, CRM их тоже не примет.

Нужна своя переменная про id — назовите её так, чтобы не спутать с системной: tg_id_лички.

Дата и время со смещением

Даты не хранятся, а вычисляются при отправке — в часовом поясе листа (шестерёнка в шапке). Формат: ДД.ММ.ГГГГ и ЧЧ:ММ.

  • {дата} — сегодня, {дата+1} — завтра, {дата-1} — вчера.
  • {дата+2нед}, {дата+1мес} — недели и месяцы (месяц считается как 30 дней); без единицы считаются дни.
  • {время} — сейчас, {время+3ч}, {время+30м}; без единицы считаются часы.

Единицы, которой CRM не знает, нет и в тексте: {дата+1год} вырежется, как незнакомая переменная. В дожиме, который сработает через сутки, {дата+1} — это завтра от дня отправки, а не от дня входа в воронку.

Когда дату нужно сохранить или сравнить — срок доступа, день оплаты, — считайте её в «Вычислить»: today(), date_after(365), days_until({доступ_до}), date_rus({доступ_до}) — последняя даёт «5 октября 2027» для текста клиенту. Имена функций пишутся латиницей: на прежнее русское имя редактор подскажет новое.

Развилки: почему сотня одинаковых сообщений — это рассылка

Telegram смотрит не только на количество сообщений, но и на их похожесть. Сотня людей получила текст, совпадающий до буквы, — аккаунт уезжает в спам-фильтр: сообщения либо перестают уходить, либо вычищаются задним числом, и в переписке появляется «удалено Telegram». Живой случай: один текст со ссылкой ушёл за день 96 людям — Telegram убрал его из чатов, у клиентов не осталось ничего, а в CRM сообщения лежали как отправленные.

Лечится это прямо в тексте блока. Варианты пишутся в двойных фигурных скобках через вертикальную черту — двойных потому, что одинарные заняты переменными:

{{Привет|Здравствуйте|Добрый день}}, {name}!
{{Есть минутка?|Удобно сейчас говорить?|}}

Каждому клиенту уходит по одному варианту из каждой развилки. Скобки можно не ставить руками: кнопка «а|б» — крайняя в ряду над полем текста. Выделили кусок фразы — она обернёт его; ничего не выделено — вставит заготовку «вариант 1|вариант 2». Под полем появится строка предпросмотра: сколько получается вариантов и пример одного из них, кнопка ↻ показывает следующий.

  • Пустой вариант разрешён — {{Ждём вас!|}}: иногда фраза есть, иногда нет. Разная длина снижает похожесть не меньше разных слов.
  • Переменные внутри вариантов работают: {{Привет, {name}|Рады видеть, {name}}}.
  • Развилки вкладываются: {{Привет{{!|, друг!}}|Здравствуйте}} — это три варианта, а не четыре.
  • Работает в тексте сообщения, в подписи к медиа и в тексте «Голосового». У дожимов вариант свой на каждой ступени.
  • Скобки без черты — не развилка: {{Привет}} уйдёт как «Привет». Незакрытая развилка уедет как написана.
⚠️ В подписях кнопок развилка не разворачивается

В подписи кнопки переменные подставляются («Да, {name}» работает), а двойные скобки останутся видимым текстом. Варианты пишите в тексте блока, а подписи кнопок держите одинаковыми.

Вариант выбирается по паре «прогон и блок», а не заново на каждую попытку: повторная отправка после обрыва связи пришлёт тот же текст, в историю диалога пишется то, что реально ушло, а новый проход воронки — новый прогон, и вариант выберется заново.

Для первого касания делайте от трёх вариантов и меняйте не одно слово, а структуру фразы: фильтр сравнивает сообщения целиком, поэтому «Привет / Здравствуйте» при одинаковом остатке текста почти ничего не даёт. Работает другое: другой порядок мыслей, другая длина, вопрос в конце или его отсутствие.

🚫 Развилки не заменяют прогрев и паузы

Вариативность снижает похожесть, но не отменяет пределов нагрузки на номер. Сотня сообщений с одного номера за короткое время закончится ограничением при любых развилках — «Прогрев и нагрузка: как не сжечь номер».

💭 От Влада

Развилки мы добавили не ради красоты текста. Школа отправила хорошее предложение почти сотне людей одним текстом; менеджеры видели в CRM отправленные сообщения и молчание в ответ — и правили оффер, цену, аудиторию. Править надо было одно: текст был один на всех и до людей не доехал. Первое сообщение воронки — то место, где я всегда прошу три варианта.

Проверьте себя
  • Знаете, чем {name} отличается от {client} и почему в чате тест-драйва имя берётся из карточки.
  • Можете сказать, чем {tg_id} отличается от {chat_id} и какой из них отдавать вебхуку.
  • Помните, что пустая системная переменная оставляет пустое место, несуществующая своя вырезается из текста, а в вебхуке остаётся со скобками.
  • Назовёте хотя бы три занятых имени и скажете, что будет при попытке их занять.
  • Поставили развилку кнопкой «а|б», увидели под полем число вариантов и пролистали примеры кнопкой ↻.

Дальше — «Блок «Действия»: этапы, вебхук, событие, команда, переходы, A/B»: что воронка умеет кроме отправки сообщений.

Справочник по этому разделуДокументация TERVIO: что делает каждая кнопка на экране.
Урок пройден?Отметка хранится в этом браузере. Дальше — 3.6 «Блок «Действия»: этапы, вебхук, событие, команда, переходы, A/B».
Следующий урок
Предыдущий урок: 3.4 Стрелки: ожидание, время, дожимы