> ## Documentation Index
> Fetch the complete documentation index at: https://docs.botflow.cc/llms.txt
> Use this file to discover all available pages before exploring further.

# Переменные

> Подстановка данных подписчика в текст через {{ name }}: системные переменные, свои и переменные событий трекера.

Переменная это метка, которую бот заменяет на данные конкретного подписчика прямо в момент отправки.
Пишете в тексте `{{ first_name }}`, а подписчик видит своё имя. Один и тот же блок или рассылка приходит
каждому персонально, вручную ничего подставлять не нужно.

Синтаксис у BotFlow это двойные фигурные скобки: `{{ имя_переменной }}`. Пробелы внутри скобок
необязательны, `{{ first_name }}` и `{{first_name}}` работают одинаково. Если вы переходите с Salebot,
где переменные писались как `#{ }`, в BotFlow та же идея записывается через `{{ }}`.

<Info>
  Подстановка работает везде, где вы пишете текст подписчику: в тексте и кнопках блоков
  [Конструктора](/ru/constructor), в условиях блоков и стрелок, в сообщениях оператора в
  [Мессенджере](/ru/messenger) и в тексте [Рассылок](/ru/broadcasts).
</Info>

## Как это выглядит

Допустим, в стартовом блоке написано:

```
Привет, {{ first_name }}! Рады видеть вас снова.
```

Подписчику с именем Анна придёт «Привет, Анна! Рады видеть вас снова.». Если имя у подписчика не
заполнено, скобки просто исчезнут: «Привет, ! Рады видеть вас снова.». Бот никогда не отправляет
буквальный текст `{{ first_name }}`, незаполненная переменная превращается в пустую строку.

## Системные переменные

Эти переменные встроены и доступны всегда, заводить их не нужно. Они собираются из профиля подписчика
в Telegram и из данных его подписки.

| Токен                 | Что подставляет                                  |
| --------------------- | ------------------------------------------------ |
| `{{ first_name }}`    | Имя из профиля Telegram                          |
| `{{ last_name }}`     | Фамилия из профиля Telegram                      |
| `{{ full_name }}`     | Имя и фамилия вместе                             |
| `{{ username }}`      | Юзернейм подписчика в Telegram                   |
| `{{ user_id }}`       | Внутренний ID подписчика в BotFlow               |
| `{{ telegram_id }}`   | ID пользователя в Telegram                       |
| `{{ date_of_birth }}` | Дата рождения в формате дд.мм.гггг               |
| `{{ created_at }}`    | Дата, когда подписчик пришёл в бота, дд.мм.гггг  |
| `{{ tag }}`           | Параметр из ссылки запуска бота (подробнее ниже) |

## Параметр запуска `{{ tag }}`

`{{ tag }}` это значение, с которым подписчик запустил бота. Когда человек открывает ссылку
`t.me/ваш_бот?start=123`, бот запоминает `123`, и его можно подставить через `{{ tag }}`. Значение
фиксируется один раз, при первом входе в бота, и дальше не меняется. Если бота запустили по обычной
ссылке без параметра, `{{ tag }}` пустой.

Это удобно, чтобы развести сценарии по источнику. В [Конструкторе](/ru/constructor) `{{ tag }}` часто
ставят в условие стартового блока: блок срабатывает на `/start;123`, и подписчики с разным параметром
в ссылке попадают в разные ветки воронки.

<Note>
  Если параметр в ссылке это клик из [Трекера](/ru/tracker), он уходит в атрибуцию клика, и `{{ tag }}`
  в таком случае может остаться пустым. Для меток рекламных кампаний используйте `{{ click_id }}` и
  переменные события из таблицы ниже.
</Note>

## Переменные событий трекера

Если подписчик пришёл по ссылке кампании и по нему приходят постбеки, в текст можно подставлять данные
конверсии. Это фиксированный набор полей, они заполняются после того, как по подписчику придёт постбек,
и берутся из его последнего события трекера.

