# Запуск Customer Journey с помощью API-based Entry

API-based Entry позволяет запускать Customer Journey в момент наступления определенного бизнес-события. Чтобы запустить кампанию, необходимо отправить специальный API-запрос.


## Настройка

1. Создайте Journey с элементом API-based Entry

<video src="/customer-journey-api-based-entry-1.webm" alt="Интерфейс Customer Journey Builder, показывающий, как создать новый Journey с элементом API-based Entry" autoplay loop muted playsinline />

2. Дважды щелкните по шагу API-based Entry. Откроется окно настройки входа.

3. Вы можете изменять содержимое пуш-уведомлений и email-сообщений при каждом запуске Journey, используя плейсхолдеры контента. Значение каждого плейсхолдера можно изменить в запросе. Если вам не нужна эта опция, вы можете пропустить этот шаг.

> Например, вы создаете Journey для уведомления подписчиков о выходе нового эпизода подкаста. С помощью плейсхолдера контента вы можете изменять название подкаста при каждом запуске Journey.

Сначала добавьте имена плейсхолдеров в окне настройки API-based Entry. Вы можете использовать любые удобные для вас имена.

<video src="/customer-journey-api-based-entry-2.webm" alt="Окно настройки API-based Entry, показывающее, как добавить имена плейсхолдеров для динамического контента" autoplay loop muted playsinline />

Теперь создайте [пресет](/ru/product/content/presets/) для пуш-уведомления или email-сообщения и вставьте плейсхолдер вместо текста, который вы хотите изменить. В зависимости от ваших потребностей плейсхолдер должен иметь один из следующих форматов:

* `{placeholder_name|format_modifier|}` – если значение плейсхолдера не указано при запуске кампании, пользователи увидят на его месте пустое пространство.
* `{placeholder_name|format_modifier}` – если значение плейсхолдера не указано и еще не было присвоено пользователю (в случае, если вы использовали Tag в качестве плейсхолдера), сообщение не будет отправлено.

<details>

<summary>Модификаторы формата</summary>

* CapitalizeFirst – делает заглавной первую букву в значении плейсхолдера;
* CapitalizeAllFirst – делает заглавными первые буквы всех слов в значении плейсхолдера, если значение состоит из нескольких слов;
* UPPERCASE – переводит все буквы в верхний регистр;
* lowercase – переводит все буквы в нижний регистр;
* regular – вставляет значение плейсхолдера в точности так, как оно указано в запросе, без изменений.

</details>

<img src="/customer-journey-api-based-entry-3.webp" alt="Редактор пресетов для пуш-уведомлений, показывающий пример синтаксиса плейсхолдера с модификаторами формата в содержимом сообщения"/>

<Aside type="note">
Вы также можете использовать существующее имя Tag вместо имени плейсхолдера. В этом случае вам необходимо настроить перезапись значения этого Tag значением, указанным в запросе, как описано ниже.
</Aside>

При настройке шага Push или Email в вашем Journey выберите созданный пресет и включите опцию **Персонализировать сообщение с помощью атрибутов события**. Выберите плейсхолдеры, которые вы хотите изменять в запросе при запуске Journey. В качестве источника выберите **API-based Entry**, а в качестве динамического атрибута — имя плейсхолдера:

<video src="/customer-journey-api-based-entry-4.webm" title="Настройка шага Push или Email, показывающая опцию 'Персонализировать сообщение с помощью атрибутов события' и выбор источника API-based Entry" autoplay loop muted playsinline />

Нажмите **Применить**, чтобы сохранить изменения.

4\. В окне настройки входа скопируйте шаблон запроса, чтобы изменить его:

<img src="/customer-journey-api-based-entry-5.webp" alt="Окно настройки API-based Entry, отображающее шаблон API-запроса с форматом заголовка авторизации"/>
<Aside>
Чтобы запустить Journey через API, вы должны включить действительный токен авторизации в заголовок Authorization.

**Требуемый формат заголовка**

 ```http
 Authorization: Api <your_api_token>
 ```
 **Пример**

 ```http
 Authorization: Api c8dc6435-xxxxxxxxxxxxxxx
 ```
</Aside>

5. Добавьте фильтры аудитории в параметр `filter`, используя [язык сегментации](/ru/developer/api-reference/segmentation-filters-api/segmentation-language/). Обратите внимание, что вам необходимо заранее настроить нужные [теги](/ru/developer/guides/audience-and-segmentation/tags/).

Например, если вы хотите нацелить Journey на пользователей, которые добавили товар _Socks_ в свой _Wishlist_, значение `filter` должно выглядеть следующим образом:

```
    "filter": "A("12345-12345") * "T("Wishlist", EQ, "Socks")"
```

В этом примере у вас должен быть настроен Tag _Wishlist_ в вашем приложении.

<Aside type="note">
Код вашего приложения будет автоматически добавлен в параметр `filter` в формате `A(\"12345-12345\")`. Пожалуйста, не удаляйте и не изменяйте его.

Также имейте в виду, что кавычки ("") и обратные слэши (\\) должны быть экранированы обратным слэшем (\\) в JSON-запросах.
</Aside>

6. Если вы настроили плейсхолдеры, укажите желаемое содержимое в качестве их значений:

<img src="/customer-journey-api-based-entry-6.webp" alt="Шаблон API-запроса, показывающий настройку значений плейсхолдеров для динамического контента при запуске Journey"/>

7. Если включена опция **Ограничения скорости отправки сообщений**, количество пользователей, одновременно входящих в Journey каждую секунду, будет ограничено. Вы можете использовать значение по умолчанию 5000 пользователей в секунду или установить другое число.

<img src="/customer-journey-api-based-entry-7.webp" alt="Настройка API-based Entry, показывающая опцию 'Ограничения скорости отправки сообщений' со значением по умолчанию 5000 пользователей в секунду"/>

<Aside type="tip">
Мы рекомендуем поддерживать значение в диапазоне от 5000 до 10000 пользователей в секунду. Если значение слишком низкое, вашей аудитории может потребоваться больше времени для входа в Journey. Если значение слишком высокое, сервис, обрабатывающий ваши данные, может быть перегружен.
</Aside>

8. Если вы планируете часто перезапускать кампанию и не хотите, чтобы одни и те же пользователи входили в Journey несколько раз, установите [ограничение частоты](/ru/product/customer-journey/journey-settings#frequency-capping).

> Например, вы создали кампанию для уведомления пользователей о снижении цены на определенный товар. Вы хотите перезапустить Journey несколько раз, отправив несколько запросов с разными фильтрами аудитории. В этом случае вы можете добавить ограничение частоты, чтобы уведомление не отправлялось повторно пользователям, которые соответствуют нескольким фильтрам.

9. Если вы хотите, чтобы Journey запускался всякий раз, когда происходит определенное бизнес-событие, автоматизируйте запрос с помощью вебхука. Как только событие произойдет, вебхук должен автоматически отправить запрос на запуск Journey.

Вы также можете отправить запрос вручную, если вам не нужна автоматизация.

<Aside type="note">
* Если вы измените условия сегментации при отправке нового запроса, это не повлияет на пользователей, которые уже вошли в Journey.
* Если вы измените содержимое сообщения при отправке нового запроса, все пользователи получат новую версию сообщения (включая тех, кто уже вошел в Journey, но еще не получил это сообщение).
</Aside>