Cheap installs are easy to buy and expensive to keep. John Williams runs Google App campaigns and Apple Ads
with bidding tied to what users do after the install, and an iOS measurement stack that still works when most
users decline tracking.
50× target CPI: Google's minimum daily budget for install campaigns
70 custom product pages allowed per iOS app
24–48 h typical AdAttributionKit postback delay
TL;DR
Google App campaigns run on Google's automation, so our levers are the conversion event, the bid, the
budget, and the assets. We set all four deliberately.
Apple Ads (formerly Apple Search Ads) covers four App Store placements. We run search results with brand,
category, and competitor structure, and test Today tab, Search tab, and product page ads with custom product
pages.
On iOS, measurement is a stack: SKAdNetwork and AdAttributionKit postbacks, Google's on-device conversion
measurement, Apple's AdServices attribution, and your MMP, each read for what it can see.
We optimize toward a retained or paying user, not a raw install, once the volume supports it. Flat fee,
never a percentage of spend.
Who this is for
Subscription and commerce apps where installs look fine and paying users don't.
Teams whose iOS results collapsed into aggregate SKAN numbers and can no longer tell which
campaign works.
Apps launching on Google Play that want a pre-registration list before launch day.
Businesses with a web and an app funnel that need both measured without double counting. Our
mobile app development team can help on the build side.
What's included
Measurement audit: Firebase or MMP events, Google Ads conversion imports, SKAN or
AdAttributionKit conversion value schema, and how each source reports the same install.
Event plan: the in-app event that predicts revenue, defined so it can be bid on within the
measurement window.
Google App campaign structure: installs, engagement, and pre-registration campaigns where
each fits, with bids and budgets set to Google's own thresholds.
Apple Ads build: search results campaigns split by brand, category, competitor, and
discovery, plus Today tab, Search tab, and product page tests.
Store creative: custom product pages on the App Store and custom store listings on Google
Play, matched to the ad that sent the user.
Cohort reporting: day-1, day-7, and day-30 retention and revenue by campaign, next to cost.
How John runs app campaigns
Fix the event before the bid
Google App campaigns choose placements across Search, Google Play, YouTube, Discover, and the Display
Network on their own (About App campaigns). You control what they optimize toward. If the conversion is "first open," that's what you'll get more
of. We pick an event that happens early enough to learn from and correlates with revenue.
Budget to Google's multiples
Google's best-practice table asks for daily budgets of at least 50 times the bid for target-CPI install
campaigns, 10 times for install campaigns on target CPA, and 15 times for engagement campaigns on target CPA
(Best practices for App campaigns). Below those levels, campaigns stay in learning. We run fewer campaigns rather than thinner ones.
Fill every asset slot
Each ad group takes up to 5 headlines of 30 characters, 5 descriptions of 90 characters, and up to 20 images
and 20 YouTube-hosted videos (App campaign specs). We supply landscape, portrait, and square video so the campaign can serve everywhere it's allowed to.
Structure Apple Ads by intent
Apple renamed Apple Search Ads to Apple Ads in April 2025 because it now sells more than search (Apple Ads news). Apple Ads Advanced offers the Today tab, the Search tab, search results, and product pages while
browsing. Today tab ads use a custom product page as the tap destination, and deep links work on iOS 18 and
later (Ad placement options). Brand terms get their own campaign so competitor and category spend can be judged on its own.
Judge cohorts, then shift budget
Every month we compare campaigns on cost per retained or paying user, not cost per install, and move budget
accordingly.
Common app campaign mistakes John fixes
Two SDKs setting SKAN conversion values. AppsFlyer, for one, says only its SDK should set
them when it manages the schema. Conflicting writers corrupt the data.
A conversion value schema nobody can decode. If the team can't say what value 41 means, the
schema needs rebuilding.
Apple Ads and the MMP both claiming the same install. Apple's AdServices API uses only
Apple's first-party data, while AdAttributionKit is the official last click among registered networks, so both
sources can claim one install (Apple Ads).
Age and gender settings on Apple Ads ad groups, which stop the AdServices API from returning
attribution payloads for those ad groups.
One store page for every ad. Apple now allows up to 70 custom product pages per app (Custom product pages).
Planning around Privacy Sandbox on Android. In October 2025 Google announced it was retiring
Attribution Reporting, Protected Audience, Topics, and SDK Runtime on Android.
The iOS measurement stack, and what each layer sees
Since App Tracking Transparency arrived with iOS 14.5 in April 2021, most iOS users can't be tracked across apps
without opting in. No single source gives the full picture, so we read four together.
Source
What it reports
Limits to plan for
SKAdNetwork and AdAttributionKit
Apple's privacy-preserving postbacks. AdAttributionKit works with the App Store and alternative
marketplaces, interoperates with SKAdNetwork, and supports re-engagement (AdAttributionKit).
Viewers have 24 hours to install after a view and 30 days after a click. Postbacks arrive 24 to 48 hours
after the conversion.
Google on-device conversion measurement
Matches iOS App campaign conversions on the device, using hashed sign-in data or de-identified event data,
through the Firebase SDK (version 11.14.0 or later) (Google Ads Help).
Events must come from the Firebase SDK on a primary GA4 property, not from server-to-server imports.
Apple AdServices attribution
Campaign, ad group, and keyword attribution for Apple Ads, through a token valid for 24 hours.
Only sees Apple Ads, and only Apple's first-party data.
Your MMP or Firebase
Deterministic data for users who opted in, plus cohorts, revenue, and fraud filtering.
Opted-in users aren't a random sample. Don't extrapolate them to everyone.
Why it matters: in a randomized study of more than 70,000 Meta advertisers, losing offsite data raised the
median cost per incremental customer from $38.16 to $49.93, a 31% increase (NBER). Better measurement inputs lower your real acquisition cost, on any network.
Pricing and engagement
App campaign management is a flat monthly fee, quoted after we've audited your measurement and accounts. It
depends on the number of apps, platforms, and markets. Per the pricing page, nothing at
Ahmeego is billed as a percentage of spend and there are no long contracts. A measurement-only project, such as
a SKAN or AdAttributionKit schema rebuild, can be scoped on its own.
Platforms we work in
The ad platforms, stores, and measurement tools app campaigns depend on. Official product pages below.
What's the difference between Google App campaigns and Apple Ads?
Google App campaigns are automated campaigns that place your ads across Google Search, Google Play, YouTube,
Discover, and the Display Network. Apple Ads places ads only inside the App Store, in search results, on the
Today and Search tabs, and on product pages. Most iOS apps need both.
Is Apple Search Ads the same as Apple Ads?
Yes. Apple renamed Apple Search Ads to Apple Ads on April 14, 2025, because it now sells placements beyond
search results.
What is AdAttributionKit, and does it replace SKAdNetwork?
AdAttributionKit is Apple's newer privacy-preserving attribution framework. It works with the App Store
and alternative app marketplaces and interoperates with SKAdNetwork, so both can run at once. Apple encourages
SKAdNetwork users to migrate.
How much budget does a Google App campaign need?
Google's guidance is a daily budget of at least 50 times your target cost per install for install
campaigns on target CPI, 10 times the bid for install campaigns on target CPA, and 15 times for engagement
campaigns on target CPA.
Do we need an MMP if we use Firebase?
Not always. Firebase plus Google Ads covers Google well. An MMP such as AppsFlyer or Adjust earns its cost
when you run several networks, need independent attribution and fraud filtering, or want SKAN and
AdAttributionKit postback copies in one place.
Can you run campaigns for an app that hasn't launched?
On Google Play, yes. App campaigns for pre-registration build a list before launch, but the app must launch
within 90 days of opening pre-registration in the Play Console.
What should we optimize toward instead of installs?
An in-app event that happens soon after install and predicts revenue, such as a completed onboarding, a trial
start, or a first purchase. Once it has enough volume, we move to value-based bidding.
Talk to John about app campaigns
Tell John your app, platforms, monthly spend, and which MMP or SDK you use. He'll reply with a written read on
measurement and where installs are leaking value.
John, Kristy, or Sandeep will reply.One of the three of us will respond personally within 1 business day. No SDR queue.
Message received.
One of us will reply directly within one business day. While you wait, run a free
Buddy audit on your account.
Top 25 references
The primary sources, standards, research, and tools we rely on for this work. Every link was checked on
2026-10-11. We aren't affiliated with these publishers unless noted.
Official documentation
About App campaigns— Google Ads Help Google's overview of how App campaigns build ads from your assets and serve them across Search, Google
Play, YouTube, Discover, and Display.
About the different types of App campaigns— Google Ads Help Requirements for install, engagement, and pre-registration campaigns, including the 90-day launch rule for
pre-registration.
Best practices for App campaigns— Google Ads Help The budget-to-bid multiples Google recommends for each App campaign subtype and how to spot a
bid-constrained campaign.
About conversion windows for App campaigns— Google Ads Help Click-through and engaged-view windows for installs and in-app actions, which decide what App campaigns can
learn from.
App Tracking Transparency— Apple Developer Documentation The framework apps must use to request permission before tracking users across other companies' apps
and websites.
AdAttributionKit— Apple Developer Documentation Apple's privacy-preserving attribution framework for the App Store and alternative marketplaces,
including re-engagement attribution.
Receiving ad attributions and postbacks— Apple Developer Documentation The time windows that govern attribution: 24 hours after a view, 30 days after a click, and the 24 to 48
hour postback delay.
SKAdNetwork— Apple Developer Documentation The original StoreKit attribution API, still widely used and interoperable with AdAttributionKit.
What's new in AdAttributionKit (WWDC25)— Apple Developer Apple's 2025 session on overlapping re-engagement windows, country codes in postbacks, and its advice
to migrate from SKAdNetwork.
Custom Product Pages— Apple Developer Explains the 70 custom product pages each app can publish and how they connect to Apple Ads and search
results.
Ad placement options— Apple Ads Help The four Apple Ads Advanced placements and their rules, including custom product page destinations and deep
links.
Measuring ad performance on the App Store— Apple Ads Help How the AdServices attribution API differs from AdAttributionKit and why the two can both claim the same
install.
Update on plans for Privacy Sandbox technologies— Google Privacy Sandbox Google's October 2025 decision to retire Attribution Reporting, Protected Audience, Topics, and SDK
Runtime on Android and Chrome.
Standards & policy
ads.txt and app-ads.txt— IAB Tech Lab The app-ads.txt standard that lets app publishers declare authorized sellers, which protects in-app ad buys
from spoofed inventory.
SKAdNetwork (SKAN) solution guide— AppsFlyer Help Center How an MMP decodes SKAN postbacks, designs conversion value schemas across the three SKAN 4 windows, and
avoids SDK conflicts.
Set up SKAdNetwork and conversion values— Adjust Developer Hub Adjust's SDK guide to conversion value updates and to receiving copies of winning SKAdNetwork and
AdAttributionKit postbacks.
AI disclosure: This page was drafted with AI assistance and edited by a human. Google, Apple, and
MMP rules and limits are cited to official documentation as checked on 2026-10-11; confirm against the linked
source before acting. Brand names mentioned in John's background are past engagements listed on the
about page; no current endorsement is implied.
Check your Google Ads account for free.
Buddy scores your account, including App campaigns, and flags conversion setup problems.