Skip to main content
Wire Qonversion into the Appstack SDK to attribute subscriptions and revenue to the install and ad campaign that drove them. With the Qonversion integration, you can:
  • Use Qonversion subscription events to run enhanced app campaigns.
  • See trials, subscriptions, renewals and refunds next to the install and the campaign that drove them.

Requirements

PlatformAppstack SDKQonversion call
iOS4.3.1 or latersetCustomUserProperty
Android1.0.0 or latersetCustomUserProperty
React Nativereact-native-appstack-sdk 0.0.19 or latersetCustomUserProperty
Flutterappstack_plugin 0.0.13 or latersetCustomUserProperty
UnityAny versionSetCustomUserProperty
Custom user properties are supported by every Qonversion SDK. On iOS, getAppstackId() returns a stable ID even before the Appstack SDK is configured from version 4.3.1.

Connect to Qonversion

1

SDK configuration

Set the Appstack ID as a Qonversion custom user property named appstack_id. Do it on every app start, right after Qonversion is configured, with the value from getAppstackId(). Appstack uses it to link each Qonversion event to the install, and the campaign, that produced it.
The property key must be exactly appstack_id: any other key breaks attribution.
2

Copy the credentials

In the Appstack console, open the Integrations page of your project and select Qonversion. In the Credentials section, copy the Webhook URL and the Authorization token.
3

Paste the credentials

In Qonversion, create a webhook. Paste the Webhook URL into the Webhook URL field and the Authorization token into the Header Authorization-Token Value field.
The integration shows an error if less than 50% of the events received over the last 24 hours include an Appstack ID.

Test with sandbox events

After the integration is connected, Qonversion sends sandbox events to Appstack automatically. You do not need any extra configuration. Sandbox events show only on the SDK page in the Development environment, so they never mix with your production data.
  1. Make a sandbox purchase. Install a build of your app that includes the integration, then start a trial or make a purchase with a sandbox account, such as an App Store sandbox tester or a Google Play license tester.
  2. Open the Development environment. In Appstack, select SDK from the side menu, make sure the correct application is selected, then select the Development environment.
  3. Check the event. Find the Qonversion event in the list, for example qo_trial_started. This confirms that events reach Appstack. Open View parameters and confirm that the event contains the appstack_id.

List of events

Below is a list of events you can forward to ad networks and analytics tools to optimize your campaigns.
NameDefinition
qo_trial_startedFired when a user begins a free trial.
qo_trial_qualifiedFired when a free trial is still active two hours after it started, meaning the user did not cancel within the qualification window.
qo_trial_convertedFired when a free trial converts to a paid subscription, on the first renewal after the trial ends.
qo_intro_startedFired when a user begins an intro offer: a paid trial at a discounted price. Triggered when a subscription starts with the intro period type.
qo_trial_intro_startedFired when either a free trial (qo_trial_started) or an intro offer (qo_intro_started) starts. The event triggers as soon as one of these conditions is met.
qo_trial_intro_qualifiedFired when a free trial or an intro offer is still active two hours after it started.
qo_initial_purchaseFired when a free trial, an intro offer or a full-price subscription starts. The event triggers as soon as one of these conditions is met.
qo_initial_purchase_qualifiedFired when a free trial qualifies (qo_trial_qualified) or a paid subscription starts, intro offers included. The event triggers as soon as one of these conditions is met.
qo_subscription_startedFired when a user starts a paid subscription at full price, with no trial or intro offer involved.
qo_subscription_renewedFired on each successful renewal of an active subscription. Indicates the user was billed again and remains subscribed for another period.
Last modified on October 1, 2026