| Токен                     | Что подставляет                                                                       |
| ------------------------- | ------------------------------------------------------------------------------------- |
| `{{ click_id }}`          | Идентификатор клика для партнёрских ссылок и постбеков. Создаётся автоматически       |
| `{{ event.payout }}`      | Сумма выплаты из последнего постбека                                                  |
| `{{ event.currency }}`    | Валюта выплаты                                                                        |
| `{{ event.trader_id }}`   | Идентификатор аккаунта или игрока у партнёра (то, что партнёрка присылает в постбеке) |
| `{{ event.device_type }}` | Тип устройства подписчика                                                             |
| `{{ event.os_version }}`  | Версия операционной системы                                                           |
| `{{ event.link_type }}`   | Тип ссылки, по которой пришёл подписчик                                               |

Значения обновляются по мере поступления постбеков по основным событиям: регистрация (Reg), первый
депозит (FTD), повторный депозит (RD) и вывод (Withdraw).

<Note>
  Событийные переменные заполнены только у подписчиков, по которым уже прошёл постбек. Набор полей выше
  фиксированный: произвольный параметр постбека отдельной переменной не становится. Откуда берутся
  события и как настроить постбеки, читайте в разделе [Трекер](/ru/tracker). Про `{{ click_id }}` в
  ссылках и кнопках есть примеры в [Конструкторе](/ru/constructor).
</Note>

## Свои переменные

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

### Где управляются

Свои переменные живут в разделе бота **Переменные**, он находится в группе меню **Настройка** (там же,
где Конструктор и ИИ-оператор). Раздел доступен ролям от менеджера и выше.

<Steps>
  <Step title="Откройте раздел «Переменные»" icon="code">
    В меню бота выберите группу «Настройка», затем «Переменные». Наверху страницы есть подсказка
    «Подстановка через `{{ name }}` в сообщениях, условиях и рассылках».
  </Step>

  <Step title="Нажмите «Переменная»" icon="plus">
    Кнопка в правом верхнем углу открывает окно создания. Впишите **Имя**: только латиница, цифры и
    подчёркивание, начинать с цифры нельзя. Например `promo_code` или `support_link`.
  </Step>

  <Step title="Задайте значение" icon="pen">
    В поле **Значение по умолчанию** впишите то, что бот будет подставлять. Для глобальной переменной
    это и есть её значение на всего бота.
  </Step>

  <Step title="Оставьте «Глобальная»" icon="globe">
    Галочка **Глобальная** означает одно значение на всего бота. Оставьте её отмеченной.
  </Step>

  <Step title="Вставьте в текст" icon="copy">
    В списке клик по токену `{{ name }}` копирует его в буфер. Вставьте его в текст блока, кнопку,
    условие или рассылку.
  </Step>
</Steps>

<Warning>
  Удаление переменной необратимо: её значение будет потеряно, а токен перестанет подставляться. Сначала
  убедитесь, что он больше нигде не используется в блоках и рассылках.
</Warning>

## Какое значение победит

Если одно имя встречается в нескольких местах, бот подставляет его по строгому приоритету:

1. **Системная переменная.** Встроенные имена вроде `first_name` и `tag` всегда идут первыми.
2. **Своя переменная.** Значение, заданное в разделе «Переменные».
3. **Событие трекера.** `click_id` и `event.*` подставляются, если имя не занято выше.

<Warning>
  Имена переменных нельзя переводить или придумывать. Работают только имена из таблиц выше и те, что вы
  сами завели в разделе «Переменные». `{{ first_name }}` сработает, `{{ имя }}` вернёт пустую строку.
  Придуманные токены вроде `{{ phone }}` или `{{ chat_id }}` тоже дадут пустоту, потому что таких
  переменных не существует. Меняйте только имя внутри скобок, сами скобки `{{ }}` оставляйте как есть.
</Warning>

## Что дальше

<Columns cols={2}>
  <Card title="Конструктор воронок" icon="diagram-project" href="/ru/constructor">
    Где подставлять переменные в текст, кнопки и условия блоков.
  </Card>

  <Card title="Рассылки" icon="paper-plane" href="/ru/broadcasts">
    Персональные массовые сообщения по тегам и сегментам подписчиков.
  </Card>

  <Card title="Мессенджер" icon="comments" href="/ru/messenger">
    Как оператор пишет подписчику, подстановка работает и здесь.
  </Card>

  <Card title="Трекер" icon="chart-line" href="/ru/tracker">
    Кампании и постбеки, которые наполняют `click_id` и `event.*`.
  </Card>
</Columns>
