← All posts
8 min read

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.

Orange dithered dollar banknote emoji for RevenueCat Apple Search Ads ROAS

RevenueCat knows what happened to a subscription. Apple Ads knows where the paid search spend went. Keyword ROAS appears only after you connect those records to the same install.

For AppSprint, that connection has three parts:

  1. Apple AdServices attribution captured by the SDK.
  2. Apple Ads reporting data for spend, taps, impressions, campaigns, ad groups, and keywords.
  3. RevenueCat webhooks matched through the appsprintId subscriber attribute.

Miss one part and the dashboard may show installs without revenue, revenue without a keyword, or spend without a matched subscription cohort.

What RevenueCat adds to Apple Ads

Apple Ads can report delivery and acquisition metrics. RevenueCat continues tracking the customer after the install.

Useful RevenueCat events include:

  • A trial-period initial purchase.
  • A normal initial purchase.
  • Trial conversion and renewal.
  • Cancellation or expiration.
  • Billing issues and product changes.
  • Non-renewing purchases.
  • Refund-related lifecycle changes.

Those events matter because the value of an Apple Ads keyword rarely ends at download.

SourceWhat it contributes
Apple Ads reportingSpend, impressions, taps, campaigns, ad groups, keywords
Apple AdServicesInstall attribution IDs and country context
RevenueCatSubscription lifecycle and transaction revenue
AppSprintIdentity matching, joined reporting, and keyword ROAS

RevenueCat is not the system deciding which ad caused the install. Its documentation describes it as a subscription platform that can store attribution fields and exchange events with attribution providers. The acquisition source still has to come from Apple AdServices, an MMP, or your own attribution backend.

If you are deciding whether RevenueCat alone is enough, read RevenueCat attribution versus an MMP.

Step 1: capture the Apple Ads install

Install and configure the AppSprint SDK before sending production campaign traffic.

On supported iOS versions, the SDK requests the Apple AdServices attribution token and sends it to AppSprint. Apple's response can identify the campaign, ad group, keyword, country, conversion type, and claim type when those fields are available.

Search Match installs may not include a keyword ID. Keep those conversions in a separate Search Match bucket rather than forcing them into a named keyword.

The attribution token expires after 24 hours, so collect it during the early app experience. A user who opens the app after the token has expired may remain unmatched.

The current Apple Search Ads integration guide covers SDK support and troubleshooting.

Step 2: connect Apple Ads reporting

Attribution identifies the paid install. The Apple Ads API connection adds the media cost and delivery data needed for ROAS.

In AppSprint:

  1. Open the app's Apple Search Ads integration.
  2. Create an Apple API certificate with the AppSprint public key.
  3. Copy the Client ID, Team ID, and Key ID into AppSprint.
  4. Add the numeric App Store ID.
  5. Save and let AppSprint validate the Campaign Groups the certificate can access.

This connection supplies spend, impressions, taps, and Apple-reported installs. Stable Apple IDs from the attribution record can then be enriched with current campaign, ad-group, and keyword names.

Step 3: add the RevenueCat webhook

Create a webhook in RevenueCat under the project integrations.

Use the app-specific URL shown by AppSprint:

https://api.appsprint.app/v1/integrations/revenuecat/webhooks/your-app-id

Set the Authorization header to the Bearer token shown in the AppSprint RevenueCat integration. The token prevents an unrelated sender from posting purchase events to the endpoint.

RevenueCat can send production purchases, sandbox purchases, or both. AppSprint can use a sandbox delivery to verify that the endpoint and authentication work, but it does not create attributed production events or outbound ad conversions from sandbox transactions.

The current RevenueCat integration guide has the exact URL and token for the selected app.

Step 4: save appsprintId in RevenueCat

The webhook needs a shared identity.

After the AppSprint SDK is configured, read the install ID and save it in RevenueCat as a subscriber attribute named appsprintId.

The order matters:

  1. Configure AppSprint.
  2. Get the AppSprint install ID.
  3. Set the RevenueCat subscriber attribute.
  4. Let the customer continue through the paywall and purchase flow.

When RevenueCat later sends a trial, purchase, or renewal webhook, that attribute lets AppSprint find the original install and its Apple Ads attribution.

Do not fill the attribute with a placeholder while waiting for the real value. Save the stable install ID once it exists.

Step 5: validate the path in layers

Do not wait for a large campaign to discover a missing identity field.

Confirm the install

Open the app on a fresh test device and confirm a new AppSprint install appears. For a paid production test, verify the Apple campaign or Search Match attribution is present.

