Superwall
Superwall - Paywalls made easy
Superwall Documentation
Superwall is a platform for remotely configuring and A/B testing mobile app paywalls — no app update required. It provides SDKs for iOS, Android, Flutter, Expo, Unity, and React Native, plus a dashboard for managing paywall presentation, experiments, and subscription analytics.
Curl the pages below to read docs for each page. You can request markdown files by appending .md to a route, for example:
Note: Doc URLs return a 307 redirect. Always use curl -sL (follow redirects) when fetching them.
Platform-specific docs
- Dashboard Documentation
- iOS Documentation
- Android Documentation
- Flutter Documentation
- Expo Documentation
- Unity Documentation
- React Native Documentation
- Integrations Documentation
- Web Checkout Documentation
All Pages
- External Paywall Creation
- Automation: Schedule recurring prompts for experiment analysis, monitoring, reporting, and follow-up work.
- Billing and Usage: Review Superwall Agents usage, subscription state, provider costs, and billing controls.
- Start a Chat: Start a Superwall Agents chat, attach files, and understand where chat state lives.
- Files: Browse files available on the active hosted machine and open them for agent work.
- Superwall Agents: Use Superwall Agents to analyze experiments, inspect your setup, automate reports, and turn Superwall data into growth work.
- Integrations: Connect Superwall Agents to Superwall, GitHub, Slack, provider tools, skills, and hosted machine environment variables.
- Recipes: Try prompts for experiment analysis, campaign review, implementation checks, recurring reports, and next-test planning.
- Settings: Configure Superwall Agents defaults, environment variables, machines, usage, billing, webhooks, keybindings, and account actions.
- Sharing Chats: Share completed Superwall Agents conversations with teammates and manage shared links.
- Terminal: Use the Superwall Agents terminal to run commands on the active hosted machine.
- Troubleshooting: Fix common Superwall Agents connection, machine, integration, automation, webhook, and billing issues.
- Webhooks: Trigger chats from external systems and send agent turn events to your own endpoints.
- Workspace Tour: Learn what every primary Superwall Agents control does before moving into deeper workflows.
- Changelog: Release notes for the Superwall Android SDK
- Cohorting in 3rd Party Tools: To easily view Superwall cohorts in 3rd party tools, we recommend you set user attributes based on the experiments that users are included in. You can also use custom placements for creating analytics events for actions such as interacting with an element on a paywall.
- Custom Paywall Analytics: Learn how to log events from paywalls, such as a button tap or product change, to forward to your analytics service.
- 3rd Party Analytics
- Superwall Events: The SDK automatically tracks some events, which power the charts in the dashboard.
- Advanced Purchasing: If you need fine-grain control over the purchasing pipeline, use a purchase controller to manually handle purchases and subscription status.
- Custom callbacks: Handle custom callback requests from paywalls to run app-side logic and return results.
- Custom Paywall Actions
- Purchasing Products Outside of a Paywall
- Game Controller Support
- Observer Mode
- Retrieving and Presenting a Paywall Yourself
- Request permissions from paywalls: Trigger Android runtime permission dialogs directly from a Superwall paywall action.
- Device Tier Targeting: Target users based on their device performance capabilities to optimize paywall experiences across different hardware tiers.
- Using the Presentation Handler
- Viewing Purchased Products
- Advanced Configuration: When configuring the SDK you can pass in options that configure Superwall, the paywall presentation, and its appearance.
- Consumable Products: Set up consumable products for Superwall paywalls on Android.
- Experimental Flags
- Handling Deep Links: Use handleDeepLink and campaign rules to present paywalls from deep links without hardcoding logic in your app.
- Local Resources: Bundle images, videos, and other assets in your app so paywalls can load them instantly from the device.
- Migrating from v1 to v2 - Android: SuperwallKit 2.0 is a major release of Superwall's Android SDK. This introduces breaking changes.
- Test Mode: Simulate in-app purchases without Google Play using test mode, which lets you test your entire paywall flow end-to-end.
- Using RevenueCat
- Using the Superwall Delegate
- Vibe Coding: How to Vibe Code using the knowledge of the Superwall Docs
- Web Checkout: Integrate Superwall web checkout with your iOS app for seamless cross-platform subscriptions
- Redeeming In-App: Handle a deep link in your app and use the delegate methods.
- Post-Checkout Redirecting: Learn how to handle users redirecting back to your app after a web purchase.
- Using RevenueCat: Handle a deep link in your app and use the delegate methods to link web checkouts with RevenueCat.
- Welcome: Welcome to the Superwall Android SDK documentation
- Configure the SDK
- Presenting Paywalls: Control access to premium features with Superwall placements.
- Handling Deep Links
- Install the SDK: Install the Superwall Android SDK via Gradle.
- Setting User Attributes
- Tracking Subscription State: Here's how to view whether or not a user is on a paid plan in Android.
- User Management
- PaywallOptions: Configuration for paywall presentation and behavior in the Superwall Android SDK.
- PurchaseController: An interface for handling Superwall's subscription-related logic with your own purchase implementation.
- Superwall: The shared instance of Superwall that provides access to all SDK features.
- SuperwallDelegate: An interface that handles Superwall lifecycle events and analytics.
- SuperwallEvent: A sealed class representing analytical events that are automatically tracked by Superwall.
- SuperwallOptions: A configuration class for customizing paywall appearance and behavior.
- PaywallBuilder: A builder class for creating custom PaywallView instances for advanced presentation.
- setSubscriptionStatus(): A function that manually sets the subscription status when using a custom PurchaseController.
- configure(): A static function that configures a shared instance of Superwall for use throughout your app.
- getPresentationResult(): Check the outcome of a placement without presenting a paywall.
- handleDeepLink(): A function that handles deep links and triggers paywalls based on configured campaigns.
- identify(): A function that creates an account with Superwall by linking a userId to the automatically generated alias.
- Overview: Reference documentation for the Superwall Android SDK.
- localResources: Register Android resources or file URIs so paywalls can load local media by resource ID.
- register(): A function that registers a placement that can be remotely configured to show a paywall and gate feature access.
- setUserAttributes(): A function that sets user attributes for use in paywalls and analytics on the Superwall dashboard.
- subscriptionStatus: A StateFlow property that indicates the subscription status of the user.
- userId: A property on Superwall.instance that returns the current user's ID.
- Changelog: Track recent updates and additions to the Superwall documentation.
- Capacitor: Superwall plugin for Capacitor by Capawesome
- Community SDKs: Community-maintained Superwall SDKs
- Creating Paywalls: Superwall maintains a growing list of paywall templates for you to choose from. These designs are used by some of the biggest apps on the App Store and are perfect to get you up and running in no time.
- Assets: Upload and reuse images and videos across paywalls for easy branding and asset management.
- Active Subscriptions: Learn what the Active Subscriptions chart measures and when to use it.
- Active Users: Learn what the Active Users chart measures and when to use it.
- ARR: Learn what the ARR chart measures and when to use it.
- Auto Renew Status: Learn what the Auto Renew Status chart measures and when to use it.
- Checkout Conversion: Learn what the Checkout Conversion chart measures and when to use it.
- Cohorted Proceeds: Learn what the Cohorted Proceeds chart measures and when to use it.
- Conversions: Learn what the Conversions chart measures and when to use it.
- Charts: View charts detailing important metrics about your app's subscription performance, paywalls, users, and revenue.
- Initial Conversion: Learn what the Initial Conversion chart measures and when to use it.
- MRR: Learn what the MRR chart measures and when to use it.
- New Subscriptions: Learn what the New Subscriptions chart measures and when to use it.
- New Trials: Learn what the New Trials chart measures and when to use it.
- New Users: Learn what the New Users chart measures and when to use it.
- Paid Conversion: Learn what the Paid Conversion chart measures and when to use it.
- Paywall Conversion: Learn what the Paywall Conversion chart measures and when to use it.
- Paywall Rate: Learn what the Paywall Rate chart measures and when to use it.
- Paywalled Users: Learn what the Paywalled Users chart measures and when to use it.
- Proceeds: Learn what the Proceeds chart measures and when to use it.
- Realized LTV per new user: Learn what the Realized LTV per new user chart measures and when to use it.
- Realized LTV per paid user: Learn what the Realized LTV per paid user chart measures and when to use it.
- Refund Rate: Learn what the Refund Rate chart measures and when to use it.
- Sales: Learn what the Sales chart measures and when to use it.
- Subscriber Churn: Learn what the Subscriber Churn chart measures and when to use it.
- Subscription Retention: Learn what the Subscription Retention chart measures and when to use it.
- Trial Conversion: Learn what the Trial Conversion chart measures and when to use it.
- Creating Projects: Projects are how Superwall groups the same app together across platforms.
- Rules: Rules allow you to decide which users see a paywall.
- Audiences
- Paywalled Users
- Priority Placements: Preload your most important campaign's paywalls before the rest of your app's campaigns.
- Placements
- Standard Placements
- Starting an Experiment
- Campaign Structure
- Understanding Experiment Results
- Campaigns: Campaigns are logical groupings of paywalls to show when certain events are registered and conditions are met. They are an incredibly powerful tool for creating experiments and managing best-in-class monetization flows.
- Flows Analytics: Understand Flow Journey analytics, drop-off, page transitions, and how users move through multi-page flows.
- Flow Elements: Add interactive elements to your flows: multiple choice, text entry, progress indicators, and date pickers.
- Getting Started with Flows: Create multi-page experiences like onboarding flows, cancellation surveys, and more. All within the same Superwall editor you're familiar with.
- How Flows are Structured: Understand the key concepts of a Flow: the navigation element, pages, routes, and branching.
- Linking Pages: Connect pages with routes, configure animations, and set up conditional branching.
- Navigation: Control how users move through your flow with forward and backward navigation.
- Ordering Screens: Understand how page order works in Flows and how to organize your Canvas.
- Permission Prompts: Request system permissions like notifications, location, and camera at the right moment in your flows.
- The Canvas: See your entire flow at a glance, zoom in and out, and use the mini-map to navigate complex flows.
- Tips: Practical advice for building effective flows.
- AI Chat Builder: Use AI Chat in the paywall editor to build, inspect, and refine paywalls with natural language.
- Autoscroll: Use Superwall's autoscroll component to create marquee-like content that automatically scrolls.
- Carousel: Use Superwall's carousel component to have items automatically progress through slides.
- Debugger
- Drawers: Use Superwall's drawer component to display content presented in response to a button tap or a variable changing.
- Duplicating Paywalls
- Dynamic Values
- Floating Toolbar
- Indicator: Show users their progress through a flow with the indicator element.
- Input: Capture typed responses from users with the input element for names, emails, feedback, and more.
- Layout
- Liquid
- Local Resources: Use images, videos, and other media bundled in your app for faster paywall loading and offline support.
- Paywall Localization
- Connect an Agent with MCP: Connect Claude Code, Codex, Cursor, or another MCP-compatible agent to the paywall currently open in the Superwall editor.
- Multiple Choice: Capture user selections with multiple choice elements for branching, personalization, and data collection.
- Navigation: Use Superwall's navigation component to navigate through pages of content.
- Notifications
- Getting Started with the Paywall Editor: Use Superwall's best-in-class editor to bring virtually any paywall design to life, complete with advanced U.X. patterns. Or, browse our growing list of paywall templates to get started quickly.
- Previewing
- Products
- Publishing
- Renaming Paywalls
- Settings
- Slides: Use Superwall's slides component to create a horizontal or vertical slide UX driven by a user's gesture.
- Stacks
- Styling Elements
- Surveys
- Theme
- Variables
- Using Demand Score in Campaigns: Learn how to create audiences based on demand score ranges to run targeted experiments and improve conversion.
- Understanding Demand Score Insights: Learn how to read and interpret the charts and breakdowns on the Demand Score page, including conversion rates, volume, trial outcomes, and per-placement and per-country analysis.
- Using Demand Score: Demand Score is a 1-100 value assigned to each user by Superwall, indicating their likelihood to convert. Use it to understand your audience and target users with the right offers.
- Access Controls: Manage organization roles, project access, and scoped API keys.
- Advanced
- All teams
- Apple Search Ads: Integrate Apple Search Ads with Superwall. View details on users acquired via search ads, visualize conversions from Apple Search Ads in charts, and create powerful campaign filters to target users using search ad data. Search ad integration requires 3.12.0 of the Superwall SDK or higher.
- Audit Log: Review organization activity in Dashboard v2.
- Billing
- Keys
- Localization
- Projects
- Public Beta
- Refund Protection
- Google Play Revenue Tracking
- Revenue Tracking
- Team
- General: Use the Settings area to set up API keys, metadata and more.
- RevenueCat Migration Guide: A guide to migrating from RevenueCat to Superwall.
- Pre-Launch Checklist: Ready to ship your app with Superwall? Here is a last minute checklist to give you confidence that you're ready to ship without issue.
- Presenting Paywalls from One Another: Learn how to present a different paywall from one that's already presented.
- Query ClickHouse: Use the Superwall API to query your organization's ClickHouse-backed analytics data.
- Superwall MCP: Manage Superwall projects, paywalls, campaigns, products, and more from AI tools like Claude Code and Cursor using the Superwall MCP.
- Superwall Skill: Give AI coding agents up-to-date Superwall docs, API access, and step-by-step SDK integration guides using the Superwall Skill.
- Abandoned Transaction Paywalls: Learn how to respond when a user starts a purchase, then cancels the transaction.
- First Touch Paywalls: Learn how to present a paywall the moment users interact with your app.
- Showing Unique Paywalls: Learn how to present a unique paywall based on the audience that was matched within a campaign.
- Feature Gating: Learn how to toggle feature gating in a paywall.
- Custom Actions: Learn how to use custom actions.
- Using Flows for Onboarding: Build first-run app onboarding with Flows, branching, user attributes, permission prompts, paywalls, and Flow Journey analytics.
- Web Flows: Build web-to-app flows that qualify campaign traffic, personalize offers, and activate users before sending them to your app.
- Welcome: Welcome to the Superwall Dashboard documentation
- Account Management: Manage your Superwall account preferences, security settings, and authentication methods.
- Managing Localization Updates
- Overview: The Overview page gives you a holistic look at how your app is performing, complete with easy-to-find key metrics and top-level campaign data.
- Users: Get a snapshot view of users who recently triggered a placement in your app, see their user journey, revenue events and more.
- Paywalls & Flows: Create, preview, duplicate, and archive paywalls and flows for the selected app.
- Adding Products
- Subscription Management: See how Superwall manages subscription states end-to-end, surface that data in the dashboard, and distribute updates across your stack.
- Surveys: Adding a paywall exit or post-purchase survey is a great way to boost conversion and get feedback on why users declined or purchased from your paywall. Once you've configured a survey, it can be attached to multiple paywalls. A user will only ever see a specific survey once unless you reset its responses.
- Templates: Use our template library to jump-start your paywall design process. Either plug in your products, switch them up to fit your needs, or remix them altogether.
- Changelog: Release notes for the Superwall Expo SDK
- Cohorting in 3rd Party Tools: To easily view Superwall cohorts in 3rd party tools, we recommend you set user attributes based on the experiments that users are included in. You can also use custom placements for creating analytics events for actions such as interacting with an element on a paywall.
- Custom Paywall Analytics: Learn how to log events from paywalls, such as a button tap or product change, to forward to your analytics service.
- 3rd Party Analytics
- Superwall Events: The SDK automatically tracks some events, which power the charts in the dashboard.
- Advanced Purchasing: If you need fine-grain control over the purchasing pipeline, use a purchase controller to manually handle purchases and subscription status.
- Custom Paywall Actions
- Game Controller Support
- Observer Mode
- Retrieving and Presenting a Paywall Yourself
- Using the Presentation Handler
- Viewing Purchased Products
- Configuring
- Consumable Products: Set up consumable products for Superwall paywalls in Expo apps.
- Debugging: Common issues and solutions when integrating the Superwall Expo SDK.
- Experimental Flags
- Handling Deep Links: Use handleDeepLink and campaign rules to present paywalls from deep links without hardcoding logic in your app.
- Local Resources: Bundle images, videos, and other assets in your app so paywalls can load them instantly from the device.
- Managing Users: Learn how to manage users in your app.
- Migrating from React Native SDK: Guide to migrating from the legacy React Native SDK
- Migrating from v1 to v2 - React Native: SuperwallKit 2.0 is a major release of Superwall's React Native SDK. This introduces breaking changes.
- Setting a Locale: Override the default device locale when using the Expo SDK so you can preview localized paywalls and targeting.
- StoreKit testing (iOS only): How to set up StoreKit testing for iOS when using the Expo SDK.
- Using Expo SDK in Bare React Native Apps: Install Superwall's Expo SDK in existing React Native projects without Expo
- Using RevenueCat: If you want to use RevenueCat to handle your subscription-related logic with Superwall, follow this guide.
- Using the Superwall Delegate
- Vibe Coding: How to Vibe Code using the knowledge of the Superwall Docs
- Web Checkout: Integrate Superwall web checkout with your iOS app for seamless cross-platform subscriptions
- Redeeming In-App: Handle a deep link in your app and use the delegate methods.
- Post-Checkout Redirecting: Learn how to handle users redirecting back to your app after a web purchase.
- Using RevenueCat: Handle a deep link in your app and use the delegate methods to link web checkouts with RevenueCat.
- Welcome: Welcome to the Superwall Expo SDK documentation
- Configure the SDK
- Feature Gating
- Handling Deep Links
- Install the SDK: Install the Superwall React Native SDK via your favorite package manager.
- Present Your First Paywall: Learn how to present paywalls in your app.
- Setting User Attributes
- Tracking Subscription State: Here's how to view whether or not a user is on a paid plan in React Native.
- User Management
- CustomPurchaseControllerProvider: A modern, hooks-based approach to handling purchases and purchase restores with the Superwall SDK.
- SuperwallError
- SuperwallLoaded
- SuperwallLoading
- SuperwallProvider
- consume(): Consume a Google Play purchase token from the Expo compat API.
- getPresentationResult(): Check the outcome of a placement without presenting a paywall.
- usePlacement: A React hook that registers a placement so it can remotely trigger a paywall, gate feature access, and expose paywall-lifecycle state.
- useSuperwall
- useSuperwallEvents
- useUser
- Overview: Reference documentation for the Superwall Expo SDK.
- Changelog: Release notes for the Superwall Flutter SDK
- Cohorting in 3rd Party Tools: To easily view Superwall cohorts in 3rd party tools, we recommend you set user attributes based on the experiments that users are included in. You can also use custom placements for creating analytics events for actions such as interacting with an element on a paywall.
- Custom Paywall Analytics: Learn how to log events from paywalls, such as a button tap or product change, to forward to your analytics service.
- 3rd Party Analytics
- Superwall Events: The SDK automatically tracks some events, which power the charts in the dashboard.
- Advanced Purchasing: If you need fine-grain control over the purchasing pipeline, use a purchase controller to manually handle purchases and subscription status.
- Custom Paywall Actions
- Game Controller Support
- Observer Mode
- Retrieving and Presenting a Paywall Yourself
- Using the Presentation Handler
- Viewing Purchased Products
- Advanced Configuration: When configuring the SDK you can pass in options that configure Superwall, the paywall presentation, and its appearance.
- Consumable Products: Set up consumable products for Superwall paywalls in Flutter apps.
- Experimental Flags
- Handling Deep Links: Use handleDeepLink and campaign rules to present paywalls from deep links without hardcoding logic in your app.
- Migrating from v1 to v2 - Flutter: SuperwallKit 2.0 is a major release of Superwall's Flutter SDK. This introduces breaking changes.
- Using Superwall Deep Links: (iOS only) How to use Superwall Deep Links to trigger paywalls or custom in-app behavior.
- StoreKit testing (iOS only): How to set up StoreKit testing for iOS when using the Flutter SDK.
- Using RevenueCat
- Using the Superwall Delegate
- Vibe Coding: How to Vibe Code using the knowledge of the Superwall Docs
- Web Checkout: Integrate Superwall web checkout with your iOS app for seamless cross-platform subscriptions
- Redeeming In-App: Handle a deep link in your app and use the delegate methods.
- Post-Checkout Redirecting: Learn how to handle users redirecting back to your app after a web purchase.
- Using RevenueCat: Handle a deep link in your app and use the delegate methods to link web checkouts with RevenueCat in Flutter.
- Welcome: Welcome to the Superwall Flutter SDK documentation
- Configure the SDK
- Presenting Paywalls: Control access to premium features with Superwall placements.
- Handling Deep Links
- Install the SDK: Install the Superwall Flutter SDK via pub package manager.
- Setting User Attributes
- Tracking Subscription State: Here's how to view whether or not a user is on a paid plan in Flutter.
- User Management
- CustomerInfo: Contains the latest subscription and entitlement information about the customer.
- Entitlements: Container for all entitlements available to the user, organized by status.
- IntegrationAttribute: Attributes for third-party integrations with Superwall.
- NonSubscriptionTransaction: Represents a non-subscription transaction (consumables and non-consumables).
- PaywallOptions: Configuration for paywall presentation and behavior in the Superwall Flutter SDK.
- PaywallPresentationHandler: A handler class that provides status updates for paywall presentation in registerPlacement() calls.
- PresentationResult: The result of a paywall presentation attempt.
- PurchaseController: An abstract class for handling custom purchase flows and subscription management.
- RedemptionResult: Result types returned when the Flutter SDK redeems a web checkout link.
- StoreIdentifiers: Store-specific identifiers returned with successful Flutter web checkout redemptions.
- StoreTransaction: A public wrapper around store transaction data in Flutter SDK events.
- SubscriptionTransaction: Represents a subscription transaction in the customer's purchase history.
- Superwall.shared: The shared Superwall instance that provides access to all SDK methods.
- SuperwallDelegate: An abstract class that receives global SDK events for analytics and lifecycle management.
- SuperwallOptions: Configuration options for customizing Superwall SDK behavior.
- TransactionProduct: A public product identifier wrapper exported by the Flutter SDK.
- setSubscriptionStatus(): Manually sets the user's subscription status when using a custom PurchaseController.
- configure(): A static method that configures the Superwall SDK with your API key.
- consume(): Consumes an in-app purchase by its purchase token.
- getCustomerInfo(): Gets the latest customer information including subscriptions, transactions, and entitlements.
- getEntitlements(): Gets all entitlements available to the user, organized by status.
- getPresentationResult(): Check the outcome of a placement without presenting a paywall.
- getUserId(): Gets the current user ID that was set via identify().
- handleDeepLink(): Processes deep links to trigger paywall previews and handle Superwall URLs.
- identify(): Associates a user ID with the current user for analytics and user tracking.
- Overview: Reference documentation for the Superwall Flutter SDK.
- overrideProductsByName: Globally override products on any paywall by product name.
- registerPlacement(): A function that registers a placement that can be remotely configured to show a paywall and gate feature access.
- setIntegrationAttribute(): Sets a single attribute for third-party integrations.
- setIntegrationAttributes(): Sets multiple attributes for third-party integrations at once.
- setUserAttributes(): Sets custom attributes for the current user that can be used in campaign targeting.
- subscriptionStatus: A Stream that emits the user's current subscription status whenever it changes.
- Using New SDK Features: Superwall's recent SDK updates bring several new improvements and features. Here's how to get started quickly.
- Adjust: The Adjust integration automatically sends Superwall subscription and payment events to Adjust via the server-to-server (S2S) event API. Configure per-platform app tokens, map individual event tokens, and track subscription lifecycle events with device-level attribution.
- Amplitude: The Amplitude integration automatically sends Superwall subscription and payment events to your Amplitude project. Track subscription lifecycle events, analyze revenue metrics, and understand user behavior with automatic event mapping and revenue tracking.
- Apple Retention Messaging: Configure Apple's Retention Messaging API in Superwall, including the callback URL, messages, default message mappings, and real-time configurations.
- Apple Search Ads: Integrate Apple Search Ads with Superwall. View details on users acquired via search ads, visualize conversions from Apple Search Ads in charts, and create powerful campaign filters to target users using search ad data. Search ad integration requires 3.12.0 of the Superwall SDK or higher.
- Appstack: The Appstack integration forwards Superwall webhook events directly to Appstack for analytics and attribution. As a pass-through integration, it sends the raw event payload without transformation, giving Appstack full access to your subscription lifecycle data.
- AppStance: The AppStance integration sends Superwall subscription and payment events to the AppStance platform for Apple Ads ROAS optimization. Automatically forward iOS transaction data with Apple Search Ads attribution for campaign performance analysis.
- Customer.io: The Customer.io integration sends subscription lifecycle events from Superwall to Customer.io's Data Pipelines API. This enables you to trigger targeted messaging campaigns, build user segments based on subscription behavior, and track the complete customer journey from trial to paid subscriber.
- Discord: The Discord integration sends real-time subscription notifications to your Discord channels via webhooks. Get instant visibility into subscription activity with beautifully formatted, color-coded embed messages that make it easy to monitor revenue, track trials, and respond to billing issues as they happen.
- Facebook Pixel: Track browser-side paywall and checkout events from Superwall web paywalls with Facebook Pixel. This integration injects Meta's client-side Pixel script and maps Web2App events to Pixel events.
- Figma Plugin: The Superwall Figma Plugin allows designers to convert Figma designs into fully functional paywalls with one click.
- Firebase: The Firebase integration automatically sends Superwall subscription and payment events to Firebase Analytics (Google Analytics 4) using the Measurement Protocol. Track subscription lifecycle events, analyze revenue metrics, and leverage Firebase's powerful analytics capabilities.
- Integrations: Use webhooks to get real-time notifications about your app's subscription and payment events. Integrate Superwall with other services.
- Meta Conversion API: Send subscription lifecycle events from Superwall to Meta's server-side Conversion API. Use this integration to report subscriptions, renewals, cancellations, refunds, and other revenue events to your Meta Pixel.
- Mixpanel: The Mixpanel integration allows you to automatically send Superwall subscription and payment events to your Mixpanel project.
- PostHog: The PostHog integration automatically sends Superwall subscription and payment events to your PostHog project using the Batch API. Track subscription lifecycle events, analyze revenue metrics, and enrich user profiles with automatic event mapping and minor-unit revenue conversion.
- Slack: The Slack integration sends real-time notifications about subscription events to your Slack channels. Get instant updates about new subscribers, cancellations, renewals, and revenue changes with rich, color-coded messages and contextual emojis.
- Statsig: The Statsig integration allows you to automatically send Superwall subscription and payment events to your Statsig project. This integration provides comprehensive event tracking with user properties for experimentation and analytics.
- Verify Webhook Requests: Learn how to verify webhook requests using the signing secret to ensure authenticity and security.
- Webhooks: Use webhooks to get real-time notifications about your app's subscription and payment events.
- Verify Webhook Requests: Learn how to verify webhook requests using the signing secret to ensure authenticity and security.
- Interactive Paywall Preview: The interactive paywall preview shows how your paywall looks on certain iOS devices, for different configurations:
- Changelog: Release notes for the Superwall iOS SDK
- Cohorting in 3rd Party Tools: To easily view Superwall cohorts in 3rd party tools, we recommend you set user attributes based on the experiments that users are included in. You can also use custom placements for creating analytics events for actions such as interacting with an element on a paywall.
- Custom Paywall Analytics: Learn how to log events from paywalls, such as a button tap or product change, to forward to your analytics service.
- 3rd Party Analytics
- Superwall Events: The SDK automatically tracks some events, which power the charts in the dashboard.
- Advanced Purchasing: If you need fine-grain control over the purchasing pipeline, use a purchase controller to manually handle purchases and subscription status.
- Custom callbacks: Handle custom callback requests from paywalls to run app-side logic and return results.
- Custom Paywall Actions
- Purchasing Products Outside of a Paywall
- Game Controller Support
- Observer Mode
- Retrieving and Presenting a Paywall Yourself
- Request permissions from paywalls: Trigger the iOS system permission dialog directly from a Superwall paywall action.
- Using the Presentation Handler
- Viewing Purchased Products
- App Store Privacy Labels
- Advanced Configuration: When configuring the SDK you can pass in options that configure Superwall, the paywall presentation, and its appearance.
- Consumable Products: Set up consumable products for Superwall paywalls on iOS.
- Custom Store Products: Sell products from non-App Store billing systems on iOS paywalls using a PurchaseController.
- Making Purchases: Purchase any StoreKit product easily, with or without a paywall.
- Article-Style Paywalls: Inline with Additional Plans: Embed an inline paywall in a scrollable article and optionally present a second full-screen paywall for additional plans.
- Experimental Flags
- Handling Deep Links: Use handleDeepLink and campaign rules to present paywalls from deep links without hardcoding logic in your app.
- Overriding Introductory Offer Eligibility: Control when users see free trials and intro offers on your paywalls by overriding the default eligibility logic.
- Local Resources: Bundle images, videos, and other media in your app for use in paywalls, enabling faster load times and offline support.
- Migrating from v2 to v3 - iOS: SuperwallKit 3.0 is a major release of Superwall's iOS SDK, previously known as
Paywall. This introduces breaking changes. - Migrating from v3 to v4 - iOS: SuperwallKit 4.0 is a major release of Superwall's iOS SDK. This introduces breaking changes.
- Using Superwall Deep Links: How to use Superwall Deep Links to trigger paywalls or custom in-app behavior.
- Test Mode: Simulate in-app purchases without StoreKit using test mode, which lets you test your entire paywall flow end-to-end.
- Setting up StoreKit testing
- Using RevenueCat
- Using the Superwall Delegate
- Vibe Coding: How to Vibe Code using the knowledge of the Superwall Docs
- Web Checkout: Integrate Superwall web checkout with your iOS app for seamless cross-platform subscriptions
- Redeeming In-App: Handle a deep link in your app and use the delegate methods.
- Post-Checkout Redirecting: Learn how to handle users redirecting back to your app after a web purchase.
- Using RevenueCat: Handle a deep link in your app and use the delegate methods to link web checkouts with RevenueCat.
- Welcome: Welcome to the Superwall iOS SDK documentation
- Configure the SDK
- Presenting Paywalls: Control access to premium features with Superwall placements
- Handling Deep Links
- Install the SDK
- Setting User Attributes: Customize paywalls and target users by setting user attributes
- Tracking Subscription State: Monitor user subscription status in your iOS app
- User Management: Identifying users and managing their identity in your iOS app
- NonSubscriptionTransaction: Represents a non-subscription transaction (consumables and non-consumables).
- PaywallOptions: Configuration for paywall presentation and behavior in the Superwall iOS SDK.
- PaywallPresentationHandler: A handler class that provides status updates for paywall presentation in register() calls.
- PurchaseController: A protocol for handling Superwall's subscription-related logic with your own purchase implementation.
- SubscriptionTransaction: Represents a subscription transaction in the customer's purchase history.
- Superwall: The shared instance of Superwall that provides access to all SDK features.
- SuperwallDelegate: A protocol that handles Superwall lifecycle events and analytics.
- SuperwallEvent: An enum representing analytical events that are automatically tracked by Superwall.
- SuperwallOptions: A configuration class for customizing paywall appearance and behavior.
- getPaywall(): A function that retrieves a PaywallViewController for custom presentation.
- configure(): A static function that configures a shared instance of Superwall for use throughout your app.
- confirmAllAssignments: Confirms all experiment assignments and returns them in an array.
- customerInfo: Contains the latest information about all of the customer's purchase and subscription data.
- entitlements: The entitlements tied to the device, accessible via Superwall.shared.entitlements.
- getCustomerInfo: Gets the latest CustomerInfo asynchronously.
- getDeviceAttributes: Gets properties stored about the device that are used in audience filters.
- getPresentationResult(): Check the outcome of a placement without presenting a paywall.
- handleDeepLink(): A function that handles deep links and triggers paywalls based on configured campaigns.
- identify(): A function that creates an account with Superwall by linking a userId to the automatically generated alias.
- Overview: Reference documentation for the Superwall iOS SDK.
- integrationAttributes: Gets the current integration attributes that have been set.
- localResources: Register local resources so paywalls can load bundled media by resource ID.
- refreshConfiguration: Manually refreshes the Superwall configuration. Intended for development and wrapper SDKs.
- register(): A function that registers a placement that can be remotely configured to show a paywall and gate feature access.
- setIntegrationAttributes: Sets integration attributes for third-party analytics and attribution providers.
- setUserAttributes(): A function that sets user attributes for use in paywalls and analytics on the Superwall dashboard.
- subscriptionStatus: A published property that indicates the subscription status of the user.
- userId: A property on Superwall.shared that returns the current user's ID.
- Layout Tab
- 3rd Party Analytics (Legacy): Superwall can easily be integrated with 3rd party analytics tools.
- Purchases and Subscription Status (Legacy)
- Cohorting in 3rd Party Tools (Legacy): To easily view Superwall cohorts in 3rd party tools, we recommend you set user attributes based on the experiments that users are included in. You can also use custom placements for creating analytic events for actions such as interacting with an element on a paywall.
- Configuring the SDK (Legacy): As soon as your app launches, you need to configure the SDK with your Public API Key. You'll retrieve this from the Superwall settings page.
- Custom Paywall Actions (Legacy): You can set the click behavior of any element on a paywall to be a custom paywall action. This allows you to tie any tap in your paywall to hard-coded application logic.
- Showing Paywalls (Legacy): At the heart of Superwall's SDK lies
Superwall.shared.register(event:params:handler:feature:). - User Management (Legacy): It is necessary to uniquely identify users to track their journey within Superwall.
- Deep Links and In-App Previews (Legacy): It's important to tell Superwall when a deep link has been opened. This enables two things:
- iOS - CocoaPods (Legacy): Install the Superwall iOS SDK via CocoaPods. To see the latest release, check out the repository.
- Android - Gradle (Legacy): Install the Superwall Android SDK via Gradle. To see the latest release, check out the repository.
- React Native - Package.json (Legacy): Install the Superwall React Native SDK via npm or yarn. To see the latest release, check out the repository.
- Flutter - pubspec.yaml (Legacy): Install the Superwall Flutter SDK via pub package manager. To see the latest release, check out the repository.
- iOS - Swift Package Manager (Legacy): Install the Superwall iOS SDK via Swift Package Manager. To see the latest release, check out the repository.
- Installation (Legacy): Superwall can be installed with many different package managers. Please find your preferred package manager below.
- Pre-Launch Checklist (Legacy): Ready to ship your app with Superwall? Here is a last minute checklist to give you confidence that you're ready to ship without issue.
- Presenting Paywalls from One Another (Legacy): Learn how to present a different paywall from one that's already presented.
- Retrieving and Presenting a Paywall Yourself (Legacy): Use this technique to get an instance of a paywall manually, using either UIKit, SwiftUI, or Jetpack Compose.
- Setting User Attributes (Legacy): By setting user attributes, you can display information about the user on the paywall. You can also define audiences in a campaign to determine which paywall to show to a user, based on their user attributes.
- Superwall Events (Legacy): The SDK automatically tracks some events, which power the charts in the dashboard.
- Troubleshooting (Legacy)
- Using RevenueCat (Legacy): If you want to use RevenueCat to handle your subscription-related logic with Superwall, follow this guide.
- Using the Superwall Delegate (Legacy): Use a Superwall delegate to help interface with 3rd party analytics, see which product was purchased on a paywall, handle custom events and more.
- Passing in options (Legacy): When configuring the SDK you can pass in options that configure Superwall, the paywall presentation, and its appearance.
- Localization
- Paywall Settings Sidebar: The settings sidebar is split into 3 sections: Products; Design; and Advanced.
- Changelog: Release notes for the Superwall React Native SDK
- Welcome: Welcome to the Superwall React Native SDK documentation
- PaywallOptions: Options for configuring the appearance and behavior of paywalls.
- PaywallPresentationHandler: Handles events related to paywall presentation.
- PurchaseController: An abstract class that defines the contract for a purchase controller.
- Superwall: The shared instance of Superwall that provides access to all SDK features.
- SuperwallDelegate: A class that handles Superwall lifecycle events and analytics.
- SuperwallOptions: Options for configuring the Superwall SDK.
- configure(): A static function that configures a shared instance of Superwall for use throughout your app.
- getUserAttributes(): Retrieves the user attributes, set using setUserAttributes.
- handleDeepLink(): Handles a deep link.
- identify(): Creates an account with Superwall by linking the provided userId to Superwall's automatically generated alias.
- Overview: Reference documentation for the Superwall React Native SDK.
- register(): A function that registers a placement that can be remotely configured to show a paywall and gate feature access.
- setUserAttributes(): Sets user attributes for use in paywalls and on the Superwall dashboard.
- Subscription Status: Methods for getting and setting the user's subscription status.
- Types and Enums: Reference for types, enums, and result objects used in the React Native SDK.
- Recipes: Learn how to use Superwall in novel ways to increase your revenue. Discover common patterns you can use today and come back often as we update this page with new tips.
- How do I change my login email address?
- How do I update my Apple Small Business Program status in Superwall?
- Why don't trial conversion and cancellation rates add up to 100%?
- Video: Revenue Charts Tour
- Video: Breaking Down Revenue Charts by User Attributes
- How is the Estimated ARPU metric calculated in Superwall?
- How do I find my Superwall Server Secret?
- How to Optimize Refund Protection Settings
- Video: Configuring Products to use in Superwall
- Video: How to Show Different Paywalls to Certain Users with Audiences
- Video: Get Started with Apple Search Ads
- How do I add my VAT number to invoices?
- How can I recover an archived product in Superwall?
- What is the difference between "Trial Cancel" and "Trial Expire" tags?
- A Superwall product tour
- Why is initial conversion lower than new trials on some days?
- How to Start a Fresh A/B Test: Learn the different ways to start a new A/B test with clean metrics, whether by resetting assignments or creating a new campaign.
- Dashboard: Learn how to use the Superwall Dashboard to manage your paywalls, campaigns, and users.
- What is the legacy User role in team settings?: The User role is a legacy role with Admin-level permissions, kept for backward compatibility. New team members should use the current roles instead.
- Why does the "SDK releases behind" warning still appear after updating?
- How to Transfer Your App to a New Owner
- How does Superwall's pricing work?
- Are Paywall Events and Urgency Messaging App Store Compliant?: Learn about Apple App Store compliance for paywall events like Paywall Dismissed and Transaction Abandoned, as well as urgency-style messaging.
- Can I pre-authenticate users on the subscription management page?
- How do I migrate my existing purchases to RevenueCat?
- How much does Superwall increase app size on iOS?
- How do I extract Apple Search Ads attribution data from Superwall?: Learn how to access raw Apple Search Ads attribution data from the Superwall SDK on the client side, since ASA data is not included in webhooks or third-party integration payloads.
- How do I migrate to Superwall from another provider?: Guide for migrating from Adapty, Qonversion, Glassfy, or other subscription SDKs to Superwall
- FAQ: Common questions and answers about Superwall.
- Why is my Android app missing historical revenue data after setting up the Google Play integration?
- Why is my transaction failure rate high?
- Support Center: Need help with anything Superwall-related? We're here to help.
- Video: How to create a countdown timer on a paywall
- Video: Adding Products to Paywalls
- Are video and images automatically compressed when uploaded to a paywall via the editor?
- Video: Building your first paywall
- Video: Using Custom Actions to Setup Referral Systems
- When adding a product, is it possible to fetch the price for non subscription products?
- Video: How to use custom actions in your paywall
- Video: Showing paywalls with a discount for abandoned transactions
- Video: Using Custom Placements for Tracking Paywall Interactions
- Display dynamic images in your paywalls
- Video: Feature Gating
- Video: How to make paywalls adapt to device, light or dark mode, and more.
- Video: Building a Multi-Tier Paywall using the Superwall Editor
- How do I animate elements in the Superwall editor?
- Video: How to use Dynamic Values
- Video: Tracking User Behavior on Paywalls
- Paywall Editor: Menus or Modals Closing
- How do I copy a paywall from one account to another?
- Can I delete or update existing snippets?
- Video: AI Image Generation in Paywalls
- Paywall Editor: Learn how to use the Superwall Paywall Editor to create and manage your paywalls.
- Localizing Paywalls with Dynamic Values: How to display localized paywall text using dynamic values and the device locale, without needing the built-in localization feature.
- How to setup sandbox testing without affecting production metrics
- Video: How to present a paywall from the first touch in app
- Video: How to Install and Configure the Superwall SDK in Flutter (In Under 2 Minutes!)
- How to Setup Web Restoration Alert Options
- Video: Presenting a Paywall in an iOS App Using Superwall
- Video: Using Xcode's Transaction Manager
- How do I disable Streamlined Purchasing for iOS apps?
- Video: How to Install Superwall's SDK into your iOS App
- Video: Making a Purchase with Superwall
- SDK: Learn how to use the Superwall SDK to integrate Superwall into your app.
- Why isn't my free trial showing up in my paywall?
- Troubleshooting: Android SDK
- Why aren't my transactions attributing to a placement/paywall?
- Why am I seeing a billing issue after my free trial ends?
- Troubleshooting: Expo SDK
- Why is my webhook's originalAppUserId different from the user ID I set?
- Why am I not receiving webhook events?
- Why are my webhook events not triggering?
- Troubleshooting
- Why am I seeing "Sign in to Apple Account" when testing in-app purchases?
- Paywall Not Showing
- Troubleshooting: Flutter SDK
- Why am I seeing 520 errors from the events API endpoint?
- Why am I getting PlacementNotFound errors for active placements in Expo?
- Why does my subscription status remain INACTIVE after successful purchase?
- Troubleshooting: iOS SDK
- Why does my entitlement show "Missing App ID" after connecting App Store Connect API?
- Why are my products showing "Unknown" status in Superwall?
- Why is my paywall not loading on Android with Billing Service Unavailable?
- How to Test Paywalls with Local Currency for a Specific Country: Learn how to preview your paywall as a user in a specific country would see it, including local currency and audience matching.
- Troubleshooting
- Products Not Loading: iOS
- Products Not Loading: Android
- Products Not Loading: iOS Simulator
- Products Not Loading: iOS Device with StoreKit config file
- Products Not Loading: Browser Preview
- Products Not Loading: Troubleshooting Guide
- Why does my user show active subscription but no data in the dashboard?: Understanding why a user may have an active subscription on device but no entitlements, Apple events, or webhooks in the Superwall dashboard
- How to Debug Paywall Issues in Production: Learn how to use the dashboard’s event logs to debug paywall behavior for real users.
- Why Are Users Still Seeing a Removed Paywall?: Troubleshoot why some users continue to see a paywall that you have removed from all campaigns, and learn how to reset sticky assignments.
- Paywall Memory Usage on iOS: Investigate why your paywall might look like it's using more memory than you expect in Instruments.
- Why are my trials still showing as pending after they should have converted?
- Sandbox Entitlements Persist After Reset: Why Apple sandbox entitlements remain active after clearing purchase history and reinstalling, and how to work around this limitation.
- Sandbox Free Trial Isn’t Appearing: Why free trials sometimes don’t show up in sandbox testing and what to do about it.
- StoreKit Transactions Not Clearing in Xcode: Fix for when a test transaction seems stuck or active when it shouldn’t be.
- TestFlight Subscriptions: Learn why subscriptions behave differently in TestFlight, including identity resets and accelerated renewal schedules.
- Fixing Unexpected Paywall Behavior: Step-by-step checklist when a paywall shows up when it shouldn’t—or doesn’t when it should.
- Why is my paywall not updating after publishing?: Troubleshoot why users may still see an outdated paywall after you've made and published updates in the Superwall dashboard
- Video: Web Checkout Tour on iOS
- Why am I seeing "An error occurred while loading the Stripe Portal" in the manage subscription page?
- How do I disable the activation link email for web checkout?
- How do I retrieve Stripe customer data after web checkout?: Learn how to access the Stripe customer ID and email after a user completes a web checkout purchase.
- Web Checkout: Learn how to use the Superwall Web Checkout to integrate Web Checkout into your app.
- Why is there no revenue tracking setup for web checkout?: Web checkout revenue tracking is automatic when using Stripe, unlike iOS and Android which require manual configuration.
- Changelog: Changelog for the Superwall Unity SDK beta.
- Advanced Configuration: Configure beta Superwall Unity SDK options and advanced APIs.
- Custom Purchase Controller: Use a custom purchase controller with the Unity SDK beta.
- Game Controller Input: Enable game controller support for Unity paywalls.
- Using the Superwall Delegate: Receive Superwall lifecycle callbacks in Unity.
- Welcome: Welcome to the Superwall Unity SDK beta documentation.
- Configure the SDK: Configure Superwall once when your Unity game starts.
- Install the SDK: Install the Superwall Unity SDK beta through Unity Package Manager.
- Presenting Paywalls: Register Superwall placements from Unity C# scripts.
- Tracking Subscription State: Read or set subscription status from a Unity game.
- User Management: Identify, reset, and attach attributes to Unity players.
- SDK Reference: Reference for the Superwall Unity SDK beta C# API.
- Using Implicit Events: The following Superwall Events are automatically registered by the SDK and can be added as events in campaigns to present paywalls.
- Using Placement Parameters: Define and consume placement parameters in paywalls across platforms, including web checkout query parameters.
- Using Referral or Promo Codes with Superwall: Learn how to use referral or promo codes with Superwall.
- Using RevenueCat: If you want to use RevenueCat to handle your subscription-related logic with Superwall, follow this guide.
- Using Superwall with Cursor: Use our SDK footprint file, along with a custom Cursor User Rule, to use Superwall with AI.
- Home Page
- Using the Presentation Handler: When and how to use per-presentation handlers for paywalls, and how they differ from global delegates.
- Variable Reference
- Overview: Let customers purchase products online via Stripe, then link them to your iOS app with one seamless flow. No authentication required.
- Adaptive Pricing: Let web checkout customers pay in a local currency with Stripe Adaptive Pricing.
- Creating Products: Create products in Stripe to show on your web paywalls.
- Stripe Setup: Connect Superwall to Stripe using the official Stripe app and configure your settings.
- Creating an App: Add a Stripe app to an existing project within Superwall.
- Web Checkout Links: Learn how to use campaigns and placements to present web paywalls using Superwall's web checkout links.
- App2Web: Link U.S. customers from iOS paywalls to Safari for Stripe checkout.
- Web Checkout FAQ: Frequently asked questions about web checkout.
- Restoring & Managing Purchases: Learn how users can manage and restore purchases made via the web.
- SDK Setup: Set up your app to handle Web Checkout purchases, deep links, and post-checkout redirecting.
- Stripe One-Time Purchases: Use Stripe one-time prices for lifetime access or consumable purchases in web checkout.
- Sandbox Purchases: Test with your web paywalls by using sandbox products.
- Web-Only Checkout: Use web checkout without a mobile app for web apps, websites, or any non-App-Store product.
Workflow automation software for everyone. Automate your work across 7,000+ app integrations—no developers, no IT tickets, no delays.
Dub.co is the open-source link management platform for modern marketing teams to create marketing campaigns, link sharing features, and referral programs.
We help modern software companies drive more up-sells, cross-sells and renewals through industry leading product onboarding, engagement, and adoption.
Respond to customers on any channel, sync with your entire team and turn support conversations into product strategy.
Platform for businesses to send gifts to customers/employees.
Loops makes email marketing for modern SaaS companies easy. It's the best way to create, send and track beautiful email campaigns.
Drive pipeline with 10+ intent data sources, AI, and automation. Scale prospecting, personalization, engagement in one unified workflow.