Skip to main content
You can analyze the impact of context-specific revenue experiments exclusively on the users who made purchases inside the specific context. Qonversion enables this with advanced purchase configurations. For instance, you want to analyze the performance of your onboarding process for your onboarding right away, without including revenue from other screens in the experiment.
Swift
let purchaseOptions = Qonversion.PurchaseOptions(contextKeys: ["mainOnboarding"])

Qonversion.shared().purchaseProduct(product, options: purchaseOptions) { (entitlements, error, isCancelled) in  
  // handle result here
}
Objective-C
QONPurchaseOptions *purchaseOptions = [[QONPurchaseOptions alloc] initWithContextKeys:@[@"mainOnboarding"]];
[[Qonversion sharedInstance] purchaseProduct:product
                                     options:purchaseOptions
                                  completion:^(NSDictionary<NSString *,QONEntitlement *> * _Nonnull entitlements,
                                               NSError * _Nullable error,
                                               BOOL cancelled) {
  // handle result here
}];
Java
final QPurchaseOptions purchaseOptions = new QPurchaseOptions.Builder()
        .setContextKeys(Arrays.asList("mainOnboarding"))
        .build();
Qonversion.getSharedInstance().purchase(
    this,
    product,
    purchaseOftions,
    new QonversionEntitlementsCallback() {
        @Override
        public void onSuccess(@NotNull Map<String, QEntitlement> entitlements) {
            // handle result here
        }

        @Override
        public void onError(@NotNull QonversionError error) {
            // Handle error here
        }
		}
);
Kotlin
val purchaseOptions = QPurchaseOptions.Builder()
    .setContextKeys(listOf("mainOnboarding"))
    .build()
Qonversion.shared.purchase(
    this,
    product,
    purchaseOptions,
    callback = object : QonversionEntitlementsCallback {
        override fun onSuccess(entitlements: Map<String, QEntitlement>) {
            // handle result here
        }

        override fun onError(error: QonversionError) {
            // handle error here
        }
    }
)
Flutter
var purchaseOptions = QPurchaseOptionsBuilder()
    .setContextKeys(['mainOnboarding'])
    .build();
var entitlements = await Qonversion.getSharedInstance().purchaseProduct(
    product,
    purchaseOptions: purchaseOptions
);
React Native
const purchaseOptions = new PurchaseOptionsBuilder()
  .setContextKeys(['mainOnboarding'])
  .build();
const entitlements = await Qonversion.getSharedInstance().purchaseProduct(product, purchaseOptions);
Unity
var purchaseOptions = new PurchaseOptionsBuilder()
    .SetContextKeys(new List<string> {"mainOnboarding"})
    .Build();
Qonversion.GetSharedInstance().PurchaseProduct(product, purchaseOptions, (entitlements, error, isCancelled) =>
{
    // handle result here
});
Cordova
const purchaseOptions = new Qonversion.PurchaseOptionsBuilder()
  .setContextKeys(['mainOnboarding'])
  .build();
const entitlements = await Qonversion.getSharedInstance().purchaseProduct(product, purchaseOptions);
Capacitor
const purchaseOptions = new PurchaseOptionsBuilder()
  .setContextKeys(['mainOnboarding'])
  .build();
const entitlements = await Qonversion.getSharedInstance().purchaseProduct(product, purchaseOptions);