Leverage Remote Config

Create Remote Configs to iterate with your monetization experiments, avoiding extra app releases

The Remote Config feature helps you rapidly iterate with monetization experiments. Follow these steps:

  1. Configure your onboarding flows, paywall UI, or pricing through Qonversion Remote Config
  2. Launch your experiments based on the running configuration
  3. Create a new Remote Config after hypothesis validation is complete
  4. Archive configuration from the step #1
  5. Repeat steps 2-4 without app releases

1. Paywall configuration

By using Qonversion Remote Config, you can configure any part of your paywall (and even more). Moreover, Remote Config and Experiments share the same API & architectural concepts, so you do not need to implement complex logic to use both. Simply:

Test changes before launch

We highly recommend testing if your app works properly with the changes you want to roll out to your users. You can do so by following the following steps:

  1. Copy the ID for your remote config
  1. Pass the values to Qonversion SDK by using the attachUserToRemoteConfiguration method
Qonversion.shared().attachUser(toRemoteConfiguration: "your_remote_configuration_id") { success, error in
     // handle result
}
[[Qonversion sharedInstance] attachUserToRemoteConfiguration:@"your_remote_configuration_id" completion:^(BOOL success, NSError * _Nullable error) {
    // handle result
}];
Qonversion.shared.attachUserToRemoteConfiguration("your_remote_configuration_id", object : QonversionRemoteConfigurationAttachCallback {
    override fun onSuccess() {
        // handle success
    }

    override fun onError(error: QonversionError) {
        // handle error
    }
})
Qonversion.getSharedInstance().attachUserToRemoteConfiguration("your_remote_configuration_id", new QonversionRemoteConfigurationAttachCallback() {
    @Override
    public void onSuccess() {
        // handle success
    }

    @Override
    public void onError(@NonNull QonversionError error) {
        // handle error
    }
});
await Qonversion.getSharedInstance().attachUserToRemoteConfiguration("your_remote_configuration_id");
await Qonversion.getSharedInstance().attachUserToRemoteConfiguration("your_remote_configuration_id");
Qonversion.GetSharedInstance().AttachUserToRemoteConfiguration("your_remote_configuration_id", (success, error) =>
{
    // handle result
});
await Qonversion.getSharedInstance().attachUserToRemoteConfiguration("your_remote_configuration_id");
  • In case your user has already been attached to another configuration, use the detachUserFromRemoteConfiguration method.
Qonversion.shared().detachUser(fromRemoteConfiguration: "attached_remote_configuration_id") { success, error in  
    // handle result  
}
[[Qonversion sharedInstance] detachUserFromRemoteConfiguration:@"attached_remote_configuration_id" completion:^(BOOL success, NSError * _Nullable error) {
    // handle result
}];
Qonversion.shared.detachUserFromRemoteConfiguration("attached_remote_configuration_id", object : QonversionRemoteConfigurationAttachCallback {
    override fun onSuccess() {
        // handle success
    }

    override fun onError(error: QonversionError) {
        // handle error
    }
})
Qonversion.getSharedInstance().detachUserFromRemoteConfiguration("attached_remote_configuration_id", new QonversionRemoteConfigurationAttachCallback() {
    @Override
    public void onSuccess() {
        // handle success
    }

    @Override
    public void onError(@NonNull QonversionError error) {
        // handle error
    }
});
await Qonversion.getSharedInstance().detachUserFromRemoteConfiguration("attached_remote_configuration_id");
await Qonversion.getSharedInstance().detachUserFromRemoteConfiguration("attached_remote_configuration_id");
Qonversion.GetSharedInstance().DetachUserFromRemoteConfiguration("attached_remote_configuration_id", (success, error) =>
{
    // handle result
});
await Qonversion.getSharedInstance().detachUserFromRemoteConfiguration("attached_remote_configuration_id");
  1. Call the Qonversion remoteConfig method. Now Qonversion SDK returns data associated with previously set remote config.
  2. Validate your app logic without launching the configuration.

📘

Pay attention before release

Do not forget to remove the usage of the attachUserToRemoteConfiguration method before your app release. Otherwise, all your users may be exposed to only one remote config.

2. Experiment launch

After you have your configuration created, you can start experiments based on it:

  1. Find the configuration's context menu.
  2. Click the "Create Experiment" button.
  3. Adjust relevant keys to set up your new app behavior.
  4. Validate change before app release.
  5. Segment users, adjust traffic level and launch the experiment.

3. Create a new Remote Config

Once your hypothesis is validated, you might want to create a new Remote Configuration containing new payload or segmentation settings without additional app releases.

With this in mind, we have built a seamless approach that enables you to create new configurations from the experiment interface. Stop your experiment and select the Create Remote Config option.

4. Archive old Remote Config

After creating a new configuration during Step #3, you have two similar entities running:

  • The one you created during Step #1.
  • The one you have launched during Step #3.

We highly recommend archiving the old configuration (from step #1) to avoid unexpected behavior. To accomplish this:

  1. Follow the Remote Config page in Qonversion dashboard.
  2. Find and click on the previously created configuration.
  3. Use the Archive button to stop it from running.

5. Repeat

Congratulations! Following the abovementioned steps, you have completed your first configure -> experiment -> rollout cycle. Now, you can leverage remotely configured onboarding flows, paywalls, or pricing to grow your in-app revenue. Moreover, our concept allows you to iterate without app releases.

Please get in touch with our support team if you have any more questions regarding Remote Config.