Events to send to 3d-party integrations
Apple and Google send subscription events directly to servers via App Store Server Notifications and Real-time Developer Notifications (RTDN). As a result, mobile apps cannot reliably send events to analytics systems in real time. For example, if a user subscribes but never reopens the app, the developer won't receive any subscription status updates without a server.
Adapty bridges this gap by collecting subscription data and converting it into human-readable events. These integration events are sent in JSON format. While all events share the same structure, their fields vary depending on the event type, store, and specific configuration. You can find the exact fields included in each event on the respective integration pages.
To understand how to determine whether an event was successfully processed or if something went wrong, check the Event statuses page.
Event types
Most events are created and sent to all configured integrations if they’re enabled. However, the Access level updated event only triggers if the webhook integration is configured and this event is enabled. This event will appear in the Event Feed and will also be sent to the webhook, but it won’t be shared with other integrations.
If a webhook integration isn’t configured or this event type isn’t enabled, the Access level updated event won’t be created and won’t appear in the Event Feed.
Event name | Description |
---|---|
subscription_started | Triggered when a user activates a paid subscription without a trial period, meaning they are billed instantly. |
subscription_renewed | Occurs when a subscription is renewed and the user is charged. This event starts from the second billing, whether it's a trial or non-trial subscription. |
subscription_renewal_cancelled | A user has turned off subscription auto-renewal. The user retains access to premium features until the end of the paid subscription period. |
subscription_renewal_reactivated | Triggered when a user reactivates subscription auto-renewal. |
subscription_expired | Triggered when a subscription fully ends after being canceled. For instance, if a user cancels a subscription on December 12th but it remains active until December 31st, the event is recorded on December 31st when the subscription expires. |
subscription_paused | Occurs when a user activates subscription pause (Android only). |
non_subscription_purchase | Any non-subscription purchase, such as lifetime access or consumable products like in-game coins. |
trial_started | Triggered when a user activates a trial subscription. |
trial_converted | Occurs when a trial ends and the user is billed (first purchase). For example, if a user has a trial until January 14th but is billed on January 7th, this event is recorded on January 7th. |
trial_renewal_cancelled | A user turned off subscription auto-renewal during the trial period. The user retains access to premium features until the trial ends but will not be billed or start a subscription. |
trial_renewal_reactivated | Occurs when a user reactivates subscription auto-renewal during the trial period. |
trial_expired | Triggered when a trial ends without converting to a subscription. |
entered_grace_period | Occurs when a payment attempt fails, and the user enters a grace period (if enabled). The user retains premium access during this time. |
billing_issue_detected | Triggered when a billing issue occurs during a charge attempt (e.g., insufficient card balance). |
subscription_refunded | Triggered when a subscription is refunded (e.g., by Apple Support). |
non_subscription_purchase_refunded | Triggered when a non-subscription purchase is refunded. |
access_level_updated | Occurs when a user's access level is updated. |
The events above fully cover the users' state in terms of purchases. Let's look at some examples.
Example 1
The user activated a monthly subscription on April 1st with a 7-day trial. On the 4th day, he unsubscribed.
In that case, the following events will be sent:
trial_started
on April 1sttrial_renewal_cancelled
on 4th Apriltrial_expired
on 7th April
Example 2
The user activated a monthly subscription on April 1st with a 7-day trial. On the 10th day, he unsubscribed.
In that case, the following events will be sent:
trial_started
on April 1sttrial_converted
on April 7thsubscription_renewal_cancelled
on April 10thsubscription_expired
on May 1st
For a detailed breakdown of which events are triggered in each scenario, check out the Event flows.