You're running ads on three platforms. You know how much you spent on each. You know how many total purchases came in this month. But when someone asks "what's your CPA?" you're doing rough maths in your head, dividing total spend by total purchases and hoping the ratio makes sense.
It doesn't. Because that number assumes every platform contributed equally, which is almost never true. One channel might be driving 80% of your purchases at a quarter of the cost. Another might be burning money on clicks that never convert. Without proper attribution, your CPA calculation is fiction.
The CPA formula everyone knows (and why it lies)
CPA = Total Marketing Spend ÷ Number of Acquisitions
Simple enough. Spend £500 on ads, get 50 purchases, CPA is £10. The problem is that this number only works when you have one marketing channel. The moment you add a second — say, TikTok alongside your Apple Search Ads — the blended CPA hides what's actually happening.
Maybe your Apple Search Ads drove 40 of those purchases at £300 spend (£7.50 CPA), and TikTok drove 10 at £200 spend (£20 CPA). The blended number says £10. The reality says double down on Apple Search Ads and rethink your TikTok creative.
You can't make that call without attribution.
What "acquisition" actually means for apps
This trips people up more than it should. In web e-commerce, an acquisition usually means a sale. In mobile apps, there are three events people count:
Install. Someone downloads your app. Cheapest to track, least useful to optimise around. An install doesn't mean they opened the app, let alone paid for anything.
Trial start. For subscription apps, this is when someone begins a free trial. Better than an install because it shows intent, but plenty of trials churn before converting.
Purchase. Someone paid you money. This is the one that matters for your business. If you're calculating CPA against anything other than purchases, you're measuring the wrong thing.
The distinction matters because your CPA changes dramatically depending on which event you track. A £2 cost-per-install sounds great until you learn that only 3% of installs convert to a purchase. Your actual cost per paying customer is £67.
Setting up per-channel CPA tracking
To get real per-channel CPA, you need two things: spend data per channel and purchase attribution per channel. The first is easy — every ad platform tells you what you spent. The second is the part most indie developers skip.
Here's how the attribution side works:
Create a unique tracked link for each channel. When someone clicks your TikTok bio link, that click should be recorded against a "TikTok" campaign. When someone clicks your link on Reddit, same thing but tagged "Reddit."
Record the click with a fingerprint. The click captures a timestamp and basic device info — timezone, locale, screen size. Nothing personally identifiable, but enough to match against later.
Match the install to the click. When the app opens for the first time, the SDK checks: did this device click a tracked link recently? If so, the install gets attributed to that channel.
Match the purchase to the install. When a purchase happens (via RevenueCat, StoreKit, whatever), it inherits the attribution from the install. Now you know: this purchase came from TikTok, or Reddit, or that newsletter you sent last Tuesday.
With that chain in place, CPA per channel is just: spend on channel ÷ purchases attributed to channel.
The numbers that actually matter
Once you have per-channel CPA, you can start making real decisions. But CPA alone isn't enough context. You want these alongside it:
CPA vs LTV ratio. If your average customer lifetime value is £8 and your CPA is £12, you're losing money on every acquisition regardless of channel. The LTV:CPA ratio should be at least 3:1 for a healthy business — meaning if your LTV is £8, your CPA needs to be under about £2.70.
CPA trend over time. A channel's CPA on day one is meaningless. Track it weekly. Most paid channels get more expensive as you scale because you exhaust the cheapest audience segments first.
Marginal CPA. Your first £100 on TikTok ads might yield a £5 CPA. The next £100 might yield £15. At some point, the marginal cost of one more acquisition on a channel exceeds what that customer is worth. That's where you stop spending — or shift budget elsewhere.
Common CPA mistakes with mobile apps
Counting installs as acquisitions. We covered this, but it bears repeating. If you're reporting a £1.50 CPA based on installs and your install-to-purchase rate is 5%, your real CPA is £30.
Ignoring organic cannibalisation. If you're running brand search ads on the App Store, some of those clicks would have found you organically anyway. Your true incremental CPA is higher than what the ad platform reports.
Not accounting for refunds. Apple's refund rate varies by category, but if 10% of your purchases get refunded, your effective CPA is 10% higher than your reported number.
Blending paid and organic. If 70% of your purchases are organic and 30% are from paid channels, a blended CPA makes your paid performance look better than it is. Always separate paid CPA from overall CPA.
A worked example
Say you're running a kids' app with a £2.49 one-time purchase. Your monthly marketing:
- Apple Search Ads: £150 spend, 28 purchases attributed → £5.36 CPA
- TikTok organic (no spend, but tracked links): 0 spend, 12 purchases → £0 CPA
- Reddit post (no spend, tracked link): 0 spend, 3 purchases → £0 CPA
- Organic / unattributed: 15 purchases
Total paid CPA: £150 ÷ 28 = £5.36. But your blended CPA across all channels including organic: £150 ÷ 58 = £2.59. Completely different picture.
The real insight here: your TikTok and Reddit content is converting for free. Put more time into content, and consider whether that £150 on Apple Search Ads is worth it when each attributed purchase costs more than twice what the customer pays you.
How to set this up without a massive budget
Enterprise attribution tools charge hundreds per month. If you're an indie developer making a few hundred quid in revenue, that makes no sense. What you need is lightweight per-link attribution that tracks clicks through to purchases.
LinkOwl does exactly this — give each campaign or channel a tracked link, and purchases get attributed automatically via a RevenueCat or Superwall webhook. It costs 5p per attributed purchase, so you only pay when you're actually making money. No monthly fee.
The setup takes about ten minutes: register your app, create links for each channel, add the SDK, and point your RevenueCat webhook at the endpoint. From there, every purchase shows which link — and which channel — brought that customer in.
What to do with the data
Once you have real per-channel CPA numbers, the decisions become obvious:
Kill channels where CPA exceeds customer LTV. If a channel costs you £8 per acquisition on a £2.49 product, it's not working unless you have strong evidence of word-of-mouth or retention revenue downstream.
Double down on channels where CPA is low or zero. Free channels that convert — organic TikTok, Reddit posts, newsletter mentions — deserve more of your time even though they don't cost money directly.
Test new channels in small batches. Run £50 on a new platform, track the CPA, and compare it against your best-performing channel before committing more budget.
Re-evaluate monthly. Channel performance drifts. What worked in January might be twice as expensive in March. The only way to catch that is to keep measuring.
CPA is the most useful number in your marketing toolkit, but only if the purchases are properly attributed. Get the attribution right, and the maths does the rest.