Guide · Apple Ads · ASO

Which Apple Ads keywords actually make money?

Most indie ASO stacks answer one question well: where do I rank?That's useful. It's also incomplete. If you run Apple Search Ads, the question that pays the rent is different.

For each keyword, after organic rank, ad spend, and subscription revenue are joined over the same window: should I bid,pause, or double down?

This guide is the playbook behind that question. It's written for indie iOS developers on a Mac who don't want a $100+/mo enterprise suite just to stop lighting money on fire.

What you'll walk away with

  1. A simple three-signal model: rank × ads × revenue
  2. Four verdicts you can apply manually this week (even in a spreadsheet)
  3. How cannibalization actually shows up in Apple Ads
  4. A practical weekly review ritual
  5. Where native tools (and Veldo) fit if you want the join automated

The trap: optimizing keywords in three different tabs

A normal indie workflow looks like this:

TabWhat you seeWhat you decide
App Store Connect / rank trackerOrganic position“We're #8, nice”
Apple AdsCPA, taps, spend“This KW is expensive”
RevenueCat / ASC proceedsMRR, trials“Revenue is… fine?”

None of those tools is wrong. The failure mode is unjoined time windows and unjoined grain.

So people do the rational-but-broken thing:

ASO without revenue is a ranking hobby. Ads without organic context is a CPA hobby. Indie budgets need both in one row.

The three-signal model

For every keyword (exact match first), collect one row:

FieldSourceNotes
KeywordYour listPrefer exact; broad later
StorefrontUS, DE, JP…Don't blend blindly
Organic rank (today + 7/30d trend)Rank tracker / ASA discovery200+ = not visible
Search popularityApple Ads APIApple's own signal
Difficulty proxyStrength of top 10Optional but useful
Spend 30dApple AdsExact keyword or exact ad group
Installs 30d (paid)Apple Ads
Attributed revenue 30dRevenueCat / your attributionEven imperfect is better than none
Organic installs estimateOptionalHard; don't block on perfection

You don't need perfect multi-touch attribution to get leverage. You needdirectional truth on a 30-day window, reviewed weekly.

The only equation that matters (conceptually)

Keyword health ≈ f(visibility, demand, paid efficiency, paid→revenue)

Rank alone can't tell you to pause. CPA alone can't tell you you're cannibalizing. Revenue alone can't tell you the keyword is even discoverable.

Four verdicts (use these labels)

Steal the language. Put it on a column. Act weekly.

1. Double down

Pattern

Action

2. Bid opportunity

Pattern

Action

3. Cannibalizing

Pattern

Action

Cannibalization is not a moral failure. It's a budget allocation problem. Paying Apple for a tap you would have won organically is optional.

4. Money pit

Pattern

Action

Sample ledger (illustrative)

KeywordRankΔSpend 30dRevenue 30dVerdict
habit tracker#8↑6$92$241Double down
meditation timer#20$184$118Cannibalizing
sleep sounds200+0$263$0Money pit
breathing exercises#380$0$0Bid opportunity

This is the table Veldo is built around: same join, on your Mac, with a verdict instead of a hunch. You can start in Numbers today; automation is optional until the habit sticks.

Organic ASO and Apple Ads are one system

Metadata feeds both

Your title, subtitle, and 100-character keyword field influence:

If ads teach you that breathing exercises converts and organics never show you for it, that's a metadata + creatives job, not only a bid job.

Custom product pages change the end of the funnel

With keyword assignment to CPPs, a converting paid/organic query can land on screenshots that match intent. That's conversion rate work sitting next to keyword work, so treat them as one loop. (See ourCPP keywords note.)

Brand vs non-brand

A weekly 45-minute ritual (indie-sized)

Every Monday (or after weekend spend settles):

  1. Export or open last 30 days of keyword spend (exact).
  2. Refresh organic ranks for the same list + storefronts you care about.
  3. Pull attributed revenue if you have it (RevenueCat cohorts are fine).
  4. Tag each keyword with one verdict.
  5. Execute at most three changes:
    • 1 pause test (cannibalization or money pit)
    • 1 bid increase (double down)
    • 1 new exact test (bid opportunity)
  6. Write one line in a log: what you changed and what you expect in 14 days.

Indies lose less to bad strategy than to unreviewed automation. Cap the changes so you can learn.

Attribution reality check (don't wait for perfect)

You will not get agency-grade multi-touch on day one. Good enough looks like:

If revenue join is impossible this month, still run verdicts onrank + spend + paid installs, and promote revenue join as soon as you can. Half a join beats three dashboards.

Tooling: spreadsheet vs suite vs native Mac

ApproachProsCons
SpreadsheetFree, flexibleBreaks, no daily ranks, no alerts
Enterprise ASO (Sensor Tower, AppTweak, …)Deep dataPrice, overkill, web-only for most indies
Appfigures-class analyticsGreat reportingKeyword tracking often capped/metered; see Appfigures alternative
Native Mac rank tools (e.g. Astro)Fast local UXOften stop at rank/popularity; see Veldo vs Astro
VeldoRank + Ads spend + revenue join, local data, verdicts, unlimited keywords, CLI/MCPMac-only, waitlist/launching

If you only need ranks, a focused tracker is enough. If you run Apple Ads and subscriptions, the join is the product.

For a wider map: Best ASO tools for indie developers (2026). For why native matters:ASO tools for Mac.

How Veldo encodes this playbook

Veldo is a native Mac app that:

  1. Tracks organic ranks across 60+ storefronts
  2. Pulls Apple Ads spend, installs, and Apple's popularity
  3. Optionally joins RevenueCat revenue per keyword
  4. Emits a first-match verdict with the evidence under it
  5. Notifies when a verdict flips (watchdog)
  6. Keeps acquisition data on your Mac (SQLite + Keychain)
  7. Exposes read-only CLI/MCP so agents can answer “what am I wasting money on?” without mutating campaigns

Pricing on purpose: $8.99/mo or $99/yr. Pay for the tool, not a percentage of ad spend.

FAQ

Do Apple Ads help organic rankings?

Apple has said relevance and user behavior matter for search. Paid traffic can indirectly help if users install and engage, but buying a keyword is not a guaranteed organic boost. Treat ads as acquisition first; treat any organic lift as a bonus you measure, not a promise you bank on.

Should I pause exact match if I rank #1?

Often worth a timed test. If total installs and trials hold, you were renting your own demand. If they fall, the ad was incremental; bring it back at a saner bid.

How long before I call something a money pit?

At least one full trial + conversion cycle, and enough spend that noise isn't the story. For many subscription apps, 14–30 days of honest data beats gut feel. Brand-new apps may need longer for statistics, but still set a max burn.

Do I need RevenueCat?

No for rank/spend/install verdicts. Yes (or equivalent) if you want revenue-aware double-down vs vanity installs. Veldo works without it; revenue columns stay empty until connected.

Exact vs broad match?

Run verdicts on exact first. Broad is a discovery hose; it will muddy keyword-level truth. Promote winners from search terms reports into exact tests.

How is this different from CPA optimization in Apple Ads Manager?

CPA optimization ignores organic rank and often ignores subscription revenue quality. A low-CPA keyword that never pays, or a mid-CPA keyword you already own organically, both look “fine” in Ads alone.

Next steps

  1. Build the four-column ledger for your top 25 keywords this week.
  2. Run one cannibalization pause test and one bid-opportunity exact.
  3. Pack your metadata with a keyword field counter.
  4. If you want the join automated on your Mac, join the Veldo waitlist.
  5. Prefer agents in your editor? See Veldo MCP.

Every keyword needs a next move. Rank is a signal. Revenue is the scoreboard.