How to Track Apple Search Ads Revenue With Superwall
Use Superwall subscription events with Apple Search Ads attribution and spend to measure trials, paid conversions, revenue, and keyword ROAS.

Superwall can tell you what happened around the paywall and subscription. Apple Ads can tell you which campaign and search context produced a paid install.
To calculate keyword ROAS, connect both systems to the same AppSprint install:
Apple Ads click -> attributed install -> Superwall user -> trial or purchase -> revenue
The Apple side supplies acquisition and spend. Superwall supplies the paywall and subscription context. AppSprint keeps the identity between them.
What Superwall contributes
Superwall is useful for two related views.
Inside Superwall, you can inspect placements, paywall interactions, offers, users, and subscription behavior. Through webhooks, Superwall reports the purchase lifecycle, including:
- Trial-period initial purchases.
- Normal initial purchases.
- Renewals and trial conversions.
- Cancellations and uncancellations.
- Expirations and billing issues.
- Product changes.
- Non-renewing purchases.
- Refund values when present.
AppSprint's current Superwall webhook mapping focuses on the subscription lifecycle. Use the Superwall dashboard for the deeper paywall-interaction investigation, then use AppSprint to connect attributed subscription outcomes to Apple Ads.
| Question | Best place to answer it |
|---|---|
| Which paywall or placement did the user see? | Superwall |
| Which Apple campaign or keyword produced the install? | Apple AdServices and AppSprint |
| How much did the Apple keyword spend? | Apple Ads reporting |
| Did the user start a trial, pay, renew, or refund? | Superwall webhook |
| What is mature keyword ROAS? | The joined AppSprint report |
Step 1: capture the Apple Ads install
Configure the AppSprint SDK before the campaign starts.
On iOS 14.3 or later, the SDK collects the Apple AdServices attribution token. AppSprint exchanges it for the available campaign, ad-group, keyword, country, conversion, and claim context.
The token expires after 24 hours. Collect it early rather than waiting for a later session.
Search Match conversions may have no keyword ID. Preserve Search Match as its own source instead of treating the missing ID as an implementation error.
The Apple Search Ads integration guide has the current SDK requirements.
Step 2: connect Apple Ads reporting
The attribution record identifies the paid source. The reporting API adds the cost and delivery metrics.
Create an Apple Ads API certificate with the public key shown by AppSprint. Then save the resulting Client ID, Team ID, Key ID, and your numeric App Store ID in the integration.
After validation, AppSprint can import:
- Spend.
- Impressions.
- Taps.
- Apple-reported installs.
- Campaign and ad-group details.
- Keyword names where available.
Without spend, you can count attributed revenue but cannot calculate ROAS.
Step 3: add the signed Superwall webhook
In Superwall, create a webhook using the app-specific endpoint shown in AppSprint:
https://api.appsprint.app/v1/integrations/superwall/webhooks/your-app-id
Superwall signs webhook deliveries through Svix. Copy the webhook's signing secret into the AppSprint Superwall integration.
AppSprint verifies the signature headers before accepting the payload. There is no need to invent a custom shared header in Superwall.
The current Superwall integration guide shows where to find the endpoint and signing-secret field.
Step 4: save appsprintId on the Superwall user
The webhook needs to identify the original install.
After AppSprint configures the SDK, get the AppSprint install ID and set it as a Superwall user attribute named appsprintId.
Use this order:
- Configure AppSprint.
- Read the AppSprint install ID.
- Set appsprintId through Superwall's user-attributes API.
- Continue to placements, paywalls, and purchases.
Superwall includes user attributes in webhook payloads. When the lifecycle event arrives, AppSprint reads appsprintId and attaches the event to the matching install.
A signed webhook without appsprintId can still be accepted. It simply cannot be joined to the Apple Ads source.
Step 5: understand the event mapping
AppSprint maps the main Superwall events into a consistent attribution model.
| Superwall event | Condition | AppSprint event |
|---|---|---|
| initial_purchase | Trial period | start_trial |
| initial_purchase | Normal or introductory purchase | purchase |
| renewal | Includes trial conversion | subscribe |
| uncancellation | Subscription reactivated | purchase |
| non_renewing_purchase | One-time purchase | purchase |
| cancellation, expiration, billing_issue, product_change, subscription_paused | Lifecycle change | Custom event |
Superwall's webhook payload includes transaction and lifecycle fields such as product, store, period type, price, proceeds, purchased currency, original transaction ID, and user attributes when available.
Keep the raw lifecycle context. A user can cancel auto-renewal while the current paid period remains active. Cancellation and expiration should not be treated as the same moment.
Step 6: validate without confusing sandbox and production
Test the flow in layers.
Verify the webhook
Send a valid Superwall sandbox delivery. Confirm AppSprint accepts the Svix signature and marks the integration verified.
Verify the user identity
Open the Superwall user record and confirm appsprintId contains the value created by AppSprint for that install.
Verify the Apple attribution
For a controlled paid production install, check that AppSprint shows the Apple campaign, ad group, keyword or Search Match source, and country.
Verify production revenue
Complete a controlled production subscription when practical. Confirm the lifecycle webhook creates an attributed event and the revenue appears in the expected Apple Ads cohort.
AppSprint does not create production events or outbound ad conversions from Superwall sandbox deliveries. A successful sandbox webhook proves the signed connection, not final ROAS.
Build the keyword funnel
Start with a report that follows the user's decision path.
| Stage | Metric | What to investigate when it is weak |
|---|---|---|
| Delivery | Impressions and taps | Bid, relevance, keyword demand |
| Store | Attributed installs | Product-page promise and conversion |
| Product | Activation and paywall reach | Onboarding and placement timing |
| Offer | Trial starts or purchases | Paywall message, price, and intent |
| Revenue | Paid subscriptions and proceeds | Trial quality and acquisition cost |
| Retention | Renewal and lifecycle events | Product value and subscriber fit |
AppSprint does not need every Superwall interaction in the Apple Ads report. Use enough product context to locate the constraint, then use Superwall's own user and paywall views for the detailed investigation.
Respect trial maturity
A trial start is an early signal. It is not revenue.
Separate:
- Active trials that are still running.
- Mature trials that reached their paid decision.
- Paid subscriptions.
- Refunded or canceled outcomes.
- Renewal revenue.
Compare keyword cohorts at the same age. A campaign launched three days ago should not rank below a campaign with a full renewal cycle simply because its revenue has not had time to arrive.
Use the free-trial ROAS workflow to define active, mature, and revenue-mature cohorts.
Diagnose the funnel before changing bids
Taps without installs
The ad earned interest, but the store page did not close the download. Check the first screenshots, subtitle, rating, and match between the search and the listing.
Installs without paywall reach
Use Superwall's placement and user journey data to see whether onboarding takes too long or the relevant placement never fires.
Paywall reach without trials
The offer may not fit the search promise. Compare the paywall copy, products, trial, and price with the intent of the keyword.
Trials without paid conversions
Look at trial quality, cancellation timing, product usage, and the promise made before install.
Paid users without acceptable ROAS
The keyword may convert but cost too much. Review the bid, price, proceeds, refund behavior, and renewal value before scaling.
Reconcile Superwall and Apple totals
Some differences are expected.
Apple Ads and Superwall can use different dates. Apple reports the ad interaction and install; Superwall reports the purchase lifecycle. Later revenue should be credited to the acquisition cohort for payback analysis.
Currencies can also differ. Superwall exposes USD price and proceeds fields alongside purchased-currency data. Pick one revenue definition and normalize it before calculating account-level ROAS.
Organic subscribers remain real revenue without an Apple keyword. Do not force unmatched users into paid campaigns to make totals agree.
Use the joined report
The result should help you decide where the constraint lives.
| Mature pattern | Next move |
|---|---|
| Good ROAS, low Apple impression share | Test a careful bid increase |
| Good trials, weak paid conversion | Improve offer or trial quality |
| Weak installs, healthy paywall conversion | Improve the App Store page |
| Strong Superwall journey, expensive acquisition | Lower bids or narrow keywords |
| Strong paid keyword and clear intent | Test the same promise in ASO or a custom product page |
The keyword ROAS playbook covers the campaign decisions after measurement is stable.
What to do next
Connect the Apple Ads API, create the signed Superwall webhook, and confirm appsprintId on one user. Then validate one production purchase from attributed install to revenue before changing a keyword bid.
Connect Superwall to AppSprint to attach trial, purchase, renewal, and lifecycle events to the Apple Ads source that produced the user.
Sources
- Superwall webhooks - Current event names, transaction fields, refund behavior, stores, and user attributes
- Superwall users - Current user, paywall, subscription, placement, and event views
- Apple AdServices - Apple's install attribution framework
- AppSprint Apple Search Ads integration - Current SDK attribution and Apple reporting setup
- AppSprint Superwall integration - Current appsprintId, Svix signature, sandbox behavior, and event mapping
Research, analyze, optimize
Find the right keywords, study the competitors already earning attention, and turn that into a stronger App Store page.
Available for macOS 14.6 and above
Loved by 544 users
Related articles
See all posts →
When to Pause an Apple Search Ads Keyword
Pause Apple Search Ads keywords when mature spend, weak funnel signal, and poor ROAS show the search intent is not paying back.

How to Track Apple Search Ads Revenue With RevenueCat
Use RevenueCat revenue events with Apple Search Ads spend to see which campaigns and keywords create trials, subscriptions, renewals, and ROAS.

Apple Search Ads for Subscription Apps
Subscription apps need a different Apple Search Ads workflow: trial maturity, renewal revenue, keyword ROAS, and careful bid decisions.