Guide · Apple Ads · ASO

Which Apple Ads keywords actually make money?

A keyword can bring installs without bringing paying customers. To decide where your next ad dollar should go, review organic rank, ad spend, and revenue over the same period.

This guide shows how to organise that review and choose a test: increase a bid, try a new keyword, or pause an expense that needs a closer look. Keep attributed revenue separate from estimates, and allow for trials that have not converted yet.

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?”

The problem is comparing different date ranges and levels of detail.

So people do the rational-but-broken thing:

Put the numbers on one row so you can review visibility, cost, and revenue together.

The three-signal model

Exact match first, because it is the only match type where the spend belongs to a single keyword and the row below can mean anything. If your campaigns are not split that way yet, start withmatch types and the campaign structure that uses them.

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

Label revenue estimates clearly. App-level revenue divided by spend share is useful context, but it does not prove a particular keyword generated that revenue.

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.

Check what your revenue source measures

Before drawing a conclusion, check the reporting setup:

If revenue join is impossible this month, still run verdicts onrank + spend + paid installs, and promote revenue join as soon as you have a source you understand.Read how RevenueCat attribution and Veldo estimates differ.

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, iOS App Store only

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, and keep discovery and performance in separate campaigns so they stop bidding against each other.

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, get Veldo.
  5. Prefer agents in your editor? See Veldo MCP.

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