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

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 может отправлять в сторонние интеграции:

Event nameDescription
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 и может использоваться для бесплатных пробных периодов или в поддержку пользователей в сложной финансовой ситуации.
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).
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 приходит один раз за весь срок подписки.