1. Select your app context to configure
As a first step, name your remote configuration and select a context (part of your application) you’d like to manage remotely. Examples of app contexts you may configure with us:- main_paywall: to set up settings for different user segments for your main paywall.
- main_paywall_products: to manage only products remotely.
- onboarding: to set up the entire user onboarding journey.
- onboarding_step_2: to configure only specific steps of the user onboarding flow.
- [your_key]: to set up any part of your user’s monetization experience.

Creating a configuration: name and context key
2. Add attributes for your configuration
Qonversion Remote Config provides you with flexible in-app values using which you can set up any behavior and appearance of your app. The core of these in-app values is a plain JSON file consisting of key-value data. We support the following data types:-
String.
- Use this option to validate pricing, communication, or visual hypothesis.
- Examples: native.subs.full.v4.w.8.99.trial.7d, Unlock Fast and Secure Browsing, #3076FF, etc.
-
Number.
- Use this option, for example, to show only a subset of your onboarding screens.
- Examples: 2, 5, 23, etc.
-
Boolean.
- Use this option to turn on or off some features.
- Examples: true, false
-
Json.
- Use this option to validate advanced changes in your app’s behavior.
- Examples:
{"banner_text": "Choose your plan", "product_top": "native.subs.full.v4.w.8.99.trial.7d", "product_bottom": "subs.month.17.99", "skip_onboarding": true}.

Adding a JSON payload to a configuration
3. Integrate changes into your app
Configuration source
Qonversion Remote Configs and Experiments share single methods to get configurations. You can distinguish the source of the result received by looking at the source field. Learn more about fields available.remoteConfig method.
RemoteConfigList fields description
RemoteConfig fields description
Experiment description
ExperimentGroup description
RemoteConfigurationSource description
Please, note:
- If you’re using the Qonversion Experiments feature, the
remoteConfigobject will also contain experiment-related fields. - Qonversion assigns eligible users to launched experiments once the
remoteConfigis called. We also recommend paying attention to the Segmentation rules for the configuration. For how assignments, caching, and re-evaluation interact, see How targeting and assignment works.
Invalidate the config cache
Responses are cached in memory per context key, so aremoteConfig call may serve a cached copy without a network call. Call invalidateRemoteConfigsCache when the targeting inputs changed and you need the change reflected immediately — for example, after setting a batch of user properties your targeting depends on. The method performs no network request itself; it marks the cached values as stale, so the next remoteConfig / remoteConfigList call fetches a fresh evaluation from the server.
You do not need to call it after identify — the SDK drops the config cache on identity changes automatically. Call it after SDK initialization: calling earlier throws on Android and is a no-op on iOS. For the full caching rules, see When a device fetches a config.
Available since: iOS 6.14.0, Android 9.7.0, React Native 10.11.0, Flutter 11.10.0, Cordova 7.9.0, Capacitor 1.8.0, Unity 9.9.0.
4. Test changes before launch
Please, note, the guide below allows you to test only configurations created through the Remote Config dashboard section. To test configurations from the Experiments section, please, follow the test experimental changes before launch guide.
- Copy the ID for your remote config

Copying the configuration ID from the Details panel
- Pass the values to Qonversion SDK by using the
attachUserToRemoteConfigurationmethod
- In case your user has already been attached to another configuration, use the
detachUserFromRemoteConfigurationmethod.
- Call the Qonversion
remoteConfigmethod. Now Qonversion SDK returns data associated with previously set remote config. - Validate your app logic without launching the configuration.
5. Segment users
Qonversion Remote Config has flexible options to target a desired user segment. Segment users by:- App install date
- Use this option to assign the configuration only to new app installs.
- App version
- Use this option to assign the configuration only for users with the app version with the new features implemented. This is your app’s version name, not its build number —
versionNameon Android (neverversionCode) andCFBundleShortVersionStringon iOS (neverCFBundleVersion). See Matching on app version below.
- Use this option to assign the configuration only for users with the app version with the new features implemented. This is your app’s version name, not its build number —
- Country
- Use this option to run new behavior only in selected countries.
- Store
- Use this option to target only a specific store (Apple App Store or Google Play).
- User’s active subscription
- Use this option to target only users with/without any active subscriptions or having a specific one.
- Purchased product
- Use this option to target users based on their purchase history. You can select specific products or use
(any)to match users who made at least one purchase, or(none)for users with no purchase history. Unlike “Active subscription”, this filter checks all purchases regardless of their current status (active, expired, or cancelled).
- Use this option to target users based on their purchase history. You can select specific products or use
- Last purchase date
- Use this option to target users based on when they made their most recent purchase. For example, you can target users whose last purchase was more than 60 days ago to identify churned users.

Adding a targeting rule to segment users
Matching on app version
The SDK reports the version name your app displays to users —versionName on Android, CFBundleShortVersionString on iOS — and the App version rule compares your value against that. The Android versionCode and the iOS CFBundleVersion build numbers are never sent to Qonversion, so they cannot be targeted directly. If you need to segment by build number, set it as a user property and target it with a User properties rule instead.
The ordering comparators (is greater than, is less than, is in range) compare both sides as semantic versions, so 1.10.0 is correctly greater than 1.9.0. Two cases are worth watching for, because neither reports an error — the rule simply targets the wrong set of users:
- A build number used as the value. A bare number such as
24passes the input validation, but it is then compared against version names like1.8.4— so is greater than matches nobody, and is less than matches everybody. - A version name that is not semver-shaped. If your app reports something like
2.0.9_08042026, it cannot be parsed as a version, and every ordering comparator matches nobody.
MAJOR.MINOR.PATCH format, use is one of / is none of instead — they compare the string exactly and work with any format.
6. Launch the configuration
Once you have added all the necessary properties to your in-app configuration, validated changes in your app, and assigned desired segmentation rules, the only thing left is to click the Create button to move the configuration from Draft to Active state. Active configs are fetched lazily — nothing is downloaded until your code requests a config; see When a device fetches a config.
An active configuration in the Remote Configs list
7. Fallback files (optional)
To enhance the reliability of remote configurations, consider utilizing Qonversion fallback files. These files will serve as a backup in case of network provider errors or system failures, ensuring that your application continues to receive essential data and avoids any downtime. For more information on fallback files and how to install them, please refer to this page.What’s Next