gradient blur

How to Build Multi-Tiered Paywalls

A step-by-step guide to creating multi-layered product offerings in a single paywall

CheckoutiPhone

Jordan Morgan

Developer Advocate

Published

Want to watch instead of read? Check this post out on Youtube.

Several companies and their corresponding apps offer tiers of service. A popular example is Netflix, which uses a pricing model where each tier adds features along with higher costs:

gradient blur
dashboard-header

Netflix and its pricing tiers

This tiered structure is increasingly common in consumer apps. For instance, your photo editing app may start with these subscriptions:

  • Annual at $19.99

  • Monthly at $3.99

Though, adding a new feature powered by a 3rd party service, such as an external API, might lead you to introduce a higher-priced tier:

  • Annual Plus Standard at $29.99

  • Monthly Plus Standard at $5.99

To showcase these pricing tiers, a typical approach is to include a toggle that shifts between options. It may toggle a 'standard' and 'pro/premium/etc.' set of plans, or different offerings within the same subscription duration (i.e. monthly or yearly):

gradient blur
dashboard-header

Paywalls with multiple service tiers

With Superwall, creating paywalls like this is straightforward. In this post, we'll build one using our paywall editor.

Our multi-tier paywall

Here's what we will end up building:

gradient blur

Our custom built multi-tier paywall

It has four total products, representing two different tiers of service, each with a monthly and annual plan. We'll call them the "Standard" and "Plus" tiers.

To kickstart the project and focus on the important parts to help you build multi-tier paywalls, I've built the paywall up to this point:

gradient blur
dashboard-header

Our starting point

As for the rest? We'll build it together right now!

Creating a variable for a selected tier

With a design and multi-tier paywall like this, I like to start by creating a variable that represents which tier is being shown. Since we have only two options ("Standard" and "Plus"), we can use a boolean:

gradient blur

Adding a variable to track a selected tier

Now, we can have elements read or update this value to control which tier will show in the design. When the "Standard" toggle is tapped, we'll set state.isShowingStandard to true, and flip it to false when the "Plus" tier is tapped.

And, in the end, that is all you need to understand if you want to build a custom paywall like this: Just create a variable to represent which tier to show, and then you're free to have elements react any way you need.

Speed up your design by using Superwall components

Using Superwall's prebuilt components can speed up any design, and it's no different here. By using the "Segmented Picker (2 Products)", we can retool it to toggle our state.isShowingStandard instead of toggling products:

gradient blur

Adding a segmented picker

From there, we can change the tap behavior for each segment to update state.isShowingStandard. Here, I've made it to where tapping the "Standard" button will set state.isShowingStandard to true (and we do the opposite for the "Plus" button):

gradient blur

Toggling our state variable with a tap action

Some built-in components may already be styling some of their properties with an existing dynamic value. When re-purposing components, all we have to do is update those to use our own variable instead. It's easy to find these properties, too. Anything that's based off of a dynamic value will have a purple background in the editor, like this:

gradient blur
dashboard-header

This layer's color is controlled by a dynamic value

Here's an example. Out of the box, the segmented component is driving its selection indicator off of products.selectedIndex — but we want it to use state.isShowingStandard:

gradient blur

Updating a component's default dynamic value

Next, I'll use Superwall's "Product Group" component to add in buttons to represent product selection. I'll tweak some properties (such as making its width be 100%) to make it fit with the design, and remove the third button it came with out of the box:

gradient blur

Adding a product group component

Now, we just need to adjust each button's tap logic. Let's look at how our products are setup:

gradient blur
dashboard-header

Our product service offerings

This means each button handles two products. If the "Standard" tier is selected, then the top button should select the "Standard Annual" plan. If "Plus" is chosen, then it should pick the "Plus Annual" plan. This is where our state.isShowingStandard will make things easy. Even better, Superwall's tap actions support dynamic values, which means our tap can do different things based on what our state.isShowingStandard is set to!

For example, in our "Standard" annual button — if the the standard tier is showing, then we use the "Select Product" tap action and choose the standard annual plan. Otherwise, we'll pick the plus annual plan:

gradient blur
dashboard-header

Setting our tap action to use a dynamic value

We'd extend the same logic to the button's text, so it shows the correct pricing and plan names. Here's what it looks like for the annual button:

gradient blur
dashboard-header

Updating text using variables and dynamic values

Finally, we'll update any style properties set out of the box with our variable instead of the default ones (just like we did with the segment component). At this point, our design is done — all thanks to Superwall's components speeding things up.

Now, let's make the design react to each tier.

Toggling elements from variables

At this point, there are two things left to do:

  • Make the interface update according to the tier that's picked.

  • Add a button to initiate the purchase.

Thankfully, this is a matter of (once again) using dynamic values! I'll update things like the text bullets and header image to better represent the value of whichever tier is active. For example, here's how I'll setup the text:

gradient blur

Updating text based on our state variable

Now, whenever we toggle back and forth — the entire interface updates accordingly. Even better, we never have to run this in our app to try it out. We can do it all in the editor, and even try out things like varying device sizes.