Confirm the subscriber attribute

Open the RevenueCat customer profile and check that appsprintId exists with the expected value.

Confirm the webhook

Send a RevenueCat test or sandbox delivery to verify the URL and Authorization header. Then check the AppSprint integration status.

Confirm production attribution

Run a controlled production purchase when practical. Verify the full chain:

Apple Ads install -> AppSprint install -> RevenueCat subscriber -> production webhook -> attributed revenue

This last step is the one that proves keyword ROAS can work. A green webhook status by itself only proves that AppSprint can receive the request.

Read the RevenueCat event mapping

AppSprint maps the main RevenueCat lifecycle events into a smaller attribution event set.

RevenueCat eventAppSprint result
Initial purchase with a trial periodTrial start
Normal initial purchasePurchase
Renewal, including trial conversionSubscription
UncancellationPurchase
Non-renewing purchasePurchase
Cancellation, expiration, billing issue, product change, pause, transfer, refund reversalCustom lifecycle event

Keep the raw lifecycle event available for investigation. A cancellation does not mean the same thing as an expiration, and a billing issue does not equal a voluntary churn decision.

RevenueCat webhooks also include transaction and subscriber context when available, such as product, store, price, currency, purchase time, expiration time, aliases, and subscriber attributes.

Build a keyword report that respects trial maturity

The first report should stay small:

MetricWhy it matters
SpendBudget exposed to the keyword
Attributed installsPaid first opens connected to Apple
Trial startsEarly subscription intent
Mature trialsTrials that had time to finish
Paid subscriptionsCustomers produced by the cohort
RevenueAttributed transaction value
ROASRevenue divided by spend
Refund and cancellation contextRevenue-quality warning

Keep active trials out of the mature trial-to-paid denominator. A seven-day trial acquired yesterday has not failed.

The free-trial ROAS guide shows how to compare cohorts at the same age.

Diagnose mismatched numbers

RevenueCat, Apple Ads, and AppSprint will not always show the same totals.

Check these causes before assuming the integration is broken:

Different dates

Apple can report media activity by ad interaction or reporting date. RevenueCat events arrive on purchase and lifecycle dates. Cohort reporting credits later revenue back to the acquisition group.

Different currencies

Apple spend and RevenueCat transaction values may use different currencies or conversion methods. Normalize before calculating account-level ROAS.

Search Match has no keyword

Apple can attribute an install to Search Match without a keyword ID. The campaign and ad group may still be known.

The install was never attributed

An organic or unmatched install can still become a RevenueCat subscriber. The revenue is real, but it does not belong to an Apple keyword.

appsprintId is missing

The webhook reaches AppSprint, but the event cannot find its install. Confirm the attribute is present for the exact RevenueCat customer who purchased.

The event is sandbox

Sandbox transactions verify plumbing. They do not enter AppSprint's production attribution reporting.

The cohort is still active

An Apple dashboard can show a completed install while the RevenueCat trial has not reached its paid decision.

Turn the report into keyword decisions

Use the full funnel before changing bids.

PatternFirst action
Spend with few installsReview bid, relevance, and product-page conversion
Installs with no trialsImprove onboarding or search-intent match
Trials with weak paid conversionReview the offer, product, and keyword quality
Paid users with weak ROASLower acquisition cost or improve revenue
Good mature ROAS with low impression shareTest a careful bid increase
Good keyword revenue in paid searchResearch the same intent for ASO

The keyword ROAS playbook covers bidding and campaign structure once measurement is trustworthy.

Historical data has a hard limit

A new webhook can deliver current subscription events for an existing customer, but it cannot reconstruct an Apple Ads source that was never captured at install.

Mark the date when all three components went live:

  • Apple attribution capture.
  • appsprintId in RevenueCat.
  • Authenticated production webhooks.

Treat cohorts acquired after that date as the clean measurement period. Keep older revenue for business totals without pretending its keyword attribution is complete.

What to do next

Connect the Apple Ads API, add the RevenueCat webhook, and confirm appsprintId on one test subscriber. Then run one controlled production path before you use the report for a bid decision.

Connect RevenueCat to AppSprint to join trials, subscriptions, renewals, and revenue to the Apple Ads install and keyword that produced them.

Sources

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

AppSprint developer 1AppSprint developer 2AppSprint developer 3AppSprint developer 4AppSprint developer 5AppSprint developer 6AppSprint developer 7AppSprint developer 8

Loved by 544 users

Related articles

See all posts →