Cohort Maturity for Apple Search Ads: Stop Judging New Campaigns on Revenue That Hasn't Arrived Yet
Most indie developers judge a new Apple Search Ads campaign on the first week of numbers. Spend goes out, installs come in, and the revenue column shows a fraction of what you hoped. The instinct is to pause, lower the bid, or rewrite the keywords. Sometimes that's right. Often it's a decision made on data that hasn't had time to become revenue.
This post is about cohort maturity: the idea that every install group needs a certain amount of time before its revenue tells you the truth. If you read ROAS without accounting for that, you will systematically cut campaigns that were about to work and keep ones that only looked good because their money arrived early.
Why early ROAS is almost always misleading
ROAS is revenue divided by spend. The problem is the numerator. For a subscription app, revenue from a group of users doesn't show up on install day. It trickles in over trial periods, conversions to paid, renewals, and sometimes refunds that are reversed later.
So when you look at a campaign on day five, you're seeing:
- Spend for everyone who tapped during those five days.
- Revenue only from the subset of those installers who have already reached a purchase or conversion point.
- Attribution that may still be resolving for the most recent installs.
The denominator is complete. The numerator is partial. That mismatch makes young campaigns look worse than they are, and it makes old campaigns look better than they will stay.
Build a cohort view, not a calendar view
A calendar view asks: what happened this week? A cohort view asks: what did the people who installed in week one eventually do? For Apple Search Ads, the cohort is simply the set of installs attributed to a campaign or ad group in a given window.
In practice:
- Group installs by the week they happened, not the week revenue arrived.
- Compare cohorts at the same age. Week one at day 14 against week two at day 14, not week one at day 14 against week two at day 3.
- Keep spend tied to the same cohort window so the ratio is honest.
If your revenue tool (RevenueCat or similar) can report by install date, use that. If it reports by transaction date, you'll need to be careful about which period you attribute spend to, or you'll mix cohorts without noticing.
Know your lag before you judge anything
You need a rough sense of how long your users take to pay. Don't guess. Look at your own history:
- How long after install does the first trial start?
- How long between trial start and the first paid charge, or the decision point where most trials end?
- How many days pass before a monthly subscriber's second renewal shows up?
Write these down as ranges. For example, you might find that most of your conversions happen within a few days of install but a meaningful tail arrives two to three weeks later. That tail is the part early reads miss. Treat it as an illustrative pattern to check against your own data, not a universal number.
Once you know the lag, set a maturity threshold. A campaign shouldn't be judged on revenue until its newest cohort has aged past most of that lag. If your typical conversion window is roughly three weeks, a campaign launched two days ago is not ready for a ROAS verdict, no matter how it looks.
Separate attribution delay from user delay
Two different things look like "revenue is late":
- User delay. The person installed, took time to decide, and paid later. This is real and expected.
- Attribution delay. The install's link to Apple Search Ads hasn't fully resolved yet. Apple's AdServices attribution is generally resolved within about a day, but your own pipeline may add its own lag.
Attribution delay is short and you can mostly ignore it after a day or two. User delay is what the maturity window is for. Don't let a few hours of pipeline lag convince you a keyword is dead, and don't let a long user tail convince you a keyword is a winner.
A practical maturity checklist
Before changing a bid, pausing an ad group, or rewriting keywords based on ROAS, check:
- Is the newest cohort older than your typical conversion window?
- Is the cohort large enough that one or two purchases won't swing the ratio? A handful of installs can produce wild numbers in either direction.
- Are you comparing cohorts of equal age?
- Did anything else change during the window, such as a price test, a new screenshot set, a storefront update, or a restore-purchases fix?
- Is the spend itself stable, or did the campaign barely deliver for part of the window? A campaign that spent little for three days hasn't really been tested.
If the answer to the first question is no, the correct action is usually to wait, not to optimize.
What to do while a cohort matures
Waiting doesn't mean doing nothing. Use the time to watch leading indicators that move before revenue does:
- Impressions and TTR show whether the keyword is being shown and whether people find your ad relevant enough to tap.
- Install rate from taps shows whether the product page is doing its job.
- Trial starts show whether the install is turning into a real intent signal.
If those leading numbers are healthy, an immature ROAS is a reason for patience. If the leading numbers are weak, you have a real problem to fix now, without waiting for revenue to confirm it. That distinction is the whole point: act on the earliest honest signal, and don't mistake an unfinished revenue curve for a verdict.
Avoid the resetting trap
Every time you pause a campaign, change a major bid, or rebuild an ad group, you start a new cohort story. If you keep editing before any cohort matures, you never get a clean read. You end up with a pile of half-finished experiments and no conclusions. Pick a maturity window, write it down, and commit to it for at least one full cycle unless something is clearly broken.
Takeaway
Revenue from Apple Search Ads arrives on the user's schedule, not on your reporting schedule. Judge each install cohort only after it has aged past your real conversion lag, compare cohorts at equal age, and watch leading indicators in the meantime. Doing this by hand is manageable for one campaign. Keeping track of cohort age across several countries and ad groups gets tedious fast, which is one reason tools like AdsBuddy are useful. They can flag which campaigns have matured enough to act on and suggest the next step, while you still approve every change yourself.