---
title: "Типы событий и поля вебхуков"
description: ""
---

Adapty отправляет вебхуки в ответ на события подписки. В этом разделе описаны типы событий и данные, содержащиеся в каждом вебхуке.
## Типы событий для вебхуков \{#webhook-event-types\}

Вы можете отправлять на вебхук все типы событий или выбрать только нужные. В разделе [Потоки событий](event-flows) описано, какие данные поступают и как строить бизнес-логику на их основе. Ненужные типы событий можно отключить при [настройке интеграции с вебхуком](set-up-webhook-integration#configure-webhook-integration-in-the-adapty-dashboard). Там же можно заменить стандартные идентификаторы событий Adapty на собственные.

| Event name                         | Description                                                                                                                                                                                                                                                                                                                                                                        |
|:-----------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| subscription_started               | Срабатывает, когда пользователь активирует платную подписку без пробного периода, то есть с него сразу списывается оплата.                                                                                                                                                                                                                                                          |
| subscription_renewed               | Происходит при продлении подписки и списании оплаты с пользователя. Это событие фиксируется начиная со второго платежа — как для пробных, так и для обычных подписок.                                                                                                                                                                                                               |
| subscription_renewal_cancelled     | Пользователь отключил автопродление подписки. Доступ к премиум-функциям сохраняется до конца оплаченного периода.                                                                                                                                                                                                                                                                   |
| subscription_renewal_reactivated   | Срабатывает, когда пользователь повторно включает автопродление подписки.                                                                                                                                                                                                                                                                                                           |
| subscription_expired               | Срабатывает, когда подписка полностью завершается после отмены. Например, если пользователь отменил подписку 12 декабря, но она активна до 31 декабря, событие фиксируется 31 декабря, когда подписка истекает.                                                                                                                                                                      |
| subscription_paused                | Происходит, когда пользователь активирует [паузу подписки](https://developer.android.com/google/play/billing/lifecycle/subscriptions#pause) (только Android).                                                                                                                                                                                                                      |
| subscription_deferred              | Срабатывает, когда покупка подписки [откладывается](https://adapty.io/glossary/subscription-purchase-deferral/), — пользователь может перенести платёж, сохраняя доступ к премиум-функциям. Функция доступна через Google Play Developer API и может использоваться для пробных периодов или в поддержку пользователей, испытывающих финансовые трудности. |
| non_subscription_purchase          | Любая покупка без подписки: пожизненный доступ или расходуемые покупки, например внутриигровые монеты.                                                                                                                                                                                                                                                                             |
| trial_started                      | Срабатывает, когда пользователь активирует пробную подписку.                                                                                                                                                                                                                                                                                                                       |
| trial_converted                    | Происходит, когда пробный период заканчивается и с пользователя списывается первый платёж. Например, если пробный период действует до 14 января, но оплата проходит 7 января, событие фиксируется 7 января.                                                                                                                                                                         |
| trial_renewal_cancelled            | Пользователь отключил автопродление подписки в течение пробного периода. Доступ к премиум-функциям сохраняется до конца пробного периода, но оплата не будет списана и подписка не активируется.                                                                                                                                                                                    |
| trial_renewal_reactivated          | Происходит, когда пользователь повторно включает автопродление подписки в течение пробного периода.                                                                                                                                                                                                                                                                                |
| trial_expired                      | Срабатывает, когда пробный период заканчивается без перехода в подписку.                                                                                                                                                                                                                                                                                                           |
| entered_grace_period               | Происходит, когда попытка оплаты завершается неудачей и пользователь переходит в льготный период (если он включён). В течение этого времени доступ к премиум-функциям сохраняется.                                                                                                                                                                                                 |
| billing_issue_detected             | Срабатывает при возникновении проблемы с оплатой во время попытки списания (например, недостаточно средств на карте).                                                                                                                                                                                                                                                               |
| subscription_refunded              | Срабатывает при возврате средств за подписку (например, через службу поддержки Apple).                                                                                                                                                                                                                                                                                             |
| non_subscription_purchase_refunded | Срабатывает при возврате средств за покупку без подписки.                                                                                                                                                                                                                                                                                                                          |
| access_level_updated               | Происходит при обновлении уровня доступа пользователя.                                                                                                                                                                                                                                                                                                                             |
## Структура событий вебхука \{#webhook-event-structure\}

Adapty отправляет только те события, которые вы выбрали в разделе **Events names** на странице [Integrations -> Webhooks](https://app.adapty.io/integrations/customwebhook).
Вебхук-события сериализуются в формате JSON. Тело `POST`-запроса к вашему серверу будет содержать сериализованное событие, обёрнутое в структуру, описанную ниже. Все события следуют одной и той же структуре, однако их поля различаются в зависимости от типа события, стора и вашей конфигурации. Атрибуты пользователя — это [пользовательские атрибуты](setting-user-attributes#custom-user-attributes), которые вы настроили, поэтому они содержат именно то, что вы сконфигурировали. Поля данных атрибуции одинаковы для всех типов событий, однако список атрибуций зависит от того, какие источники атрибуции вы используете в мобильном приложении. Ниже приведён пример события:
```json title="Json" showLineNumbers
{
  "profile_id": "00000000-0000-0000-0000-000000000000",
  "customer_user_id": "UserIdInYourSystem",
  "idfv": "00000000-0000-0000-0000-000000000000",
  "idfa": "00000000-0000-0000-0000-000000000000",
  "advertising_id": "00000000-0000-0000-0000-000000000000",
  "profile_install_datetime": "2000-01-31T00:00:00.000000+0000",
  "user_agent": "ExampleUserAgent/1.0 (Device; OS Version) Browser/Engine",
  "email": "john.doe@company.com",
  "event_type": "subscription_started",
  "event_datetime": "2000-01-31T00:00:00.000000+0000",
  "event_properties": {
    "store": "play_store",
    "currency": "USD",
    "price_usd": 4.99,
    "profile_id": "00000000-0000-0000-0000-000000000000",
    "cohort_name": "All Users",
    "environment": "Production",
    "price_local": 4.99,
    "base_plan_id": "b1",
    "developer_id": "onboarding_placement",
    "ab_test_name": "onboarding_ab_test",
    "ab_test_revision": 1,
    "paywall_name": "UsedPaywall",
    "proceeds_usd": 4.2315,
    "variation_id": "00000000-0000-0000-0000-000000000000",
    "purchase_date": "2024-11-15T10:45:36.181000+0000",
    "store_country": "AR",
    "event_datetime": "2000-01-31T00:00:00.000000+0000",
    "proceeds_local": 4.2415,
    "tax_amount_usd": 0,
    "transaction_id": "0000000000000000",
    "net_revenue_usd": 4.2415,
    "profile_country": "AR",
    "paywall_revision": "1",
    "profile_event_id": "00000000-0000-0000-0000-000000000000",
    "tax_amount_local": 0,
    "net_revenue_local": 4.2415,
    "vendor_product_id": "onemonth_no_trial",
    "profile_ip_address": "10.10.1.1",
    "consecutive_payments": 1,
    "rate_after_first_year": false,
    "original_purchase_date": "2000-01-31T00:00:00.000000+0000",
    "original_transaction_id": "0000000000000000",
    "subscription_expires_at": "2000-01-31T00:00:00.000000+0000",
    "profile_has_access_level": true,
    "profile_total_revenue_usd": 4.99,
    "promotional_offer_id": null,
    "store_offer_category": null,
    "store_offer_discount_type": null
  },
  "event_api_version": 1,
  "profiles_sharing_access_level": [{"profile_id": "00000000-0000-0000-0000-000000000000", "customer_user_id": "UserIdInYourSystem"}],
   "attributions": {
    "appsflyer": {
      "ad_set": "Keywords 1.12",
      "status": "non_organic",
      "channel": "Google Ads",
      "ad_group": null,
      "campaign": "Social media influencers - Rest of the world",
      "creative": null,
      "created_at": "2000-01-31T00:00:00.000000+0000"
    }
  },
  "user_attributes": {"Favourite_color": "Violet", "Pet_name": "Fluffy"},
  "integration_ids": {"firebase_app_instance_id": "val1", "branch_id": "val2", "one_signal_player_id": "val3"},
  "play_store_purchase_token": {
    "product_id": "product_123",
    "purchase_token": "token_abc_123",
    "is_subscription": true
  }
}
```
### Поля событий \{#event-fields\}

Параметры события одинаковы для всех типов событий.
| **Поле** | **Тип** | **Описание** |
|---|---|---|
| **advertising_id** | UUID | Advertising ID (только Android). |
| **attributions** | JSON | [Данные атрибуции](webhook-event-types-and-fields#attributions). Включается, если в [настройках вебхука](https://app.adapty.io/integrations/customwebhook) включён параметр **Send Attribution**. |
| **customer_user_id** | String | ID пользователя из вашего приложения (UUID, email или другой идентификатор), если вы задали его в коде приложения при [идентификации пользователей](ios-quickstart-identify). Если пользователи не идентифицируются или конкретный пользователь анонимен (не вошёл в систему), поле равно `null`. |
| **email** | String | Email пользователя, если вы передали его через метод [`updateProfile`](setting-user-attributes) в Adapty SDK или при создании/обновлении профилей через server-side API. Если значение `email` не передаётся в SDK или API, поле равно `null`. |
| **event_api_version** | Integer | Версия Adapty API (текущая: `1`). |
| **event_datetime** | ISO 8601 | Временная метка события в формате [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) (например, `2020-07-10T15:00:00.000000+0000`). |
| **event_properties** | JSON | [Свойства события](webhook-event-types-and-fields#event-properties). |
| **event_type** | String | Название события в формате Adapty. Полный список см. в разделе [Типы событий вебхука](webhook-event-types-and-fields#webhook-event-types). |
| **idfa** | UUID | Advertising ID (только Apple). **IDFA** в профиле в [дашборде Adapty](https://app.adapty.io/profiles/users). Может быть `null`, если недоступен из-за ограничений отслеживания, детского режима или настроек конфиденциальности. |
| **idfv** | UUID | Identifier for Vendors (IDFV), уникальный для каждого разработчика. **IDFV** в профиле в [дашборде Adapty](https://app.adapty.io/profiles/users). |
| **integration_ids** | JSON | Идентификаторы интеграций пользователя, если вы задали их через метод `setIntegrationIdentifier` в Adapty SDK или при создании/обновлении профилей через server-side API. `null`, если недоступны или интеграции отключены. |
| **play_store_purchase_token** | JSON | [Токен покупки Play Store](webhook-event-types-and-fields#play-store-purchase-token). Включается, если в [настройках вебхука](https://app.adapty.io/integrations/customwebhook) включён параметр **Send Play Store purchase token**. |
| **profile_id** | UUID | ID профиля, автоматически генерируемый Adapty для каждого профиля. Один Apple/Google ID может быть связан с разными profile ID, если пользователи не идентифицируются или покупки совершаются до входа в систему. [Подробнее о том, как Adapty работает с родительскими и дочерними профилями](how-profiles-work#parent-and-inheritor-profiles). |
| **profile_install_datetime** | ISO 8601 | Временная метка установки в формате [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) (например, `2020-07-10T15:00:00.000000+0000`). |
| **profiles_sharing_access_level** | JSON | Список пользователей, [имеющих общий доступ к уровню доступа](general#6-sharing-paid-access-between-user-accounts), за исключением текущего профиля. Если совместный доступ включён для вашего приложения, в список входят другие профили, привязанные к тому же Apple/Google ID.<br/>Формат: <ul><li>**profile_id**: (UUID) Adapty ID</li><li>**customer_user_id**: (String) Customer User ID, если указан</li></ul> |
| **user_agent** | String | User-agent браузера устройства. |
| **user_attributes** | JSON | Пользовательские данные для обогащения профилей информацией, специфичной для приложения. Обычно используются для отслеживания предпочтений пользователя (например, тема, язык) или флагов поведения (завершение онбординга, использование функций). <br/>Представлены в виде пар ключ-значение, где ключи — строки, а значения могут быть строками или числами (например, `{"Favourite_color": "Violet", "Pet_name": "Fluffy"}`). <br/>Вы можете задавать пользовательские атрибуты вручную в дашборде Adapty для отдельных профилей, программно с помощью метода `updateProfile` в Adapty SDK или через server-side API при создании/обновлении профилей. <br/>Включается, если в [настройках вебхука](https://app.adapty.io/integrations/customwebhook) включён параметр **Send User Attributes**. <p>Хотя в коде мобильного приложения значения пользовательских атрибутов можно задавать как float или string, атрибуты, полученные через server-side API или исторический импорт, могут поступать в других форматах. В таких случаях булевые и целочисленные значения будут преобразованы в float.</p> |
### Атрибуция \{#attributions\}

Чтобы передавать данные атрибуции, включите опцию **Send Attribution** на странице [Integrations -> Webhooks](https://app.adapty.io/integrations/customwebhook). Если вы включили передачу данных атрибуции и настроили [интеграции атрибуции](attribution-integration), приведённые ниже данные будут отправляться вместе с событием для каждого источника. Одни и те же данные атрибуции отправляются для всех типов событий.
```json title="Json" showLineNumbers
{
  "attributions": {
    "appsflyer": {
      "ad_set": "sample_ad_set_123",
      "status": "non_organic",
      "channel": "sample_channel",
      "ad_group": "sample_ad_group_456",
      "campaign": "sample_ios_campaign",
      "creative": "sample_creative_789",
      "created_at": "2000-01-31T00:00:00.000000+0000",
      "network_user_id": "0000000000000-0000000"
    }
  }
}

```
| Название поля | Тип поля | Описание |
| :------------------ | :------------ | :------------------------------------------------- |
| **ad_set**          | String        | Рекламный набор атрибуции.                         |
| **status**          | String        | Может быть `organic`, `non_organic,` или `unknown`. |
| **channel**         | String        | Название маркетингового канала.                    |
| **ad_group**        | String        | Рекламная группа атрибуции.                        |
| **campaign**        | String        | Название маркетинговой кампании.                   |
| **creative**        | String        | Ключевое слово креатива атрибуции.                 |
| **created_at**      | ISO 8601 date | Дата и время создания записи атрибуции.            |
| **network_user_id** | String        | ID пользователя, присвоенный источником атрибуции. |
### Идентификаторы интеграций \{#integration-ids\}

Следующие идентификаторы интеграций используются в событиях:

- `adjust_device_id`
- `airbridge_device_id`
- `amplitude_device_id`
- `amplitude_user_id`
- `appmetrica_device_id`
- `appmetrica_profile_id`
- `appsflyer_id`
- `branch_id`
- `facebook_anonymous_id`
- `firebase_app_instance_id`
- `mixpanel_user_id`
- `pushwoosh_hwid`
- `one_signal_player_id`
- `one_signal_subscription_id`
- `tenjin_analytics_installation_id`
- `posthog_distinct_user_id`
### Токен покупки Play Store \{#play-store-purchase-token\}

Это поле содержит все данные, необходимые для повторной валидации покупки. Оно отправляется только если в [настройках интеграции вебхука](https://app.adapty.io/integrations/customwebhook) включена опция **Send Play Store purchase token**.
| Поле                | Тип     | Описание                                                     |
| :------------------ | :------ | :----------------------------------------------------------- |
| **product_id**      | String  | Уникальный идентификатор продукта (SKU), купленного в Play Store. |
| **purchase_token**  | String  | Токен, сгенерированный Google Play для уникальной идентификации транзакции покупки. |
| **is_subscription** | Boolean | Указывает, является ли купленный продукт подпиской (`true`) или разовой покупкой (`false`). |
### Свойства событий \{#event-properties\}

Свойства событий могут различаться в зависимости от типа события и даже между событиями одного типа. Например, событие из App Store не будет содержать Android-специфичных свойств, таких как `base_plan_id`.
Событие [Access Level Updated](webhook-event-types-and-fields#for-access-level-updated-event) имеет особые свойства, поэтому мы выделили для него отдельный раздел. Аналогично, мы вынесли [Дополнительные свойства событий для налогов и выручки](webhook-event-types-and-fields#additional-tax-and-revenue-event-properties) в отдельный раздел, поскольку они характерны только для определённых типов событий.

#### Для большинства типов событий \{#for-most-event-types\}
Свойства событий для большинства типов событий одинаковы (за исключением события **Access Level Updated**, которое описано в отдельном разделе). Ниже приведена таблица со всеми свойствами с указанием того, к каким именно событиям они относятся.
| Поле                          | Тип           | Описание                                                                                                                                                                                                                                                                                                                                                                          |
|:------------------------------|:--------------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **ab_test_name**              | String        | Название [A/B-теста Adapty](ab-tests), в рамках которого была совершена транзакция.                                                                                                                                                                                                                                                                                               |
| **ab_test_revision**          | Integer       | Ревизия A/B-теста, в рамках которого была совершена транзакция.                                                                                                                                                                                                                                                                                                                   |
| **base_plan_id**              | String        | [Идентификатор базового плана](https://support.google.com/googleplay/android-developer/answer/12154973) в Google Play Store или [идентификатор цены](https://docs.stripe.com/products-prices/how-products-and-prices-work#use-products-and-prices) в Stripe.                                                                                                                       |
| **cancellation_reason**       | String        | <p>Возможные причины отмены: `voluntarily_cancelled`, `billing_error`, `price_increase`, `product_was_not_available`, `refund`, `cancelled_by_developer`, `new_subscription_replace`, `upgraded`, `unknown`, `adapty_revoked`.</p><p>Присутствует в следующих типах событий:</p>`subscription_cancelled`, `subscription_refunded` и `trial_cancelled`.                            |
| **cohort_name**               | String        | Название [аудитории](audience), на основании которой пользователю был показан пейвол.                                                                                                                                                                                                                                                                                             |
| **consecutive_payments**      | Integer       | Количество периодов, в течение которых пользователь непрерывно подписан. Включает текущий период.                                                                                                                                                                                                                                                                                 |
| **currency**                  | String        | Локальная валюта.                                                                                                                                                                                                                                                                                                                                                                 |
| **developer_id**              | String        | Идентификатор [плейсмента](placements), в рамках которого была совершена транзакция.                                                                                                                                                                                                                                                                                              |
| **environment**               | String        | Возможные значения: `Sandbox` или `Production`.                                                                                                                                                                                                                                                                                                                                   |
| **event_datetime**            | ISO 8601 date | Дата и время события. Совпадает со значением на корневом уровне события.                                                                                                                                                                                                                                                                                                          |
| **original_purchase_date**    | ISO 8601 date | Для возобновляемых подписок первоначальная покупка — это первая транзакция в цепочке; её идентификатор (original transaction ID) связывает все последующие продления. Дата первоначальной покупки — это дата и время этой первой транзакции.                                                                                                                                        |
| **original_transaction_id**   | String        | <p>Для возобновляемых подписок — исходный идентификатор транзакции, который связывает цепочку продлений. Первоначальная транзакция является первой в цепочке; последующие транзакции представляют собой её продления.</p><p>Если продлений не было, `original_transaction_id` совпадает с `store_transaction_id`.</p>                                                               |
| **paywall_name**              | String        | Название пейвола, в рамках которого была совершена транзакция.                                                                                                                                                                                                                                                                                                                    |
| **paywall_revision**          | String        | Ревизия пейвола, в рамках которого была совершена транзакция. Значение по умолчанию: 1.                                                                                                                                                                                                                                                                                           |
| **price_local**               | Float         | Цена продукта до удержания комиссии Apple/Google в локальной валюте.                                                                                                                                                                                                                                                                                                              |
| **price_usd**                 | Float         | Цена продукта до удержания комиссии Apple/Google в USD.                                                                                                                                                                                                                                                                                                                           |
| **profile_country**           | String        | Определяется Adapty на основании IP-адреса профиля.                                                                                                                                                                                                                                                                                                                               |
| **profile_event_id**          | UUID          | Уникальный идентификатор события, который можно использовать для дедупликации.                                                                                                                                                                                                                                                                                                    |
| **profile_has_access_level**  | Boolean       | Булево значение, указывающее, есть ли у профиля активный уровень доступа.                                                                                                                                                                                                                                                                                                         |
| **profile_id**                | UUID          | Идентификатор профиля, сгенерированный Adapty. Совпадает со значением на корневом уровне события.                                                                                                                                                                                                                                                                                 |
| **profile_ip_address**        | String        | IP-адрес профиля (может быть IPv4 или IPv6; IPv4 используется при наличии). `null`, если параметр **Collect users' IP addresses** отключён в [настройках приложения](https://app.adapty.io/settings/general).                                                                                                                                                                     |
| **profile_total_revenue_usd** | Float         | Общий доход по профилю с учётом вычета возвратов.                                                                                                                                                                                                                                                                                                                                 |
| **promotional_offer_id**      | String        | Идентификатор Adapty для использованного [promotional offer](offers). Этот идентификатор задаётся при создании оффера в дашборде.                                                                                                                                                                                                                                                 |
| **purchase_date**             | ISO 8601 date | Дата и время покупки продукта.                                                                                                                                                                                                                                                                                                                                                    |
| **rate_after_first_year**     | Boolean       | Булево значение, указывающее, что подписка соответствует условиям сниженной ставки комиссии (как правило, 15%) после одного года непрерывного продления. Ставки комиссии варьируются в зависимости от участия в программе и страны. Подробнее см. в разделе [Store commission and taxes](controls-filters-grouping-compare-proceeds#store-commission-and-taxes).                    |
| **store**                     | String        | Стор, в котором был куплен продукт. Стандартные значения: **app_store**, **play_store**, **stripe**, **paddle**. <br/>Если транзакции задаются через [серверный API](api-adapty/operations/setTransaction) с помощью пользовательских параметров стора, используется значение из параметра **store**.                                                                               |
| **store_country**             | String        | Страна, переданная нам магазином приложений.                                                                                                                                                                                                                                                                                                                                      |
| **store_offer_category**      | String        | Применённая категория оффера. Возможные значения: `introductory`, `promotional`, `winback`.                                                                                                                                                                                                                                                                                       |
| **store_offer_discount_type** | String        | Применённый тип оффера. Возможные значения: `free_trial`, `pay_as_you_go` и `pay_up_front`.                                                                                                                                                                                                                                                                                       |
| **subscription_expires_at**   | ISO 8601 date | Дата окончания подписки. Как правило, в будущем.                                                                                                                                                                                                                                                                                                                                  |
| **transaction_id**            | String        | Уникальный идентификатор транзакции.                                                                                                                                                                                                                                                                                                                                              |
| **trial_duration**            | String        | Продолжительность пробного периода в днях. Передаётся в формате «{} days», например «7 days». Присутствует только в типах событий, связанных с пробным периодом: `trial_started`, `trial_converted`, `trial_cancelled`.                                                                                                                                                            |
| **variation_id**              | UUID          | Уникальный идентификатор пейвола, на котором была совершена покупка.                                                                                                                                                                                                                                                                                                              |
| **vendor_product_id**         | String        | Идентификатор продукта в Apple App Store, Google Play Store или Stripe.                                                                                                                                                                                                                                                                                                           |
#### Дополнительные свойства событий, связанные с налогами и выручкой \{#additional-tax-and-revenue-event-properties\}

Перечисленные ниже свойства событий, связанные с налогами и выручкой, — это дополнительные поля, которые применяются только к определённым типам событий. Это означает, что указанные типы событий включают [свойства событий для большинства типов событий](webhook-event-types-and-fields#for-most-event-types), а также дополнительные поля, перечисленные ниже.

Типы событий, которые содержат свойства, связанные с налогами и выручкой:

- `subscription_renewed`
- `subscription_initial_purchase`
- `subscription_refunded`
- `non_subscription_purchase`
| Поле                  | Тип   | Описание                                                     |
| :-------------------- | :---- | :----------------------------------------------------------- |
| **net_revenue_local** | Float | Чистая выручка (доход после вычета комиссии Apple/Google и налогов) в местной валюте. |
| **net_revenue_usd**   | Float | Чистая выручка (доход после вычета комиссии Apple/Google и налогов) в USD. |
| **proceeds_local**    | Float | Цена продукта после вычета комиссии Apple/Google в местной валюте. |
| **proceeds_usd**      | Float | Цена продукта после вычета комиссии Apple/Google.            |
| **tax_amount_local**  | Float | Сумма удержанного налога в местной валюте.                   |
| **tax_amount_usd**    | Float | Сумма удержанного налога в USD.                              |
#### Для события Access Level Updated \{#for-access-level-updated-event\}

Событие **Access Level Updated** — это специальное webhook-событие, которое генерируется только при активной интеграции Webhook и включённом типе данного события. Если оно включено, то отправляется на настроенный Webhook и отображается в **Event Feed**. Если не включено — событие не создаётся.

Если вы включили [совместное использование уровней доступа](general#6-sharing-paid-access-between-user-accounts), событие **access level updated** будет отправлено для всех профилей, которые используют этот уровень доступа.
:::tip
Используйте это событие для обновления уровня доступа пользователя в вашей базе данных, предоставления или отзыва премиум-функций на вашем бэкенде, а также для синхронизации доступа между устройствами и платформами.
:::
| Свойство | Тип | Описание |
| ---------------------------------- | ------------- | ------------------------------------------------------------ |
| **ab_test_name** | String | Название A/B-теста, в рамках которого была совершена транзакция. |
| **access_level_id** | String | Идентификатор уровня доступа. |
| **activated_at** | ISO 8601 date | Дата и время последней активации доступа. |
| **active_introductory_offer_type** | String | Тип применённого introductory offer. Возможные значения: `free_trial`, `pay_as_you_go` и `pay_up_front`. |
| **active_promotional_offer_id** | String | Идентификатор promotional offer, указанный в разделе Product дашборда Adapty. |
| **active_promotional_offer_type** | String | Тип применённого promotional offer. Возможные значения: `free_trial`, `pay_as_you_go` и `pay_up_front`. |
| **base_plan_id** | String | [Идентификатор базового плана](https://support.google.com/googleplay/android-developer/answer/12154973) в Google Play Store или [идентификатор цены](https://docs.stripe.com/products-prices/how-products-and-prices-work#use-products-and-prices) в Stripe. |
| **billing_issue_detected_at** | ISO 8601 date | Дата и время возникновения проблемы с оплатой. |
| **cancellation_reason** | String | Возможные причины отмены: `voluntarily_cancelled`, `billing_error`, `price_increase`, `product_was_not_available`, `refund`, `cancelled_by_developer`, `new_subscription_replace`, `upgraded`, `unknown`, `adapty_revoked`. |
| **cohort_name** | String | Название аудитории, к которой принадлежит профиль. |
| **currency** | String | Местная валюта (по умолчанию USD). |
| **developer_id** | String | Идентификатор плейсмента, в рамках которого была совершена транзакция. |
| **environment** | String | Возможные значения: `Sandbox` или `Production`. |
| **event_datetime** | ISO 8601 date | Дата и время события. |
| **expires_at** | ISO 8601 date | Дата и время истечения доступа. |
| **is_active** | Boolean | Признак активности уровня доступа. |
| **is_in_grace_period** | Boolean | Признак того, что профиль находится в льготном периоде. |
| **is_lifetime** | Boolean | Признак того, что уровень доступа является пожизненным. |
| **is_refund** | Boolean | Признак того, что транзакция является возвратом средств. |
| **original_purchase_date** | ISO 8601 date | Для повторяющихся подписок первоначальная покупка — это первая транзакция в цепочке; её идентификатор (original transaction ID) связывает все последующие продления. Дата первоначальной покупки — это дата и время этой первой транзакции. |
| **original_transaction_id** | String | <p>Для повторяющихся подписок это идентификатор исходной транзакции, связывающий всю цепочку продлений. Исходная транзакция — первая в цепочке; последующие являются её продолжением.</p><p>Если продлений не было, `original_transaction_id` совпадает со `store_transaction_id`.</p>Идентификатор транзакции первоначальной покупки. |
| **paywall_name** | String | Название пейвола, в рамках которого была совершена транзакция. |
| **paywall_revision** | String | Ревизия пейвола, в рамках которого была совершена транзакция. Значение по умолчанию — 1. |
| **profile_country** | String | Определяется Adapty на основе IP-адреса профиля. |
| **profile_event_id** | UUID | Уникальный идентификатор события, который можно использовать для дедупликации. |
| **profile_has_access_level** | Boolean | Признак того, что у профиля есть активный уровень доступа. |
| **profile_id** | UUID | Внутренний идентификатор профиля пользователя в Adapty. |
| **profile_ip_address** | String | IP-адрес пользователя. |
| **profile_total_revenue_usd** | Float | Общий доход по профилю с учётом возвратов. |
| **purchase_date** | ISO 8601 date | Дата и время покупки продукта. |
| **renewed_at** | ISO 8601 date | Дата и время продления доступа. |
| **starts_at** | ISO 8601 date | Дата и время начала действия уровня доступа. |
| **store** | String | Стор, в котором был приобретён продукт. Стандартные значения: **app_store**, **play_store**, **stripe**, **paddle**. <br/>Если вы устанавливаете [транзакции через собственный стор](api-adapty/operations/setTransaction) с помощью серверного API, используется значение из параметра **store**. |
| **store_country** | String | Страна, переданная в Adapty магазином приложений. |
| **subscription_expires_at** | ISO 8601 date | Дата истечения срока действия подписки. |
| **transaction_id** | String | Уникальный идентификатор транзакции. |
| **trial_duration** | String | Длительность пробного периода в днях (например, «7 days»). |
| **variation_id** | UUID | Идентификатор варианта, используемый для атрибуции покупок к данному пейволу. |
| **vendor_product_id** | String | Идентификатор продукта в сторе (Apple/Google/Stripe). |
| **will_renew** | Boolean | Указывает, будет ли платный уровень доступа продлён. |
:::warning
Обратите внимание, что эта структура может расширяться со временем — за счёт новых данных, которые добавляем мы или наши партнёры. Убедитесь, что ваш код, обрабатывающий её, достаточно устойчив и опирается на конкретные поля, а не на всю структуру целиком.
:::