A/B test types

Adapty offers three A/B test types, each suited for different testing scenarios:

  • Regular A/B test: An A/B test created for a single paywall placement.
  • Onboarding A/B test: An A/B test created for a single onboarding placement.
  • Crossplacement A/B test: An A/B test created for multiple paywall placements in your app. Once the A/B test assigns a variant , it shows that variant consistently across all selected sections of your app.

Crossplacement A/B tests are only available for Adapty SDKs starting from v3.5.0.

Onboarding A/B tests require Adapty SDK v3.8.0+ (iOS, Android, React Native, Flutter), v3.14.0+ (Unity), or v3.15.0+ (Kotlin Multiplatform, Capacitor).

Users from previous versions skip them.

Each paywall/onboarding gets a weight that splits traffic during the test.

For instance, with weights of 70 % and 30 %, the first paywall is shown to roughly 700 of 1,000 users, the second to about 300. In Crossplacement tests, weights are set per variant, not per paywall.

This setup lets you compare different paywalls and make data-driven decisions for your app’s monetization strategy.

When to use each type

Each A/B test type is useful if:

  • Regular and Onboarding A/B tests:
    • You have only one placement in your app.
    • You want to run your A/B test on only one placement and track economics changes for that placement only, even if your app has multiple placements.
    • You want to run an A/B test on old users (those who have seen at least one Adapty paywall).
  • Crossplacement A/B test:
    • You want to synchronize variants across multiple placements. For example, you might change prices in the onboarding flow and in your app’s settings at the same time.
    • You want to evaluate your app’s overall economy. Running the test across all placements makes A/B test statistics easier to analyze than testing isolated placements.
    • You want to run an A/B test on new users only, i.e. the users who have never seen a single Adapty paywall.
    • You want to use multiple paywalls within a single variant:
Example of multiple paywalls within a single crossplacement A/B test variant

Key differences

FeatureRegular A/B TestCrossplacement A/B Test
What is being testedOne paywall/onboardingSet of paywalls belonging to one variant
Variant consistencyVariant is determined separately for every placementSame variant used across all paywall placements
Audience targetingDefined per paywall/onboarding placementShared across all paywall placements
AnalyticsYou analyze one paywall/onboarding placementYou analyze the whole app on those placements that are a part of the test
Variant weight distributionPer paywall/onboardingPer set of paywalls
UsersFor all usersOnly new users (those who haven’t seen an Adapty paywall)
Adapty SDK versionAny for paywalls. For onboardings: v3.8.0+ (iOS, Android, React Native, Flutter), v3.14.0+ (Unity), v3.15.0+ (KMP, Capacitor)3.5.0+
Best forTesting independent changes in a single paywall/onboarding placement without considering the overall app economicsEvaluating overall monetization strategies app-wide

A/B test selection logic

Crossplacement A/B tests take priority over regular A/B tests. However, Crossplacement tests are only shown to new users — those who haven’t seen a single Adapty paywall yet (the getPaywall SDK method was never called for them). This ensures consistency in results across placements.

The following diagram shows the logic Adapty uses to select an A/B test for a placement:

Diagram showing the A/B test selection logic for a paywall placement

On the A/B Tests page, regular, onboarding, and Crossplacement tests appear on separate tabs.

A/B tests list page with tabs for Regular, Onboarding, and Crossplacement test types

Crossplacement A/B test limitations

Crossplacement A/B tests cannot include onboarding placements.

Crossplacement A/B tests guarantee that each user sees the same variant across all placements in the test. This creates the following limitations:

  • Only new users can participate. A new user is one who has not seen an Adapty paywall and whose app has never called getPaywall. Adapty cannot guarantee a consistent paywall chain for other users.

  • The first placement the user encounters determines which paywall Adapty displays. You cannot change a user’s assignment or enroll the same user in more than one Crossplacement A/B test.

Once a user receives a Crossplacement paywall, they see it for 90 days, even after you stop the test. To change this duration, in the General settings, adjust Cross-placement variation stickiness.

Crossplacement A/B test priority

  • Crossplacement A/B tests always take priority over regular and onboarding A/B tests. If a new user qualifies for both a Crossplacement test and a regular test on the same placement, the Crossplacement test is shown.

  • When multiple Crossplacement A/B tests with the same audience share the same placement, Adapty automatically assigns test priority based on the order they were added. The first test gets the highest priority. You cannot manually change it.

  • Tests that target smaller segments of your audience automatically take priority over those targeting the All Users segment.

In Analytics, a Crossplacement A/B test appears as several child tests, one per placement. Child tests follow the naming pattern <test-name> child-0, <test-name> child-1, and so on. The numbering matches the placement order on the A/B test details page. To view results for a specific placement, filter by Placement.

Next steps