События для сторонних интеграций

Apple и Google сообщают о событиях подписки напрямую на серверы Adapty — через App Store Server Notifications и Real-time Developer Notifications. Именно так вы узнаёте, что пользователь совершил покупку, продлил или отменил подписку.

Чтобы отправлять эти события дальше, настройте назначение в Adapty. У сторонних платформ — MMP, аналитики, мессенджеров — есть собственные страницы интеграции. Ваш бэкенд получает события через вебхук.

У каждого события одинаковая структура, хотя набор полей зависит от типа события, стора и ваших настроек. В типах и полях событий вебхука описана структура вебхук-пейлоада, а в каждой статье об интеграции — формат, в котором события получает конкретное назначение. В статусах событий объясняется, как читать статус доставки.

Примеры

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

Пользователь отменяет подписку в период пробного периода

Пользователь активировал ежемесячную подписку 1 апреля с 7-дневным пробным периодом. На 4-й день он отписался.

В этом случае будут отправлены следующие события:

  1. trial_started 1 апреля
  2. trial_renewal_cancelled 4 апреля
  3. trial_expired 7 апреля

Пользователь отменяет подписку после конвертации

Пользователь активировал ежемесячную подписку 1 апреля с 7-дневным пробным периодом. На 10-й день он отписался.

В этом случае будут отправлены следующие события:

  1. trial_started 1 апреля
  2. trial_converted 7 апреля
  3. subscription_renewal_cancelled 10 апреля
  4. subscription_expired 1 мая

Подробную разбивку того, какие события срабатывают в каждом сценарии, смотрите в разделе Флоу событий.

Список событий

Вы можете управлять тем, какие события получает каждая интеграция. Большинство событий доступны для всех интеграций, кроме трёх:

  • Access level updated срабатывает только если настроена интеграция с вебхуком и этот тип события включён. Событие появляется в Event Feed и отправляется в вебхук, но другие интеграции его не получают. Если интеграция с вебхуком не настроена или тип события не включён, Adapty вообще не создаёт это событие, и оно не появляется в Event Feed.
  • Trial still active и Subscription still active — это синтетические события, и только часть интеграций их получает.

В следующей таблице перечислены все события, которые Adapty может отправлять в сторонние интеграции:

Название событияОписание
subscription_startedСрабатывает, когда пользователь активирует платную подписку без пробного периода — то есть с немедленным списанием.
subscription_activeПодтверждает, что подписка всё ещё активна после события subscription_started. Вы задаёте количество дней между началом подписки и этой проверкой. Событие приходит, если подписка активна, в том числе когда пользователь вошёл в льготный период. Если к моменту проверки подписка завершилась или пользователь отключил автопродление, событие не поступает и Adapty больше не проверяет. Событие относится только к подпискам, оформленным без пробного периода. Конвертация триала отправляет trial_converted, которое проверку не запускает.
subscription_renewedПроисходит при продлении подписки и списании средств. Фиксируется начиная со второго платёжного периода — как для подписок с пробным периодом, так и без него.
subscription_renewal_cancelledПользователь отключил автопродление подписки. Доступ к премиум-функциям сохраняется до конца оплаченного периода.
subscription_renewal_reactivatedСрабатывает, когда пользователь снова включает автопродление подписки.
subscription_expiredСрабатывает, когда подписка полностью завершается после отмены. Например, если пользователь отменил подписку 12 декабря, но она оставалась активной до 31 декабря, событие фиксируется 31 декабря, когда подписка истекает.
subscription_pausedПроисходит, когда пользователь активирует паузу подписки (только Android).
subscription_deferredСрабатывает, когда вы бесплатно продлеваете подписку пользователя: через отсрочку по Google Play Developer API или через продление даты продления по App Store Server API. Доступ к премиум-функциям сохраняется до новой даты продления.
non_subscription_purchaseЛюбая разовая покупка: пожизненный доступ или расходуемая покупка, например внутриигровая валюта.
trial_startedСрабатывает, когда пользователь активирует пробную подписку.
trial_activeПодтверждает, что триал всё ещё активен после события trial_started. Вы задаёте количество дней между началом триала и этой проверкой. Событие приходит, если триал ещё идёт. Если к моменту проверки триал завершился или конвертировался, либо пользователь отключил автопродление, событие не поступает и Adapty больше не проверяет.
trial_convertedПроисходит, когда триал завершается и с пользователя списываются средства (первая оплата). Например, если у пользователя триал до 14 января, но списание происходит 7 января, событие фиксируется 7 января.
trial_renewal_cancelledПользователь отключил автопродление подписки во время пробного периода. Доступ к премиум-функциям сохраняется до конца триала, но списания не будет и подписка не оформится.
trial_renewal_reactivatedПроисходит, когда пользователь снова включает автопродление подписки во время пробного периода.
trial_expiredСрабатывает, когда триал завершается без конвертации в подписку.
entered_grace_periodПроисходит, когда попытка списания не удаётся и пользователь входит в льготный период (если он включён). На это время доступ к премиум-функциям сохраняется.
billing_issue_detectedСрабатывает при ошибке оплаты во время попытки списания (например, недостаточно средств на карте).
subscription_refundedСрабатывает при возврате средств за подписку (например, по запросу в Apple Support).
non_subscription_purchase_refundedСрабатывает при возврате средств за разовую покупку.
access_level_updatedПроисходит при изменении уровня доступа пользователя.

