Skip to content

Commit 24e9add

Browse files
authored
Testing Paywalls (new page) (#983)
* Docs for testing paywalls * Move images to the correct folder * Fix 1 image that shouldn't have moved * Fix broken link * Add Android Studio testing instructions
1 parent cd2acfe commit 24e9add

File tree

6 files changed

+122
-38
lines changed

6 files changed

+122
-38
lines changed
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
---
2+
title: Testing Paywalls
3+
slug: testing-paywalls
4+
hidden: false
5+
---
6+
7+
:::info A/B Testing
8+
This page refers to testing paywalls to ensure they're working as expected before releasing them to production. If you're looking to learn about A/B testing paywalls, see [Experiments](/tools/experiments-v1).
9+
:::
10+
11+
There are several ways to test your paywalls before releasing them to production. Here are a few options to consider:
12+
13+
## 1. Preview in the RevenueCat app
14+
15+
You can preview paywalls directly on device using the RevenueCat iOS app version 1.2 and above. This provides a quick way to see how your paywall will look, without building your app.
16+
17+
Just tap on "Projects" in the bottom menu, navigate to your project, then tap on "Paywalls" to see a list of all your paywalls.
18+
19+
:::info Draft paywalls
20+
The RevenueCat app also supports previewing draft paywalls, which you'll see as unique options in the list to select and preview.
21+
:::
22+
23+
![Paywalls in the RevenueCat app](/docs_images/paywalls/paywalls-rc-app.jpeg)
24+
25+
You can also modify how the paywall view is built (e.g. Full Screen vs. a Modal Sheet view), and whether dark or light mode is used.
26+
27+
![Paywalls settings in the RevenueCat app](/docs_images/paywalls/paywalls-rc-app-settings.jpeg)
28+
29+
:::warning Variable preview values
30+
Please note that the RevenueCat app uses preview values for any variables your paywall uses, so the prices displayed will not reflect the actual prices of your products. They're only intended to reflect how your paywall will look when real values are inserted in your app.
31+
:::
32+
33+
## 2. Override a Customer's Default Offering
34+
35+
The simplest way to test a paywall is by overriding an individual customer's offering through their Customer Profile in the RevenueCat dashboard:
36+
37+
1. Navigate to the Customer Profile for your test device
38+
2. In the current offering section, click "Edit"
39+
3. Select the offering containing your test paywall
40+
4. Launch your app and navigate to the paywall to see the paywall of your overridden offering
41+
42+
![Override current offering](/docs_images/paywalls/paywalls-override-current-offering.png)
43+
44+
## 3. Create a Targeting Rule for an internal app version
45+
46+
You can create a Targeting Rule to show specific paywalls to internal builds of your app:
47+
48+
1. Create a new Targeting Rule
49+
2. Set the condition to "App Version equals X.Y.Z" using your internal build version
50+
3. Set the offering to the one containing your test paywall
51+
4. Install the internal build on your test device
52+
53+
This approach is useful for testing paywalls across your team before releasing to production.
54+
55+
![Targeting rule](/docs_images/paywalls/paywalls-targeting-rule.png)
56+
57+
## 4. Testing through Xcode and Android Studio
58+
59+
### Xcode
60+
61+
When testing through Xcode, you can:
62+
63+
1. Use the iOS Simulator to test different device sizes and orientations
64+
2. Test different locales to verify translations
65+
3. Test different subscription states using StoreKit Configuration files
66+
67+
### Android Studio
68+
69+
When testing through Android Studio, you can:
70+
71+
1. Use the Android Emulator to test different device sizes and screen densities
72+
2. Test different locales and languages to verify translations
73+
3. Test different subscription states using Google Play's license testing
74+
4. Preview layouts directly in Android Studio's Layout Editor
75+
76+
## Best Practices
77+
78+
- Test your paywall across different device sizes to ensure proper layout
79+
- Verify all purchase flows work as expected (in-app purchases, web purchases, etc.)
80+
- Test localization if your app supports multiple languages
81+
- Verify that variables are properly populated with product information
82+
- Test both light and dark mode if your paywall supports them
83+

sidebars.ts

Lines changed: 39 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ const paywallsCategory = Category({
135135
Page({ slug: "app-review" }),
136136
],
137137
}),
138+
Page({ slug: "testing-paywalls" }),
138139
Page({ slug: "displaying-paywalls" }),
139140
Page({ slug: "change-log" }),
140141
],
@@ -639,57 +640,57 @@ const chartsCategory = Category({
639640
items: [
640641
Page({ slug: "charts" }),
641642
SubCategory({
642-
label: "Revenue",
643-
items: [
644-
Page({ slug: "charts/revenue-chart" }),
645-
Page({ slug: "charts/annual-recurring-revenue-arr-chart" }),
646-
Page({ slug: "charts/monthly-recurring-revenue-mrr-chart" }),
647-
Page({ slug: "charts/monthly-recurring-revenue-movement-chart" }),
648-
Page({ slug: "charts/non-subscription-purchases-chart" }),
643+
label: "Revenue",
644+
items: [
645+
Page({ slug: "charts/revenue-chart" }),
646+
Page({ slug: "charts/annual-recurring-revenue-arr-chart" }),
647+
Page({ slug: "charts/monthly-recurring-revenue-mrr-chart" }),
648+
Page({ slug: "charts/monthly-recurring-revenue-movement-chart" }),
649+
Page({ slug: "charts/non-subscription-purchases-chart" }),
649650
],
650651
index: {
651652
title: "Revenue",
652653
link: "dashboard-and-metrics/charts/revenue",
653654
},
654655
}),
655656
SubCategory({
656-
label: "Subscriptions",
657-
items: [
658-
Page({ slug: "charts/active-subscriptions-chart" }),
659-
Page({ slug: "charts/active-subscriptions-movement-chart" }),
660-
Page({ slug: "charts/new-paid-subscriptions-chart" }),
661-
Page({ slug: "charts/subscription-retention-chart" }),
662-
Page({ slug: "charts/subscription-status-chart" }),
663-
],
664-
index: {
665-
title: "Subscriptions",
666-
link: "dashboard-and-metrics/charts/subscriptions",
657+
label: "Subscriptions",
658+
items: [
659+
Page({ slug: "charts/active-subscriptions-chart" }),
660+
Page({ slug: "charts/active-subscriptions-movement-chart" }),
661+
Page({ slug: "charts/new-paid-subscriptions-chart" }),
662+
Page({ slug: "charts/subscription-retention-chart" }),
663+
Page({ slug: "charts/subscription-status-chart" }),
664+
],
665+
index: {
666+
title: "Subscriptions",
667+
link: "dashboard-and-metrics/charts/subscriptions",
667668
},
668669
}),
669670
SubCategory({
670-
label: "Cohorts and LTV",
671-
items: [
672-
Page({ slug: "charts/cohort-explorer" }),
673-
Page({ slug: "charts/realized-ltv-per-customer-chart" }),
674-
Page({ slug: "charts/realized-ltv-per-paying-customer-chart" }),
675-
Page({ slug: "charts/prediction-explorer" }),
676-
],
677-
index: {
678-
title: "Cohorts and LTV",
679-
link: "dashboard-and-metrics/charts/cohorts-and-ltv",
671+
label: "Cohorts and LTV",
672+
items: [
673+
Page({ slug: "charts/cohort-explorer" }),
674+
Page({ slug: "charts/realized-ltv-per-customer-chart" }),
675+
Page({ slug: "charts/realized-ltv-per-paying-customer-chart" }),
676+
Page({ slug: "charts/prediction-explorer" }),
677+
],
678+
index: {
679+
title: "Cohorts and LTV",
680+
link: "dashboard-and-metrics/charts/cohorts-and-ltv",
680681
},
681682
}),
682683
SubCategory({
683-
label: "Conversion Funnel",
684-
items: [
685-
Page({ slug: "charts/new-customers-chart" }),
686-
Page({ slug: "charts/initial-conversion-chart" }),
687-
Page({ slug: "charts/trial-conversion-chart" }),
688-
Page({ slug: "charts/conversion-to-paying-chart" }),
689-
],
690-
index: {
691-
title: "Conversion Funnel",
692-
link: "dashboard-and-metrics/charts/conversion-funnel",
684+
label: "Conversion Funnel",
685+
items: [
686+
Page({ slug: "charts/new-customers-chart" }),
687+
Page({ slug: "charts/initial-conversion-chart" }),
688+
Page({ slug: "charts/trial-conversion-chart" }),
689+
Page({ slug: "charts/conversion-to-paying-chart" }),
690+
],
691+
index: {
692+
title: "Conversion Funnel",
693+
link: "dashboard-and-metrics/charts/conversion-funnel",
693694
},
694695
}),
695696
SubCategory({
60.9 KB
Loading
777 KB
Loading
449 KB
Loading
162 KB
Loading

0 commit comments

Comments
 (0)