Add your existing products from their respective storefront, such as the App Store or the Google Play Store, to an app so they can be used in one or more paywalls.

Right now, Superwall for iOS does not support Promotional Offers, only Introductory Offers. Superwall for Android only supports 1 billing phase per offer.

To get started, select an app. Then click the Products button from the sidebar. Choose + Add Product:

From there, you have four fields to fill out:

FieldDescription
IdentifierThe StoreKit or Google Play product identifier for your product.
TrialThe trial duration attached to the product, if any.
PriceThe price attached to the product. Either type one in, or just the dropdown to select common price points.
PeriodThe length of the subscription.

When your done, click Save.

Note that the pricing information you enter here is only used in the Paywall Editor. On device, that information is pulled directly from the App Store or Google Play Store and will be localized.

Take care to make sure your product identifier is correct and matches its storefront. This is the most common cause for products not working correctly when testing.

Getting product identifiers

If you use RevenueCat to handle in-app subscriptions, skip to Using Revenuecat

Using App Store Connect

On App Store Connect, head over to Your App ▸ App Store ▸ Subscriptions ▸ Your Subscription Group:

Then, copy your Product ID:

Using Google Play Console

On Google Play Console, head over to Your App ▸ Monetize ▸ Products ▸ Subscriptions:

You can also grab your base plan id and any offer ids if you’re going to use them.

Google Play Offers

Google play allows you to create multiple base plans and multiple offers for each base plan. When using Superwall, you can either specify a specific offer or let Superwall choose the best offer for the user.

Automatically Choosing Offers

Once Google has returned offers that are applicable for that user, Superwall will use the following logic to choose the best offer for the user:

  • Find the longest free trial the customer is eligible for
  • If there is no free trial, find the cheapest introductory period the customer is eligible for
  • If there is none, fall back to the base plan
  • If you have an offer on one of your products that you never want to automatically be selected by this logic (for example, because it is a discount only used for a specific customer group), you can add the tag sw-ignore-offer to that offer.

That means that if your eligiblitiy criteria is set so that someone can use an offer only once, we’ll respect that and choose from the best remaining offers.

Specifying Offers

Let’s say you have a base plan with two or more offers which differ in trial duration. You may want to A/B test these offers to see which one performs best. To achieve this, you can specify the offer id in the Superwall dashboard.

When we specify an offer id, we’ll ignore the logic above and always use the offer if the user is eligible. If the user is not eligible for the offer, we’ll fall back to the base plan. The eligiblity criteria is set in the Google Play Console, and is based on the user’s purchase history.

Using RevenueCat

For those who use RevenueCat, Superwall can automatically pre-populate your product identifiers to choose from when adding a product. In the Add Product modal, Superwall will display any product attached to an offering by following the steps below.

On RevenueCat, make sure your products are associated with an offering (it doesn’t need to be the current offering):

Then, add your RevenueCat Public API Key inside of settings by clicking the cog wheel icon in the navigation bar from any page and selecting Settings. Paste your API key then click Update Application:

Using products in paywalls

After you’ve added products to an app, you’re ready to start using them in paywalls. Check out our docs for a step-by-step guide on how to do that.

Understanding how consumable and non-consumable products work

If you are using consumable or non-consumable products, be aware of their default behavior within Superwall. If one is purchased, Superwall will treat that user as “subscribed” to your app. If you sell credits, tokens, or anything similar — and you don’t want this behavior, create a purchase controller to intercept those purchases and mark a user’s subscription status as needed.

Understanding paid offer types

Any paid up front or pay as you go product offer types will also be referenced using the trial variables. In Superwall, these are represented as “paid trials”. For example, to reference the product’s trial price of $3.99 in the image below, you’d use products.selected.trialPeriodPrice:

For more on setting customized text using Liquid Templating, visit this doc.

A note on StoreKit configuration files

If you’re using a StoreKit Configuration file, pricing information will come from there during local testing. Therefore, it’s important to keep your StoreKit Configuration file, Superwall, and the App Store products all in sync. Follow our Setting up StoreKit testing guide for more information.

Having an issue on device with products not appearing? Run through this checklist to make sure everything is configured correctly.