Acquisition

Cost per user comes from your own ad platform credentials. Attribution is deterministic on Android and Apple Ads, cohort-level everywhere else on iOS. Payback and margin are derived, not fetched.

Meta and Google Ads on iOS report installs via SKAdNetwork postbacks: cohort-level, not per user. Treat those rows as directional, not individually attributable.

Unmapped spend

6 campaigns carrying $48,000 of 30-day spend are not assigned to a property.

Unmapped spend is missing from every cost-per-user, payback and margin figure on this page. The numbers above are understating your cost until this is cleared. Map each campaign below.

Unmapped, 30 d
$48,000
of $48,000 flagged

Campaign mapping

Suggestions are read off campaign naming patterns. Nothing is applied until you confirm it.

CampaignPlatformSpend 30 dSuggested fromPropertyAction
WF_AND_AAA_broad_0912Meta Ads$18,400
prefix WF_ + AND token
confidence 92%
wordfall-ios-t2-retargetGoogle Ads$12,100
contains 'wordfall' + 'ios'
confidence 88%
NL_web_display_septGoogle Ads$6,900
prefix NL_ + web token
confidence 74%
TT_test_creative_batch4TikTok$4,600
platform default only, no property token
confidence 41%
influencer_q3_upload.csvCSV upload$3,200
no naming pattern to read
needs a human
brand_awareness_globalMeta Ads$2,800
no property token
needs a human

Suggestions above 70% confidence are pre-selected but still need confirming. A wrong mapping is worse than an unmapped campaign, because it looks correct.

SDK adoption
71%

71% of active users are on an app version carrying the SDK. Per-user figures cover those users only.

Channel performance, last 30 days

Sort any column. Loss-making rows are flagged in red.

ChannelPlatformSpend 30dUsersCost / userRevenue / user (60d)PaybackMarginAttribution
Influencer (CSV upload)Android$38,00012,100$3.140$1.860never-40.8%CSV, no per-user join
Meta — Advantage+ appiOS$186,40071,200$2.618$2.180never-16.7%cohort-level (SKAdNetwork)
TikTok — App installAndroid$94,10062,400$1.508$1.280never-15.1%deterministic
TikTok — App installiOS$76,90024,100$3.191$2.740never-14.1%cohort-level (SKAdNetwork)
Web — Google Ads displayWeb$41,20096,800$0.426$0.380never-10.7%CSV, no per-user join
Google Ads — App campaignsiOS$121,60041,800$2.909$2.620never-9.9%cohort-level (SKAdNetwork)
Google Ads — App campaignsAndroid$168,200102,400$1.643$1.94035 d18.1%deterministic
Apple Ads — Search resultsiOS$62,40021,900$2.849$3.42034 d20.0%deterministic
Meta — Advantage+ appAndroid$214,800118,900$1.807$2.41027 d33.4%deterministic
Organic / unattributed
No spend. Not a channel you can buy more of.
All486,200$1.620n/an/a — no costidentified by elimination

Organic is not a channel

How the organic row above is produced, and why its margin means nothing.

identified by elimination

Organic is not detected. It is what is left when nothing else claims the install: no Google Play install referrer on Android, no Apple AdServices token and no SKAdNetwork postback on iOS, no UTM on web. Every user we cannot attribute lands here.

Organic inherits every attribution gap in the system. It is overstated early on and shrinks as coverage improves — a falling organic count usually means attribution got better, not that organic traffic dropped.

Cost is zero, so organic always wins on margin. That comparison is meaningless. The comparison worth making is organic revenue per user against paid revenue per user: if paid users are worth less, you are buying worse users, whatever the margin column says.

Organic is excluded from the spend headroom table below. There is no bid to raise.

Spend headroom

How much more you could pay per user today, given measured revenue and a target payback window.

Yield uplift from Publifter12.0%

Modelled improvement to revenue per user, applied to every channel equally.

Target payback window45 d

Maximum days you're willing to wait to recover acquisition cost.

affordable cost per user = (revenue per user by target day) x (1 + yield uplift %). Revenue in the window is read off the measured 60-day accrual curve, applied equally to every channel — a simplification, not a per-channel curve fit. Treat the headline budget as modelled.

Additional monthly budget that still pays back
$136,346

Summed across 3 of 9 channels with positive headroom at 12.0% uplift and a 45-day window. Modelled from the measured 60-day accrual curve, not fetched.

ChannelCost / user todayMax affordable cost / userHeadroomHeadroom %
Meta — Advantage+ app · Android$1.807$2.503+$0.697+38.6%
Meta — Advantage+ app · iOS$2.618$2.264$-0.354-13.5%
Google Ads — App campaigns · Android$1.643$2.015+$0.372+22.7%
Google Ads — App campaigns · iOS$2.909$2.721$-0.188-6.5%
TikTok — App install · Android$1.508$1.329$-0.179-11.8%
TikTok — App install · iOS$3.191$2.846$-0.345-10.8%
Apple Ads — Search results · iOS$2.849$3.552+$0.703+24.7%
Influencer (CSV upload) · Android$3.140$1.932$-1.209-38.5%
Web — Google Ads display · Web$0.426$0.395$-0.031-7.3%

Organic is excluded from this table — there is no bid to raise. Negative headroom means you already pay more than the window supports at this uplift — those channels overpay today, not a projection error.

Revenue curve since install

Cumulative revenue per user, day 1 to 90. Basis for the 60-day figures used above.

Cost data comes from Meta Marketing API, Google Ads API, TikTok Business API and Apple Ads API, using your own read-only credentials. Channels with no API — influencer, offline — go through CSV upload and never get a per-user join. An MMP (AppsFlyer, Adjust, Singular) can upgrade iOS attribution beyond SKAdNetwork cohorts, but it's optional, not required to use this page.