---
title: "Кастомные теги"
description: "Передайте значение из вашего приложения во флоу и отобразите его в текстовом элементе."
---

> **AI agents**: to search Adapty docs faster and with fewer tokens, install the Adapty skill. Claude Code (self-updating via plugin): `claude plugin marketplace add adaptyteam/adapty-skills && claude plugin install adapty-skills@adapty` — other tools: `npx skills add adaptyteam/adapty-skills --all`

Кастомный тег — это [кастомная переменная](onboarding-variables#custom-variables), значение которой берётся из вашего приложения. После того как вы выберете **Value comes from outside the app** в настройках переменной, приложение может задать её значение через Adapty SDK. Например, текстовый элемент содержит «Coins:» и кастомный тег. Если приложение передаёт «120» для этого тега, пользователи видят «Coins: 120».

Используйте кастомные теги, чтобы показывать:

- **Кто это за пользователь**: имя пользователя в приветствии, например «С возвращением, DragonSlayer42!»
- **Что есть у пользователя**: количество дней в серии или уровень игрока.
- **Что вычисляет ваше приложение**: скидка на большой пакет или [ИМТ](ios-flow-custom-tags#example-show-a-bmi-from-onboarding-answers), рассчитанный на основе ответов пользователя в предыдущем флоу.

## Значения и резервные данные \{#values-and-fallbacks\}

Ваше приложение определяет каждое значение по имени кастомного тега. Значение всегда является строкой. Adapty не форматирует и не переводит строку, поэтому приложение должно самостоятельно сделать каждое значение читаемым для пользователя перед отображением во флоу. Например, передавайте "1,250", а не "1250.0".

Пользователи видят **Начальное значение** пользовательского тега как резервное в следующих случаях:

- Ваше приложение не передаёт никакого значения для тега.
- Пользователь не обновил приложение до версии, которая передаёт это значение.
- Имя в коде вашего приложения не совпадает с полным именем тега, включая регистр букв.
- Другой пользовательский тег в том же текстовом элементе не имеет значения. В этом случае каждый пользовательский тег в этом текстовом элементе показывает своё начальное значение.

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

## 1. Создайте пользовательский тег \{#create-a-custom-tag\}

1. Откройте панель Variables Variables во флоу-билдере.
2. Добавьте новую переменную — нажмите Plus.
3. Задайте **Name** переменной. Код приложения должен ссылаться на неё именно так, включая регистр букв.
   - **Символы**: используйте латинские буквы (A–Z и a–z), цифры, `_` и `-`. Чтобы поместить тег в группу, начните имя с названия группы и точки, например `user.streak`.
   - **Зарезервированные имена**: не используйте зарезервированные имена в любом регистре — например, `PRICE`, `TITLE`, `VALUE` или имена, начинающиеся с `TIMER_`.
   - **Уникальность**: имя должно быть уникальным в пределах флоу.
4. (Опционально) Чтобы различать переменные между собой, заполните поле **Description**. При наведении курсора на имя переменной в билдере вы увидите это описание.
5. В поле **Initial value** введите значение по умолчанию, которое пользователи увидят, если приложение не передаст никакого значения:
   - **Слово, подходящее любому пользователю**: для тега `username` в приветствии введите `friend`. Неаутентифицированные пользователи увидят «Welcome back, friend!». Обратите внимание, что начальное значение нельзя локализовать.
   - **Тире для баланса или счётчика**: чтобы не показывать некорректный баланс неаутентифицированным пользователям, введите тире (`—`).

6. (Только для переменных типа **String**) Установите флажок **Value comes from outside the app**. Это действие необратимо и фиксирует **Value Type**.
7. Нажмите **Create variable**.

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

### Замените переменную пользовательским тегом \{#replace-a-variable-with-a-custom-tag\}

Установить флажок **Value comes from outside the app** можно только при создании переменной. Чтобы отображать значение из приложения вместо обычной пользовательской переменной — например, из [конвертированного пейвола](convert-paywall-to-flow) — замените переменную пользовательским тегом:

1. Удалите переменную и все её упоминания во флоу.
2. [Создайте пользовательский тег](#create-a-custom-tag) с тем же именем.
3. [Вставьте пользовательский тег](#add-a-custom-tag-to-a-text-element) в каждый текстовый элемент, в котором использовалась переменная.

## 2. Добавьте пользовательский тег в текстовый элемент \{#add-a-custom-tag-to-a-text-element\}

Выберите текстовый элемент. В разделе **Content** нажмите Variables **Add variable** и выберите тег на вкладке **Custom**.

Пользовательские теги можно вставлять в каждую ветку [условного текста](onboarding-text#add-conditional-text), но нельзя использовать их в условиях **if**.

## 3. Передайте значения из вашего приложения \{#pass-the-values-from-your-app\}

В коде приложения нужно использовать точное имя каждого кастомного тега, включая его группу. Например, если в группе `user` есть тег `streak`, полное имя тега — `user.streak`.

Код настройки зависит от платформы:

- [iOS](ios-flow-custom-tags)
- [Android](android-flow-custom-tags)
- [React Native](react-native-flow-custom-tags)
- [Flutter](flutter-flow-custom-tags)
- [Unity](unity-flow-custom-tags)
- [Kotlin Multiplatform](kmp-flow-custom-tags)
- [Capacitor](capacitor-flow-custom-tags)

Чтобы протестировать пользовательские теги, откройте флоу в своём приложении после добавления кода, который устанавливает их значения. Холст конструктора и [предпросмотр на устройствах](paywall-device-compatibility-preview#preview-on-devices) отображают только начальные значения: мобильное приложение Adapty не устанавливает значения пользовательских тегов.

## Ограничения \{#limitations\}

- **Только текстовые элементы**: Пользовательские теги можно вставлять только в текстовые элементы. Следующие элементы не поддерживаются:
  - Действия **Set variable**
  - Действия **Show alert**
  - Действия **Open URL**
  - Плейсхолдеры полей ввода
- **Условия на пользовательские теги недоступны**: Нельзя использовать пользовательский тег в условии или условной видимости. Чтобы показывать нужные фразы, элементы и экраны в зависимости от значения из приложения:
  - **Фраза**: Сформируйте её в коде приложения и передайте как значение тега. Например, для тега `coins_message` передайте «У вас 120 монет» игрокам с монетами и «Получите первые монеты» остальным.
  - **Элементы и экраны**: [Сохраните значение как пользовательский атрибут](setting-user-attributes). Затем покажите отдельный флоу [аудитории](audience), построенной на основе этого атрибута.
- **Метода SDK для обновления значений в открытом флоу нет**: Чтобы показать результат на основе того, что пользователь ввёл во флоу, передайте результат в следующий флоу — как в [примере с BMI](ios-flow-custom-tags#example-show-a-bmi-from-onboarding-answers).