Attribution
5 min read
Which keywords are actually making you money?
You're bidding on competitor names, category terms, and broad matches. Some of them are driving real revenue. Some are setting money on fire. Apple can't tell you which is which — because Apple doesn't know who actually paid.
Your install CPA is not your customer cost
You're running Apple Search Ads. You bid on your competitor's name, some category keywords, maybe a few broad matches. People are tapping. People are installing. Apple's dashboard says you got 24 installs at $24.33 CPA. Seems fine.
But 24 installs isn't 24 paying customers. It's 24 people who downloaded your app. Some of them opened it once, saw the onboarding screen, and never came back. Some reached the paywall and closed it. Some started a trial and cancelled. Some actually paid.
Apple doesn't know which bucket they ended up in. Apple knows they tapped the ad and downloaded the app. Everything after that is invisible to them.
So your $24.33 CPA is a fiction. Your real cost per paying customer might be $48. Or $140. Or $12. You have no idea, because the ad platform and the payment platform don't talk to each other.
The two numbers that don't connect
Right now, you're looking at two separate dashboards:
Apple Search Ads tells you: 24 installs, $584 total spend, $24.33 CPA, 6.2% tap-to-install rate. It breaks this down by campaign, ad group, and keyword. It might tell you the keyword [competitor-app] drove 12 installs and [habit tracker] drove 8. This is useful but incomplete.
RevenueCat tells you: 18 trials started, 12 converted to paid, $964 total revenue. It shows subscription lifecycle events — who upgraded, who cancelled, who refunded. But it doesn't know where any of those people came from. It has no concept of keywords or ad campaigns.
The gap between these two dashboards is where your money disappears.
You know [competitor-app] drove 12 installs. You know 12 people converted to paid. But you don't know if those 12 paying customers came from [competitor-app] or [habit tracker] or organic search. The keywords and the revenue are in different systems with no connection between them.
Connecting the loop
Grometrics sits between these two systems and connects them.
First, the Grometrics mobile SDK captures the Apple attribution token on first launch. This token identifies which campaign, ad group, and keyword drove the install.
Second, the SDK tracks every screen the user sees — Welcome, Signup, Profile Setup, Paywall, Purchase Success. This is the journey you can't see in either Apple or RevenueCat.
Third, when the user starts a trial or makes a purchase, RevenueCat fires a webhook to Grometrics with the transaction. Because both SDKs share the same user identity, the transaction links back through the journey to the original keyword.
The result: you can open Campaigns and see that the keyword [competitor-app] cost $142 in spend, drove 12 installs, 8 of those reached the paywall, 6 started a trial, 4 converted to paid, and generated $420 in revenue. That's a 3.0x ROAS.
Meanwhile, [habit tracker] cost $82, drove 8 installs, but only 2 reached the paywall because 6 bounced on the profile setup screen. Different keyword, same app, completely different problem.
Campaigns
Last 30 daysSpend
$1,840
Revenue
$6,920
Real CAC
$36
Compare spend with payment-backed revenue
Use real customers, not pixel events
Set it up
You need three integrations connected. If you've been following the mobile funnel tracking guides, you probably have two of them already.
1. Grometrics mobile SDK
Already installed if you're tracking screens and funnels. The SDK automatically captures the Apple attribution token via the AdServices framework on iOS 14.3+. No additional code needed beyond having AdServices.framework linked in your Xcode project.
2. RevenueCat
Already connected if you're tracking trials and purchases. This is where revenue data comes from. Use the RevenueCat setup if you have not connected it yet.
3. Apple Search Ads
Go to Settings -> Integrations, find Apple Search Ads under Ad Platforms, and click Connect. Authorize via OAuth, choose your organization, and Grometrics starts importing spend data, keyword performance, and campaign structure.
The full setup instructions are in the Apple Search Ads integration docs.
Once all three are connected, wait 24–48 hours for Apple's reporting data to catch up (Apple Search Ads data lags — this is normal), and then check the Attribution page.
Read the numbers
Campaign level
Go to Campaigns. Apple Search Ads campaigns are auto-imported — you'll see them alongside any manual campaigns you've created. Each row shows spend (from Apple), revenue (from RevenueCat via Grometrics attribution), and the derived metrics: ROAS, CAC, sales count.
Sort by ROAS to find your best campaigns. If you're splitting by territory (US, UK/CA, ROW), this is where you see which tiers are actually profitable, not just which ones Apple says have the lowest CPA.
Keyword level
Click into any Apple Search Ads campaign to see the Keyword Performance table. This is the view that neither Apple nor RevenueCat can give you.
Each keyword shows:
- Spend — how much you paid for taps on this keyword (from Apple)
- Revenue — how much revenue users from this keyword generated (from Grometrics + RevenueCat)
- ROAS — revenue ÷ spend. The number that actually matters.
- CAC — spend ÷ paying customers. Your real cost per customer, not Apple's install-based CPA.
- Conv % — paying customers ÷ taps. The true conversion rate from ad tap to purchase.
Source comparison
Go to Attribution. In the Platform Comparison section, you'll see a row for Apple Search Ads. It compares what Apple reported (installs) against what Grometrics tracked (paying customers). The gap isn't Apple lying — Apple accurately reports installs. The gap is the difference between installs and revenue. Installs are not sales.
The three things you'll discover
Most people find the same patterns when they first connect Apple Search Ads to Grometrics:
1. Competitor keywords often outperform category keywords. People searching your competitor's name already know what they want. They're comparison shopping. If your app page is sharp and your paywall is reasonable, these users convert at high rates. People searching generic terms like [productivity app] are still browsing — lower intent, lower conversion, higher real CAC.
2. Tier 3 countries can be surprisingly profitable. Apple's CPA might be $0.30 in the Philippines versus $1.20 in the US. If your app is priced the same in both markets, the lower-tier countries can deliver better ROAS despite lower volume. You won't know unless you're tracking real revenue per territory, not just Apple's install cost.
3. Some keywords drive installs but zero revenue. They look great in Apple's dashboard — low CPA, decent install volume. But when you connect the revenue data, those users never reach the paywall. Maybe the keyword attracts the wrong audience. Maybe those users hit a friction point in onboarding that your core users don't. Filter the install-to-trial funnel by keyword source to see exactly where they drop.
Use the install-to-trial guide to filter the install-to-trial funnel by keyword source.
Try it in your data
Connect Apple Search Ads in Integrations, then check Campaigns for keyword-level ROAS against your RevenueCat revenue.
Go to Campaigns →Related guides
Funnels
5 min read
Why aren't installs turning into trials?
You've got installs. You've got almost no trials. The problem is somewhere between those two numbers. Here's how to find it.
CAC & ROAS
9 min read
Is your ad spend actually working? A 10-minute audit
Audit paid campaigns by spend, attributed revenue, real customers, and refund risk before scaling budget.