# Keyword Research Methodology

## What App Store search reads

Apple documents two kinds of search signal: text relevance from the name,
subtitle, keyword field and primary category, and user behavior such as
downloads, ratings and reviews. The table below is a planning aid, not a list
of ranking weights.

Limits below are App Store Connect values as Apple's documentation stated them
at the time of writing; confirm them in App Store Connect Help before quoting.

| Field | Role in search | Limit | Changing it | Guidance |
|---|---|---|---|---|
| App name | Indexed | 30 characters | With a new version, when status allows | Distinctive, and hints at what the app does |
| Subtitle | Indexed | 30 characters | With a new version | Short statement of the value or main use |
| Keyword field | Indexed | 100 bytes | With a new version | Commas between terms, no spaces after them |
| Primary category | Counts toward relevance | One choice | With a new version | Never repeat its name in keywords |
| Custom Product Page keywords | Indexed for approved, visible pages | Set per page | In App Store Connect | Sends matching searches to that page |
| In-App Event name and short description | Shown on cards in Search | Set per event | Per event | Visible copy, not a hidden keyword field |
| Description | Conversion | 4,000 characters | With a new version | Apple's product page guidance says not to add keywords for search here |
| Promotional text | No effect on ranking, per Apple | 170 characters | Any time | Timely conversion message |
| Ratings and reviews | Behavior signal | Ongoing | Earned | Mine for vocabulary; never a place to stuff terms |

Additional rules:

- Singular and plural of a word already present count as the same word.
- Use a space only inside a real multi-word phrase.
- Two different words that are both searched, such as "photo" and
  "photography", may both earn a place.
- Latin-script characters take one byte each; many other scripts take two or
  three, so the field holds fewer of them.

## Research process

### 1. Competitors

Pick the top 5 to 10 apps that rank for your category's main terms. For each,
record:

- the keywords in its name and subtitle,
- positioning words that recur across names, subtitles and screenshots,
- terms nobody covers.

Type partial queries into App Store search and note the autocomplete
suggestions; they come from what people actually search.

### 2. Brainstorm by type

| Type | Example for a hiking app |
|---|---|
| What it does | trail, map, route |
| What it is used for | hike, backpack, summit |
| Who uses it | beginner, family, solo |
| Nearby activities | camping, climbing, birding |

Terms that appear in many competitor names usually mean high volume and hard
competition. Terms that autocomplete offers but competitors ignore are the
openings.

### 3. Apple Ads discovery

Run a discovery campaign with broad match for two to four weeks. Export the
search terms report, sort by tap-through rate to find intent and by conversion
rate to find terms that lead to downloads, and move the winners into the
keyword field.

### 4. Every update

- Check impressions, tap-through rate and conversion in App Analytics.
- Swap out terms with low impressions or low tap-through.
- Try newly discovered terms.
- Note what competitors changed in their metadata.

## Scoring

Rate each candidate from 1 to 5 on three scales:

- **Relevance**: 5 means it describes the core function, 1 means it is
  tangential.
- **Volume**: estimated from Apple Ads impressions.
- **Difficulty**: 5 means little competition, 1 means large apps dominate it.

Only terms with Relevance of 3 or more are considered. Priority is
`(Relevance x 2) + Volume + Difficulty`.

Rule a term out when:

- Relevance is below 3,
- it is another company's brand name, which breaks the guidelines,
- it already appears in the name or subtitle,
- it is the primary category's name.

## Filling the slots

Two worked examples. Lengths are counted exactly.

**Meditation app**

- Name: `Stillpoint - Meditation Timer`
- Subtitle: `Sleep Sounds & Calm Breathing`
- Keywords (15 terms, 98 bytes):

```
mindfulness,anxiety,stress,relax,focus,yoga,insomnia,nap,journal,mantra,zen,rain,noise,guided,mood
```

**Recipe app**

- Name: `Pantry Chef - Recipe Planner`
- Subtitle: `Meal Prep & Grocery Lists`
- Keywords (14 terms, 100 bytes):

```
cooking,dinner,vegan,keto,healthy,shopping,budget,family,easy,quick,bake,cookbook,leftover,nutrition
```

Notes:

- Every comma costs one byte. Search matches single words, so long keywords
  are not better in themselves.
- Keep a phrase such as "meal prep" together when people search it that way;
  split words that are valuable on their own.
- Hold back 5 to 10 bytes for experimental terms you rotate each release.

## Seasonal rotation

| Season | Terms | Ship in |
|---|---|---|
| New year | resolution, goal, habit, new year | December release |
| Back to school | student, school, study, planner | July or August |
| Holiday shopping | gift, holiday, deal, wish list | October or November |
| Summer fitness | outdoor, running, summer, beach | April or May |
| Tax season | tax, receipt, expense, deduction | January or February |

Swap two or three terms per season. Keep the core 70 to 80 bytes stable and use
the remaining 20 to 30 for seasonal experiments.

## Before and after

**Wasted bytes.** For a surf forecast app:

```
Before (66): best surf app, surf forecast, wave report, and tide times, surfing
After  (48): wave,swell,tide,wind,beach,buoy,report,spot,reef
```

The first version pays for spaces after commas, filler ("best", "app"), a
stop word ("and") and words that belong in the name. The second holds nine real
terms in fewer bytes and leaves 52 bytes for more.

**Duplicates.** With the name `SwellWatch - Surf Forecast`:

```
Before (65): surf,forecast,forecasts,swell,wave,tide,wind,buoy,beach,reef,spot
After  (59): swell,wave,tide,wind,buoy,beach,reef,spot,kite,marine,chart
```

Removing "surf", "forecast" and "forecasts" frees 24 bytes; "kite", "marine"
and "chart" use 18 of them, and 41 bytes remain for further terms.