Синтетические события

Большинство событий запускается при каком-либо изменении — покупке, продлении, отмене. События Trial still active и Subscription still active работают иначе. Вы задаёте таймер, и когда он срабатывает, Adapty проверяет статус триала или подписки. Если триал или подписка не завершились, Adapty отправляет соответствующее событие.

Эти синтетические события доступны для Adjust, Amplitude, AppMetrica, AppsFlyer, Branch, Facebook Analytics, Firebase, Mixpanel, OneSignal, PostHog, Singular, SplitMetrics и вебхука. Их нужно включить вручную.

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

Отключение события останавливает создание новых таймеров. Уже запущенные таймеры срабатывают по истечении времени, поэтому назначение может продолжать получать событие на протяжении всей настроенной задержки.

Note

Adapty Attribution предлагает аналогичную функцию для кампаний Meta и TikTok: Qualified trials удерживают событие пробного периода на 1–24 часа. trial_active ждёт от 1 часа до 90 дней. Оба варианта не отправляют событие, если пользователь отключил автопродление. Они настраиваются в разных местах и не влияют друг на друга.

Пробный период всё ещё активен

  • Интеграция: AppsFlyer
  • Событие: Trial still active
  • Задержка: 3 дня
  • Начало пробного периода: 1 апреля
  • Конец пробного периода: 7 апреля

AppsFlyer получает:

  1. trial_started 1 апреля
  2. trial_active 4 апреля
  3. trial_converted 7 апреля

Обратите внимание:

  • Поскольку пробный период был конвертирован, событие subscription_active вы не получите никогда.
  • Если бы задержка была установлена на 7 дней, событие trial_active вообще не пришло бы — к тому моменту пользователь уже совершил конвертацию.

Подписка по-прежнему активна

  • Интеграция: Webhook
  • Событие: Subscription still active
  • Задержка: 7 дней
  • Начало подписки: 1 апреля, без пробного периода
  • Продление: 1 мая

Webhook получает:

  1. subscription_started 1 апреля
  2. subscription_active 8 апреля
  3. subscription_renewed 1 мая
Note
  • Подписка должна начаться без пробного периода. Конвертированная пробная подписка отправляет trial_converted, который не запускает таймер.
  • Если пользователь отключил автопродление 3 апреля, subscription_active не придёт, даже если доступ действует до 1 мая.
  • Майское продление не запускает второй таймер. subscription_active приходит один раз за весь срок подписки.