События для отправки в сторонние интеграции
Apple и Google отправляют события подписок напрямую на серверы через App Store Server Notifications и Real-time Developer Notifications (RTDN). Из-за этого мобильные приложения не могут надёжно отправлять события в аналитические системы в реальном времени. Например, если пользователь оформил подписку, но больше не открывал приложение, разработчик не получит никаких обновлений о статусе подписки без сервера.
Adapty решает эту проблему: собирает данные о подписках и преобразует их в понятные человеку события. Эти события для интеграций отправляются в формате JSON. Все события имеют одинаковую структуру, но набор полей зависит от типа события, стора и конкретных настроек. Точный список полей для каждого события можно найти на страницах соответствующих интеграций.
Чтобы понять, было ли событие успешно обработано или что-то пошло не так, ознакомьтесь со страницей Статусы событий.
Типы событий
Большинство событий создаются и отправляются во все настроенные интеграции, если они включены. Однако событие Access level updated срабатывает только в том случае, если настроена интеграция с вебхуком и это событие включено. Оно будет отображаться в Event Feed и отправляться в вебхук, но не будет передаваться в другие интеграции.
Если интеграция с вебхуком не настроена или данный тип события не включён, событие Access level updated не будет создаваться и не появится в Event Feed.
| Event name | Description |
|---|---|
| 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-й день он отменил подписку.
В этом случае будут отправлены следующие события:
trial_started1 апреляtrial_renewal_cancelled4 апреляtrial_expired7 апреля
Пример 2
Пользователь активировал месячную подписку 1 апреля с 7-дневным пробным периодом. На 10-й день он отменил подписку.
В этом случае будут отправлены следующие события:
trial_started1 апреляtrial_converted7 апреляsubscription_renewal_cancelled10 апреляsubscription_expired1 мая
Подробное описание того, какие события срабатывают в каждом сценарии, можно найти в разделе Потоки событий.