For the last touch, I've added a button from Superwall's component library and made its tap action initiate a purchase of the selected product. This will be trivial, since Superwall has a special variable just for this purpose — products.selectedProduct:

gradient blur
dashboard-header

Setting a button's tap action to initiate a checkout

Putting it all together

With that, our multi-tier paywall is ready to go. Here's an example of it running in an iOS simulator:

gradient blur

Our multi-tier paywall in action

And that's all it takes to build out a paywall to support multiple tiers. Of course, this is just the start — you can remix this design, start from one of our templates or build something entirely new to support multiple service tiers. There's no easier or flexible way than with Superwall.

If you're new to Superwall, you can get started for free today. Just fill in the details below. Or, if you've already integrated our SDK — then you probably already know you can get a paywall like this into production right now (no app update required).

gradient blur

Get a demo

We'd love to show you Superwall

Want to learn more?

  1. Fill out this tiny form →
  2. We'll prepare you a custom demo
  3. Walk you through Superwall
  4. Follow up and answer questions

Key features

  • Drag 'n Drop Paywalls
  • 200+ Custom Templates
  • Unlimited A/B tests
  • Surveys, Charts & More
Select...

By proceeding you consent to receiving emails and our terms.

gradient blur
shape-starshape-starshape-starshape-starshape-star

Customer Stories

Our customers refer to Superwall as their most impactful monetization tool. In their own words:

dashboard-header

Thanks to Superwall, we were able to 2x our iOS app profitability in just six months. It has greatly assisted our growth team in achieving exceptional results by facilitating high-frequency experimentation.

Mojo launch
Bernard Bontemps, Head of Growth
dashboard-header

Really excited about the progress we made recently on paywalls with Superwall. We got more than 50% increase in conversion for upsell screens. This is crazy.

Photoroom launch
Matthieu Rouif, CEO
dashboard-header

Superwall has completely changed the game for us. We’re able to run experiments 10x faster and unlock the ideal monetization model for our users.

RapChat launch
Seth Miller, CEO
dashboard-header

Superwall made testing paywalls so much faster. Instead of releasing a new version of the app each time, we were able to iterate on the winning paywalls much quicker. Thanks to that it increased our revenue per customer by 40%.

Teleprompter launch
Mate Kovacs, Indie Dev
dashboard-header

Superwall lets us move 10x faster on our monetization strategy. We can build and launch multiple paywall iterations without the need for client releases or complicated deploys. Our product iteration loop is days, rather than months because of Superwall.

Citizen launch
Jon Rhome, Head of Product
dashboard-header

Superwall enables Bickster’s marketing team to design and optimize app paywalls, freeing up engineering to concentrate on innovation. As a result, Superwall helped accelerate our install-to-subscription rates, lower engineering expenses, and cured our team’s frustration with the (once) time-consuming process of iterating on paywalls.

Bickster launch
Chris Bick, CEO
dashboard-header

Superwall has revolutionized our monetization strategy. It’s an essential tool that allows rapid paywall testing and optimization, leading to remarkable improvements in our subscription conversions and revenue generation. Can’t recommend Superwall enough for any app-based business.

Coinstats launch
Vahe Baghdasaryan, Sr. Growth
dashboard-header

Superwall has played an integral part of improving our subscription business. Compared to other providers, Superwall has proven superior in facilitating high-frequency experimentation allowing us to achieve an ideal monetization model, resulting in a significant increase in revenue.

Hornet launch
Nils Breitmar, Head of Growth
dashboard-header

Superwall is the single greatest tool we’ve used to help us increase our revenue. Our material wins from Superwall are greater than any tool we’ve worked with to date!

Pixite launch
Jordan Gaphni, Head of Growth
dashboard-header

Shout out to Superwall for helping us dial in our paywall — made a big impact on monetization, increasing revenue by more than 50% 💸

Polycam launch
Chris Heinrich, CEO
dashboard-header

Superwall increases revenue. Full stop. Being able to test paywalls on the fly and quickly analyze results has drastically increased our revenue and improved our monetization of users. Highly recommend this tool!

Hashtag Expert launch
Zach Shakked, Founder
Start for FREE

Simple win-win pricing

Interest aligned pricing. Contact us for a discount.

dashboard-header
Indie
Free
Up to 250 conversions per month
Access to every standard feature
Try it free

Standard Features

  • 250 Conversions a Month
  • Drag 'n Drop Paywall Editor
  • 200+ Paywall Templates
  • Unlimited A/B tests
  • Charts & Analytics
dashboard-header
Startup
$0.20/conversion
Pay as you go pricing that scales
Up to 5,000 conversions a month
Sign Up

Standard Features

  • 5,000 Conversions a Month
  • Drag 'n Drop Paywall Editor
  • 200+ Paywall Templates
  • Unlimited A/B tests
  • Charts & Analytics
dashboard-header
Growth
Flat-Rate
100% custom flat-rate pricing
Terms that make sense for you
Get a quote

Premium Features

  • Unlimited Conversions
  • We Build Your Paywalls
  • 4 Weekly Growth Meetings
  • Dedicated Slack Channel
  • Custom Integrations