Add A/B test variants without flows or paywalls

You can measure the impact of your flow or paywall by running an A/B test against an empty variant. One variant shows your flow/paywall; the other shows nothing. Your app reads a flag from the remote config to decide whether to render.

How it works

The setup uses two flows/paywalls in the same placement:

  • Flow/Paywall A: The flow or paywall you want to test, with show_paywall set to true in its remote config.
  • Flow/Paywall B: An empty flow or paywall with show_paywall set to false in its remote config.

When the SDK returns a flow or paywall, your app reads the show_paywall flag. If the flag is true, the app renders it. If the flag is false, the app skips rendering and the user continues without seeing anything.

1. Add the show_paywall flag in remote config

You need two flows or paywalls in the same placement: Flow/Paywall A (the one you want to test) and Flow/Paywall B (an empty one). Add a show_paywall field to each so your app can branch on the same key for both variants.

To add the flag to Flow/Paywall A:

  1. Open the Flows/Paywalls section in the Adapty main menu and select Flow/Paywall A.

  2. Open the Remote config section.

  3. Create a field with the name show_paywall and the value true. In the JSON view, the entry looks like:

    {
      "show_paywall": true
    }
  4. Save the changes.

Repeat the same steps for Flow/Paywall B, but set show_paywall to false.

For full details on remote config, see Customize flow with remote config or Design paywall with remote config.

Setting show_paywall on both variants keeps the code path identical for both groups and makes the test easier to extend with more variants later.

2. Set up the A/B test

  1. Create an A/B test on the placement and add both flows/paywalls as variants.
  2. Set the variant weights to split traffic between users who see the flow/paywall and users who do not.

3. Check the flag in your app

Read show_paywall from the remote config returned by the SDK. If the flag is false, skip rendering and let the user continue.

The fallback value true keeps the flow/paywall visible when the flag is missing, so existing flows/paywalls without the flag are unaffected.

If you render the paywall yourself (without the Flow Builder or Paywall Builder), call logShowFlow (iOS SDK v4+) / logShowPaywall when you display Flow/Paywall A. Without it, Adapty cannot count views in the test. Do not log a view for Flow/Paywall B, since it is never shown.

Next steps