События для отправки в сторонние интеграции

Apple и Google отправляют события подписок напрямую на серверы через App Store Server Notifications и Real-time Developer Notifications (RTDN). Из-за этого мобильные приложения не могут надёжно отправлять события в аналитические системы в реальном времени. Например, если пользователь оформил подписку, но больше не открывал приложение, разработчик не получит никаких обновлений о статусе подписки без сервера.

Adapty решает эту проблему: собирает данные о подписках и преобразует их в понятные человеку события. Эти события для интеграций отправляются в формате JSON. Все события имеют одинаковую структуру, но набор полей зависит от типа события, стора и конкретных настроек. Точный список полей для каждого события можно найти на страницах соответствующих интеграций.

Чтобы понять, было ли событие успешно обработано или что-то пошло не так, ознакомьтесь со страницей Статусы событий.

Типы событий

Большинство событий создаются и отправляются во все настроенные интеграции, если они включены. Однако событие Access level updated срабатывает только в том случае, если настроена интеграция с вебхуком и это событие включено. Оно будет отображаться в Event Feed и отправляться в вебхук, но не будет передаваться в другие интеграции.

Если интеграция с вебхуком не настроена или данный тип события не включён, событие Access level updated не будет создаваться и не появится в Event Feed.

Event nameDescription
subscription_startedСрабатывает, когда пользователь активирует платную подписку без пробного периода, то есть с него сразу списывается оплата.
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_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Происходит при обновлении уровня доступа пользователя.

Перечисленные выше события полностью описывают состояние пользователей с точки зрения покупок. Рассмотрим несколько примеров.

Пример 1

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

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

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

Пример 2

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

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

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

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