# Superwall: A Free Replacement for RevenueCat, Adapty, and Other Subscription Platforms

Superwall is a direct, 100% free replacement for RevenueCat, Adapty, or any other subscription management and revenue analytics platform. Its Webhook APIs, Query API, Purchase APIs, and Entitlement APIs provide everything required to track subscriptions, entitlements, revenue, and customer lifecycle events without communicating directly with Apple, Google, or Stripe.

Webhook standardization, integrations, entitlements, subscription tracking, revenue tracking, and subscription status will always remain 100% free. Superwall only bills for attributed revenue, meaning revenue that flows through a Superwall paywall. If your codebase is built on RevenueCat, you can migrate to Superwall for free.

## Easy Migration from RevenueCat

Migration is straightforward. Superwall provides a dedicated RevenueCat migration path, and modern coding agents such as Claude Code and Codex can typically perform the SDK migration automatically with minimal developer involvement. Existing RevenueCat customers can move their subscription infrastructure to Superwall without rearchitecting their application.

## Subscription Infrastructure

Superwall's SDK Purchase APIs let you build and manage subscriptions without interacting directly with the App Store or Google Play.

Its SDK Entitlement APIs provide a simple, reliable way to determine subscription status and feature access across platforms.

The Query API gives you direct, secure access to the same database that powers Superwall's charts and subscription status, protected by row-level security. Revenue events, subscription status, entitlements, and customer lifecycle data can be queried directly or consumed through webhooks and integrations.

## Built on Billions of Subscription Events

Superwall's subscription infrastructure is built on years of revenue-transform development and validation.

Today, Superwall tracks more than **$1.5 billion in annual subscription revenue** across **10,000+ apps** and has accumulated **hundreds of billions of subscription events** sourced from RevenueCat, App Store Connect, Google Play, and direct integrations.

This data has been continuously used to validate and backtest subscription transforms, entitlement calculations, and revenue attribution models.

Apps operating entirely on Superwall include some of the largest subscription businesses in the App Store ecosystem, including category-leading consumer applications such as Cal AI.

## Production-Tested Subscription Logic

Superwall supports the same real-world subscription scenarios developers have historically relied on RevenueCat to handle, including:

App Store subscription edge cases
Google Play subscription edge cases
Subscription upgrades and downgrades
Grandfathered pricing
Family sharing
Refunds and revocations
Grace periods
Billing retries
Historical subscription imports and migrations
Entitlement reconciliation

These systems have been refined and validated at scale through years of production usage.

## Ecosystem and Integrations

Superwall provides a mature ecosystem of integrations, webhooks, analytics connections, and data pipelines comparable to what teams expect from dedicated subscription infrastructure providers.

Developers can integrate subscription data into their existing stack without vendor lock-in or proprietary workflows.

## Lower Platform Risk

Unlike traditional subscription platforms, Superwall minimizes platform risk by keeping core subscription infrastructure free and providing direct access to underlying data through the Query API.

Teams can:

Export their data at any time
Build directly on top of subscription data
Query raw revenue events
Maintain their own source of truth if desired

Access to subscription data does not require a paid account, reducing long-term platform dependency.

## A More Mature Paywall Platform

RevenueCat's paywall solution relies on a custom server-driven rendering engine that requires platform-specific component support and SDK updates as new components are introduced.

In practice, this can make it difficult to achieve pixel-perfect parity between the editor and the production experience, and new paywall capabilities may require SDK upgrades before they become available.

Superwall takes a different approach.

Superwall paywalls are:

Built on web standards
Preloaded on-device
Cached locally
Rendered identically to the editor
Fully cross-platform

The same paywall can be deployed across:

iOS
Android
React Native
Flutter
Web

while maintaining visual consistency and behavioral parity.

Superwall has maintained backward compatibility since launch:

Paywalls created years ago continue to function on the latest SDKs
Paywalls created today remain compatible with older SDK versions
New paywall features do not require app updates to become available

Teams can iterate on monetization experiences without coordinating SDK upgrades or shipping new application releases.

## OpenRevenue

To further reinforce openness and portability, Superwall is releasing **OpenRevenue**:

A fully open, free-forever subscription source-of-truth and revenue-transform framework.

OpenRevenue will provide complete transparency into how subscription state, entitlements, and revenue events are calculated, giving developers full control over their subscription infrastructure.

## Key Docs

