Skip to main content

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 nameDescription
subscription_startedTriggered when a user activates a paid subscription without a trial period, meaning they are billed instantly.
subscription_renewedOccurs 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_cancelledA user has turned off subscription auto-renewal. The user retains access to premium features until the end of the paid subscription period.
subscription_renewal_reactivatedTriggered when a user reactivates subscription auto-renewal.
subscription_expiredTriggered 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_pausedOccurs when a user activates subscription pause (Android only).
non_subscription_purchaseAny non-subscription purchase, such as lifetime access or consumable products like in-game coins.
trial_startedTriggered when a user activates a trial subscription.
trial_convertedOccurs 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_cancelledA 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_reactivatedOccurs when a user reactivates subscription auto-renewal during the trial period.
trial_expiredTriggered when a trial ends without converting to a subscription.
entered_grace_periodOccurs when a payment attempt fails, and the user enters a grace period (if enabled). The user retains premium access during this time.
billing_issue_detectedTriggered when a billing issue occurs during a charge attempt (e.g., insufficient card balance).
subscription_refundedTriggered when a subscription is refunded (e.g., by Apple Support).
non_subscription_purchase_refundedTriggered when a non-subscription purchase is refunded.
access_level_updatedOccurs 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:

  1. trial_started on April 1st
  2. trial_renewal_cancelled on 4th April
  3. trial_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:

  1. trial_started on April 1st
  2. trial_converted on April 7th
  3. subscription_renewal_cancelled on April 10th
  4. subscription_expired on May 1st

For a detailed breakdown of which events are triggered in each scenario, check out the Event flows.