Monetization

Test Mode

Run your whole paywall flow end to end with simulated purchases, restores, and entitlement states. No StoreKit config, sandbox account, or Google Play test track required.

Testing a purchase flow is the slowest part of shipping a paywall. You need a StoreKit configuration file or a sandbox Apple ID, products that exist in App Store Connect, a Google Play license tester, and a way to reset all of it between runs. Test mode removes the setup. When it is active, the SDK pulls product data from the Superwall dashboard, fakes the purchase, and fires every event as if the store had answered. Your analytics, delegate callbacks, and entitlement gating run for real. Only the money is simulated.

What a test session looks like

A configuration modal appears on launch before you touch a paywall. It shows your user ID with a link to the dashboard, whether a purchase controller is set, every device and user attribute the SDK is tracking, a free trial override, and your starting entitlements. Set those, tap through, and open the paywall.

  • Purchases open a drawer, not the payment sheet. Choose to complete, abandon, or fail the transaction. The matching transaction_ events fire, entitlements activate, and subscription status updates the way it would after a real purchase.

  • Restores let you pick the outcome. A restore drawer lists your entitlements so you can decide which ones come back and in what state, and check how the app handles each case.

  • Entitlement states you cannot easily reach in sandbox. On Android, start a session as Subscribed, In Grace Period, Billing Retry, Expired, Revoked, or Inactive, with a Trial or Promotional offer type on the active states. Your selections persist across sessions.

Everything routes to sandbox, so a week of test sessions never touches production charts.

Two ways to turn it on

The usual path is the dashboard. Mark a user as a test store user and the SDK activates test mode when that user ID shows up. For local development, set testModeBehavior on SuperwallOptions before you configure. The default, automatic, activates for marked users and whenever the app's bundle ID does not match the one in the dashboard, and never during UI tests. always and never do what they say. The iOS guide and Android guide list every behavior, and Expo apps get the same mode through the underlying native SDKs.

Read the test mode guide

What you can do with it

  • Hand a designer a build and let them verify a new paywall's purchase path without a sandbox account.
  • Reproduce a support ticket by starting a session in Billing Retry or Expired and watching what the app shows.
  • Check that your delegate grants a consumable on transactionComplete before the product exists in App Store Connect.
  • Run the abandon path on purpose to confirm your recovery offer appears.

Get started

Update to a current iOS, Android, or Expo SDK, open the Superwall dashboard, and mark your own user ID as a test store user. Launch the app and the configuration modal appears. New to Superwall? Start with the quickstart and add test mode once your first placement is registered.

More features

App-to-Web Checkout Send U.S. iOS users from your paywall to a Stripe checkout in Safari, then link the purchase back to the app automatically — no IAP, no auth. Monetization
Audience Targeting Decide exactly which users see which paywall — by user attributes, behavior, device, and subscription state — and change it without shipping a build. Monetization
Campaigns Decide which paywall every user sees, and A/B test new ones, from the dashboard — no app release required. Monetization

Book a demo

Tell us a little about your app and we'll match you with the right person.

  • A personalized walkthrough of the paywall builder
  • Guidance on your monetization and pricing strategy
  • Custom implementation recommendations for your stack
  • A look at proven paywall templates
  • Revenue-optimization best practices

Get started

Build, test, and optimize your paywalls

Join 10,000+ apps using Superwall to grow subscription revenue without shipping an app update.

Start for free

No credit card required