AI-powered paywalls, subscriptions and experiments for Android apps.
Get started · Manual setup · Docs · Examples
Paste this into your coding agent. It installs the SDK, sets up entitlements and adds your first paywall.
Install Superwall into my app using the skill at github.com/superwall/skills
Prefer a guided setup? Run this from your app’s folder. It signs you up or in, then runs Claude Code or Codex for you:
npx superwall integrateRead the agent integration guide for details.
Moving from a different platform?
Run this from your app’s folder. It follows the same steps, starting from your existing setup:
npx superwall migrateInstall and configure the SDK yourself. Requires minSdk 23 or later.
Add the dependency to your app’s build.gradle.kts, using the latest version:
implementation("com.superwall.sdk:superwall-android:<latest-version>")Then add the permissions and the paywall activity to your AndroidManifest.xml:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.android.vending.BILLING" />
<application ...>
<activity
android:name="com.superwall.sdk.paywall.view.SuperwallPaywallActivity"
android:theme="@style/Theme.MaterialComponents.DayNight.NoActionBar"
android:configChanges="orientation|screenSize|keyboardHidden" />
<activity android:name="com.superwall.sdk.debug.DebugViewActivity" />
<activity android:name="com.superwall.sdk.debug.localizations.SWLocalizationActivity" />
<activity android:name="com.superwall.sdk.debug.SWConsoleActivity" />
</application>Using a version catalog or Groovy
libs.versions.toml:
[libraries]
superwall-android = { group = "com.superwall.sdk", name = "superwall-android", version = "<latest-version>" }Groovy build.gradle:
implementation "com.superwall.sdk:superwall-android:<latest-version>"Create a Superwall account and copy your app’s public API key from the dashboard. Configure Superwall once, in your Application:
class MainApplication : Application() {
override fun onCreate() {
super.onCreate()
Superwall.configure(this, "YOUR_PUBLIC_API_KEY")
}
}A placement is a named point in your app where a campaign can show a paywall. On the dashboard, add the premium_feature placement to a campaign and give it a paywall. Then call this where someone opens the feature:
Superwall.instance.register("premium_feature") {
// Open your feature here.
}The campaign decides whether a paywall shows. With no paywall set up, the feature runs straight away. See the Android guide for purchases and testing. Test on a device or emulator with the Play Store, signed in to a Google account.
| Platform | Support |
|---|---|
| Android | minSdk 23+ · Kotlin and Java · Views and Jetpack Compose |
| Jetpack Compose | com.superwall.sdk:superwall-compose for PaywallComposable |
| Billing | Google Play Billing, or your own purchase controller |
- Paywalls and onboarding flows: build single paywalls or multi-page onboarding in the dashboard and publish changes without an app release.
- Experiments: target audiences with campaigns and A/B test paywalls, prices and flows.
- Web checkout and funnels: sell through Stripe on the web and share web funnels as links.
- Subscriptions and entitlements: Google Play Billing purchases with server-side validation, or bring your own purchase controller.
- Retention: free trial reminders, cancellation surveys, abandoned-purchase offers and win-back paywalls.
- Customer Center: a ready-made screen where users manage their subscription.
- Revenue analytics: conversions, trials, MRR, churn and LTV, also available over SQL and webhooks.
- Agent tooling: skills, an MCP server and a CLI so your coding agent can set up and run Superwall.
- Example app: configuring Superwall, presenting a paywall, and identifying and resetting users.
See the release notes and the changelog for changes between versions.
Read the docs for setup help, or report a bug with your SDK version and steps to reproduce it. To contribute, read the contributing guide.
Superwall for Android is available under the MIT license.
