---
title: "Email-адреса назначения в Adapty Mail"
description: "Страница, на которую каждая кампания Adapty Mail отправляет пользователей: три типа назначений, плейсхолдеры для персонализации URL и хук, который заполняет остальное."
---

> **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`

Каждой кампании нужно куда-то отправлять получателей. Это место называется **email-адресом назначения** — сохранённое имя, URL и тип, которые настраиваются один раз и используются повторно в разных кампаниях.

Кампания указывает ровно на один адрес назначения, и каждый кликабельный элемент её писем ведёт туда же: кнопка CTA, логотип и главное изображение. В [аналитике](mail-analytics) они фиксируются отдельно, но адрес у них общий.

## Типы назначений \{#destination-types\}

Тип назначения определяется целью вашей кампании. После создания кампании изменить тип назначения невозможно.

| Тип | Совместимые кампании | Куда переходит получатель | Откуда берётся URL |
| --- | --- | --- | --- |
| **Web Paywall** | Любая маркетинговая кампания и [двойное подтверждение](mail-double-opt-in) | Страница оформления покупки в браузере, где платежи проходят через веб, а не через App Store или Google Play. | Генерируется Adapty Mail или вставляется из пейвола, который вы размещаете самостоятельно. Настройка описана в [Set up checkout](mail-checkout). |
| **Deep Link** | Активация приложения | Ваше приложение на выбранном экране. Если приложение не установлено — страница вашего приложения в сторе. | Вставляется из вашего провайдера диплинков — OneLink, Branch или Firebase. |
| **Cancellation Page** | Кампания страницы отмены | Ваша страница аккаунта или портал платёжного провайдера, где подписчик может просмотреть, изменить или отменить подписку. | Вставляется с вашего сайта или от вашего платёжного провайдера. |

:::note
Любой целевой URL действителен, если он использует HTTPS. Поэтому **Cancellation Page** может быть универсальной ссылкой, открывающей ваше приложение, а не только веб-страницей. Это важно, потому что подписки в App Store и Google Play отменяются в сторе, а не на странице, которую вы размещаете.
:::

### Назначения для транзакционных кампаний \{#destinations-for-transactional-campaigns\}

В Adapty Mail есть три транзакционные кампании:

- **Double opt-in** — срабатывает, когда новый профиль поступает из вашей [точки входа](mail-entry-points). Кнопка в письме открывает страницу подтверждения Adapty Mail. После подтверждения пользователь переходит на ваш веб-пейвол — именно поэтому для этой кампании он необходим.
- **App activation** — следует за покупкой и помогает покупателю войти в приложение.
- **Cancellation page** — следует за покупкой и предоставляет покупателю доступ к управлению подпиской.

Когда вы создаёте кампанию, пустой выпадающий список **Email Destination** означает, что у вас ещё нет назначений такого типа. Ссылка **Create** открывает нужную форму.

## Создайте получателя \{#create-a-destination\}

1. Перейдите в **Email Destinations** и выберите тип, нужный для вашей кампании.
2. Нажмите **Create**.
3. Задайте **Name** получателю — вы будете выбирать его по этому имени при привязке к кампании.
4. Заполните поле **URL**. Адрес должен использовать HTTPS.
5. Добавьте [плейсхолдеры](#placeholders) для значений, которые отличаются у каждого получателя.
6. Если URL использует плейсхолдер `{response.<key>}`, добавьте [**Hook URL**](#hooks) в разделе **Advanced**.
7. Нажмите **Save**.

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

## Плейсхолдеры \{#placeholders\}

Плейсхолдеры персонализируют URL назначения для каждого пользователя. Без них страница не сможет определить, кто на неё перешёл. Adapty Mail заменяет плейсхолдеры значениями, уникальными для каждого получателя.

| Плейсхолдер | Что подставляется |
| --- | --- |
| `{email}` | Адрес электронной почты получателя. |
| `{adapty.external_profile_id}` | ID профиля, для данных из [интеграции Adapty](mail-collect-emails). |
| `{funnelfox.external_profile_id}` | ID профиля, для данных из [FunnelFox](mail-funnelfox). |
| `{custom.external_profile_id}` | ID пользователя, который вы передали, для данных из [Adapty Mail API](mail-send-data-via-api). |
| `{scheduled_email_id}` | ID письма, содержавшего ссылку. |
| `{custom_attribute.<key>}` | Любой пользовательский атрибут профиля получателя. Ключ задаёте вы сами — `{custom_attribute.plan}`. |
| `{response.<key>}` | Значение, которое возвращает ваш эндпоинт в момент клика. Подробнее в разделе [Хуки](#hooks). |

- Плейсхолдер, для которого у получателя нет значения, возвращает пустую строку — так что буквальный текст не попадёт на страницу.
- Значения пользовательских атрибутов и хуков кодируются в percent-encoding, поэтому значение, содержащее `&`, не разорвёт URL пополам.
- Плейсхолдер, который Adapty Mail не распознаёт, блокирует сохранение — при этом в ошибке указывается и что именно было отклонено, и что допустимо. Опечатка вроде `{emial}` будет поймана здесь, а не в браузере получателя.

## Хуки \{#hooks\}

Плейсхолдер `{response.<key>}` резервирует место для значения, которое приходит с вашего собственного эндпоинта. Типичные сценарии использования: one-time токен входа или подпись сессии. Чтобы задействовать этот плейсхолдер, создайте новый **Hook URL** в разделе **Advanced** — иначе URL не сохранится.

Как это работает:

1. Получатель нажимает на ссылку в письме.
2. Adapty Mail отправляет GET-запрос на ваш **Hook URL** с подставленными плейсхолдерами для этого получателя. Ожидание — пять секунд, одна попытка.
3. Ваш эндпоинт проверяет подпись и возвращает плоский JSON-объект.
4. Adapty Mail подставляет каждый `{response.<key>}` из ключа с тем же именем. Ключ, который вы не вернули, остаётся плейсхолдером.
5. Получатель попадает на вашу страницу — независимо от того, ответил ли хук.

### Запрос

URL хука передаёт остальные плейсхолдеры на ваш эндпоинт. Используйте их для идентификации пользователя. Два заголовка аутентифицируют запрос:

| Заголовок | Значение |
| --- | --- |
| `X-Adapty-Mail-Timestamp` | Unix-время в секундах — момент отправки запроса. |
| `X-Adapty-Mail-Signature` | Hex HMAC-SHA256 от `<timestamp>.<url>`, подписанный **Secret key** из **Settings** > **Project**. |

Проверяйте оба заголовка перед ответом. Эндпоинт без проверки подписи может передать конфиденциальные данные неавторизованным пользователям. Отклоняйте запросы с временной меткой, слишком старой для реального клика:

```
expected = hmac_sha256(
    key=project_secret_key,
    message=f"{timestamp}.{full_request_url}",
).hexdigest()
```

### Ответ \{#the-response\}

Плоский JSON-объект. Каждый ключ заполняет `{response.<key>}` с тем же именем:

```json
{ "checkout_token": "ct_9f2a…", "plan": "annual" }
```

Строки, числа и булевы значения преобразуются в строки. Вложенные объекты и массивы игнорируются, так как URL не имеет места для их размещения.

## Что происходит после клика \{#what-happens-after-the-click\}

Adapty Mail подставляет значения, вызывает хук (если он есть), фиксирует клик и отправляет получателя на вашу страницу.

Ваша задача — идентифицировать посетителя, принять оплату и сообщить о покупке в Adapty. Подробнее о настройке пейвола — в разделе [Настройка чекаута](mail-checkout#what-your-page-has-to-do), а об атрибуции покупок — в разделе [Аналитика кампаний](mail-analytics).