# 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.

Source: https://superwall.com/features/test-mode

---

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](https://superwall.com/docs/ios/guides/test-mode) and [Android guide](https://superwall.com/docs/android/guides/test-mode) list every behavior, and Expo apps get the same mode through the underlying native SDKs. 

[ Read the test mode guide ](https://superwall.com/docs/ios/guides/test-mode) 

When to use StoreKit testing instead

 Test mode is for the paywall flow: presentation, purchase actions, entitlement gating, and what your app does after each outcome. It does not exercise receipt validation or the real subscription lifecycle. For that, keep a StoreKit configuration file in Xcode and use [StoreKit testing](https://superwall.com/docs/ios/guides/testing-purchases). Most teams use both. 

## 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](https://superwall.com/docs/ios/quickstart/install) and add test mode once your first placement is registered. 

##  More features 

| [ App-to-Web Checkout ](https://superwall.com/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 ](https://superwall.com/features/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 ](https://superwall.com/features/campaigns)                     | Decide which paywall every user sees, and A/B test new ones, from the dashboard — no app release required.                                            | Monetization |

 Nothing matches. 

##  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

###  Thanks — opening your calendar 

 If a new tab didn't open, [click here to pick a time](#). 

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](https://app.superwall.com/onboarding) 

No credit card required