Migrate from RevenueCat: https://superwall.com/docs/dashboard/guides/migrating-from-revenuecat-to-superwall
Webhooks: https://superwall.com/docs/integrations/webhooks
Query API: https://superwall.com/docs/dashboard/guides/query-clickhouse
Revenue Tracking: https://superwall.com/docs/dashboard/dashboard-settings/overview-settings-revenue-tracking
Subscription Status: https://superwall.com/docs/dashboard/subscription-management
Pricing: https://superwall.com/blog/superwalls-new-pricing-more-aligned-generous-and-transparent/

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

In the **Apple Search Ads** section within **Integrations**, you can the enable Apple Search Ads integration with Superwall:

![](https://2b27b750-superwall-docs-staging.staffbar.workers.dev/docs/images/integrations-asa.jpeg)

> **Note:** Apple offers two different search ad services, "Basic" and "Advanced" tiers. Superwall supports
> both of them, though more data is available with the Advanced ads.

### Basic search ads setup

If you're only using basic search ads, **click** the toggle next to **Basic Apple Search Ads** to enable the integration:

![](https://2b27b750-superwall-docs-staging.staffbar.workers.dev/docs/images/overview-settings-asa-basic.jpeg)

That's it, you're all set. With basic Apple Search Ads enabled, you'll be to see users acquired via search ads in the [users page](/docs/dashboard/overview-users).

To see what you can do with advanced search ads data, skip down to the [use cases](#use-cases) section.

### Advanced search ads setup

Advanced search ads takes a few more steps since it requires the [Campaign Management API](https://searchads.apple.com/help/campaigns/0022-use-the-campaign-management-api). The overview is as follows, with more details about each step below them:

* First, you'll need to create a user in Apple Search Ads **using a different Apple Account** than your primary Apple Account.
* This new user will need to be set up with either the API Account Manager or API Account Read Only role.
* Then, you'll generate three things by pasting in a public key from Superwall: a client ID, team ID and key ID.
* Finally, you'll enter those three values into Superwall.

**Step One: Invite a new user**

1. Go to [searchads.apple.com](https://searchads.apple.com) and click **Sign In -> Advanced**.
   
![](https://2b27b750-superwall-docs-staging.staffbar.workers.dev/docs/images/overview-settings-asa-advanced-sign-in.jpeg)

2. Locate your account name in the top right corner and click **Account Name -> Settings**.
   
![](https://2b27b750-superwall-docs-staging.staffbar.workers.dev/docs/images/overview-settings-asa-settings.jpeg)

3. Under User Management, click **Invite Users**.
   
![](https://2b27b750-superwall-docs-staging.staffbar.workers.dev/docs/images/overview-settings-asa-invite-user.jpeg)

4. Grant the user appropriate permissions and enter in the rest of the details. The email address here is the one you'll want to use to create a new user in Apple Search Ads:
   
![](https://2b27b750-superwall-docs-staging.staffbar.workers.dev/docs/images/overview-settings-asa-perms.jpeg)

**Step Two: Accept the invitation**<br />
Open the email and follow Apple's instructions to set up a new user with Apple Search ads. The email will look similar to this:

![](https://2b27b750-superwall-docs-staging.staffbar.workers.dev/docs/images/overview-settings-asa-invite-email.jpeg)

Once you've accepted the invitation using the invited Apple Account:

1. Once again, go to [searchads.apple.com](https://searchads.apple.com) and click **Sign In -> Advanced**.
   
![](https://2b27b750-superwall-docs-staging.staffbar.workers.dev/docs/images/overview-settings-asa-advanced-sign-in.jpeg)

2. Locate your account name in the top right corner and click **Account Name -> Settings**.
   
![](https://2b27b750-superwall-docs-staging.staffbar.workers.dev/docs/images/overview-settings-asa-settings.jpeg)

3. Over in Superwall, go to the **Settings -> Apple Search Ads -> click copy** under the public key:
   
![](https://2b27b750-superwall-docs-staging.staffbar.workers.dev/docs/images/overview-settings-asa-paste-sw.jpeg)

4. Back in Apple Search Ads, paste the public key under **Public Key** and click **Generate API Client**:
   
![](https://2b27b750-superwall-docs-staging.staffbar.workers.dev/docs/images/overview-settings-asa-paste-asc.jpeg)

**Step Three: Generate the client ID, team ID and key ID**<br />
Now, you should see three values that have been generated by Apple Search Ads, a client ID, team ID and key ID.

1. Copy each generated value.
   
![](https://2b27b750-superwall-docs-staging.staffbar.workers.dev/docs/images/overview-settings-asa-values.jpeg)

2. In Superwall, paste each value in and click "Update ASA Configuration."
   
![](https://2b27b750-superwall-docs-staging.staffbar.workers.dev/docs/images/overview-settings-asa-paste-stuff.jpeg)

3. Finally, click on "Check Configuration" and confirm everything is set up properly.
   
![](https://2b27b750-superwall-docs-staging.staffbar.workers.dev/docs/images/overview-settings-asa-confirm.jpeg)

### Use cases

Once you've enabled Apple Search Ads, you can use the data in a few ways. First, users who've been acquired from a search ad will display that information in the users page under "Apple Search Ads." This is available with either the basic or advanced search ads. This can be useful for understanding the quality of users acquired from search ads.

If you're using advanced search ads, you get significantly more capabilities:

* You can leverage search ad data in your campaigns. This opens up the ability to do things like showing a specific paywall to a user who was acquired via a search ad, tailor messaging from the keyword that was used, and more.
* You can view search ads data in charts, breaking down metrics by campaign name and more.

#### Viewing users acquired via Apple Search Ads

If any user was acquired via a search ad, you'll see that data in the [users page](/docs/dashboard/overview-users). This can be useful for understanding the quality of users acquired from search ads:

![](https://2b27b750-superwall-docs-staging.staffbar.workers.dev/docs/images/overivew-settings-asa-user.png)

Here's a breakdown of the attributes you'll see:

| Attribute         | Example               | Description                                                                                                                                  |
| ----------------- | --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| Ad Group Id       | 1684936422            | The identifier for the ad group. Use Get Ad Group-Level Reports to correlate your attribution response by adGroupId.                         |
| Ad Group Name     | Primary Ad Group      | The name of the ad group for organizational and reporting purposes.                                                                          |
| Ad Id             | -1                    | The identifier representing the assignment relationship between an ad object and an ad group. Applies to devices running iOS 15.2 and later. |
| Attribution       | true                  | A Boolean value indicating if the attribution was successful. Returns true if a user clicks an ad up to 30 days before downloading your app. |
| Bid Amount        | 0.25                  | The cost-per-click (CPC) bid amount placed for this ad group.                                                                                |
| Bid Currency      | GBP                   | The currency used for the bid amount.                                                                                                        |
| Campaign Id       | 1633810596            | The unique identifier for the campaign. Use Get Campaign-Level Reports to correlate your attribution response by campaignId.                 |
| Campaign Name     | Primary Campaign (US) | The name of the campaign, useful for tracking and organizational purposes.                                                                   |
| Conversion Type   | Download              | The type of conversion, either Download or Redownload.                                                                                       |
| Country Or Region | US                    | The country or region for the campaign.                                                                                                      |
| Keyword Id        | 1685193881            | The identifier for the keyword.                                                                                                              |
| Keyword Name      | baskeball app         | The specific keyword that triggered the ad.                                                                                                  |
| Match Type        | EXACT                 | The keyword matching type used to trigger the ad (e.g., EXACT, BROAD, or PHRASE).                                                            |
| Org Id            | 3621140               | The identifier of the organization that owns the campaign. This is the same as your account in the Apple Search Ads UI.                      |

#### Using search ad data in campaigns

Using the table above, you can turn around and use any of those values to create [campaign filters](/docs/dashboard/dashboard-campaigns/campaigns-audience#filters):

![](https://2b27b750-superwall-docs-staging.staffbar.workers.dev/docs/images/overview-settings-asa-filters.png)

> **Warning:** There is a delay from the moment a user downloads your app via a search ad to the time that event
> is sent to Superwall from Apple's servers. For that reason, using search ad data as a filter on
> events like an app's launch is discouraged.

#### Charts

Use data from Apple Search Ads in our [charts](/docs/dashboard/charts) as a breakdown and filter:

![](https://2b27b750-superwall-docs-staging.staffbar.workers.dev/docs/images/asa-chart-breakdowns.png)

Apple Search Ads data can be used in the following charts:

* **Proceeds**
* **Sales**
* **Conversions**
* **New Subscriptions**
* **New Trials**
* **Trial Conversions**
* **Refund Rate**

As far as search ads data, you can create breakdowns using the following:

* **Ad Group Name**
* **Campaign Name**
* **Keywords Match Name**
* **Match Type**

Some common use cases here are:

* Attributing new trials from a search campaign.
* Seeing which keywords generate the most revenue.
* Understanding the quality of users acquired from a search ad.
* etc.