Stop Changing Apple Search Ads Because Yesterday’s Revenue Looks Bad: Use Cohort Windows for Real Decisions
If you run Apple Search Ads long enough, you’ll see it: installs come in, then revenue looks mediocre (or amazing) for a day or two, then flips once purchases settle. The common mistake is changing bids and keywords based on “yesterday ROAS,” even though the install→purchase chain is still unfolding.
Instead of optimizing to a moving target, use install cohorts and a fixed decision window. This keeps your next change grounded in revenue that’s likely to be “mostly there,” so you stop paying for reactions to noise.
Why short-term ROAS misleads (even with correct attribution)
Apple’s AdServices attribution token resolves within roughly ~24 hours. That tells you which install is attributed to an ad click.
But “revenue after install” is not instant:
- One-time IAP can take time to convert after onboarding.
- Subscriptions (even if you’re not optimizing just for them) can require trial completion, paywall exposure, or user re-engagement.
- Even first purchases often show up in bursts after marketing emails, reminders, or user behavior cycles.
So your metric like ROAS = revenue ÷ spend is delayed relative to your ad delivery. If you adjust every day, you effectively “learn” the lag, not the true performance.
The cohort-based fix: lock decisions to install-date windows
The goal: for every optimization cycle, compare ads against a revenue figure that has had enough time to materialize.
Step 1: Decide your “decision window” length
Pick a fixed window based on how quickly your users tend to purchase.
Use this simple rule of thumb:
- If most purchases happen quickly for your app, a shorter window may be fine.
- If purchases arrive in waves over several days, you need a longer one.
Because I can’t see your funnel, treat these as starting points you should validate:
- Non-subscription, quick-buy apps: test 3–5 days as an initial decision window.
- Apps with onboarding or delayed conversion: test 7 days.
- Apps where conversion clearly accumulates over time: test 14 days.
The point isn’t the exact number—it’s that you don’t change the budget/bids based on incomplete revenue.
Step 2: Build “cohort ROAS” by install date
In RevenueCat (or your own analytics), segment revenue by install date cohort:
- Cohort A: installs from Day 0 (today’s ads)
- Cohort B: installs from Day -1
- Cohort C: installs from Day -2
For each cohort, compute:
- Taps attributed (or taps from ASA metrics mapped to installs)
- Installs attributed
- Revenue attributed up to the end of your decision window
Then compute cohort ROAS for that window.
You’re aiming for: “For users who installed on Tuesday, what did they do by the time I’m ready to decide?”
Step 3: Optimize using “mature” cohorts only
When you run optimization on a given day:
- Include cohorts whose decision window is complete.
- Exclude the newest cohorts that are still “in progress.”
Example logic:
- Today is Aug 26.
- If your decision window is 7 days, only use cohorts with install dates Aug 19 and earlier.
This one change alone dramatically reduces whiplash.
What to optimize with cohort windows (and what not to)
Cohort ROAS is a great guardrail, but not everything should wait.
Optimize bids/CPA/ROAS on cohorts
Use cohort ROAS (or cohort CPA) when deciding:
- Increase CPT max (or bids) for the keywords/campaigns that hold up after the window.
- Reduce bids for traffic that looks good in day-1 but fails by day-7.
Because you’re comparing completed revenue, you’re not punishing users for slow buying cycles.
Keep fast metrics for triage—without locking decisions
Use short-term metrics for diagnosis, not final decisions:
- TTR (taps ÷ impressions): helps you spot ad delivery + query relevance issues.
- Install conversion rate (installs ÷ taps): helps you spot product page friction.
But don’t treat those as “profit truth.” They help you decide where to look.
A common healthy pattern:
- If TTR is low → keyword relevance / query matching issue.
- If installs/taps is low → product page conversion issue.
- If both are fine but cohort ROAS is low → user monetization / onboarding issue.
A practical workflow you can run weekly
Here’s a workflow that fits how indie teams actually operate.
1) Every day: monitor, don’t react
- Track spend, taps, installs, and cohort ROAS for mature cohorts.
- Flag outliers (e.g., a keyword suddenly changes install conversion).
2) Once a week: decide using mature cohorts
For each campaign/ad group/keyword:
- Compare cohort ROAS for the window you selected.
- Also review tap→install conversion over the same period.
3) Apply one lever per cycle (because you’re still not “done” with attribution)
When you change anything, keep it small and targeted:
- Adjust CPT max bids by a modest step (not a huge swing).
- Pause only after a meaningful amount of delivery and failure persists across the cohort window.
This keeps your cause→effect cleaner.
Concrete decision rules (so you don’t overthink it)
Use rules that map to what’s stable.
Rule A: Don’t pause on “early bad ROAS”
If the newest cohorts haven’t matured, a low ROAS can be temporary. Pause decisions should require evidence across multiple matured cohorts.
Rule B: If tap→install is strong but cohort ROAS is weak, don’t chase CPT first
That pattern usually means:
- You’re buying the right users enough to install,
- but they’re not converting into revenue quickly.
Next moves are typically product-page + onboarding + offer structure—not always bid cuts.
Rule C: If cohort ROAS is fine but CPT looks high, check conversion before bidding lower
Higher CPT isn’t automatically bad. If conversion is strong, you might be buying profit efficiently.
The cohort ROAS tells you the real story.
Common pitfalls to avoid
- Reacting to last 24 hours revenue: your newest cohorts are incomplete.
- Mixing cohorts in dashboards: “average ROAS” across all time hides lag.
- Attribution mapping issues: if RevenueCat install→purchase mapping is broken, cohort ROAS will look random. Verify the chain before trusting the numbers.
- Changing many levers at once: cohort windows reduce noise, but they don’t prevent attribution confusion from multiple concurrent edits.
How AdsBuddy fits (lightly)
If you want, tools like AdsBuddy can read your Apple Search Ads performance and revenue mapping, then propose a short prioritized list of cohort-informed changes you approve and apply. The key idea stays the same: don’t let incomplete revenue drive the next bid change.
Takeaway
Stop optimizing Apple Search Ads to yesterday’s ROAS. Use install-date cohorts and a fixed decision window so your bid changes reflect revenue that has time to settle. You’ll make fewer, smarter moves—and your results will stop looking like a roller coaster.