Skip to content

7 min read

Striking distance keywords: rank them by revenue, not impressions

Queries at positions 8 to 20 are the usual SEO to-do list. Why average position misleads, and how to rank them by page revenue per click instead of impressions.

Striking distance keywords are the queries where one of your pages already ranks, just not well enough to get many clicks: roughly positions 8 to 20, the bottom of the first results page and the second. They're the standard answer to "what should I work on next" in SEO, because moving an existing page from 12 to 5 is usually more achievable than ranking a new page from nothing.

The usual way to find them is a Search Console export filtered to that range and sorted by impressions. It's a fine starting list and a poor final one. It tells you where the search demand is. It tells you nothing about which of those pages bring customers.

What counts as striking distance?

There's no official definition. Positions 8 to 20 is a common choice: 8 to 10 is the bottom of page one, where fewer people look, and 11 to 20 is page two. Below 20, a page usually needs more than an edit.

Work with query and page together, not the query alone. If two of your pages rank for the same query, that's either two separate opportunities with different fixes, or one problem: your pages competing with each other.

A window of the last 28 days keeps the list current. Longer windows blend in rankings that no longer apply.

Why is average position a shaky filter?

The position column in Search Console is an average over impressions, and the average hides a lot.

  • A query can show at 4 for some searchers and 30 for others, depending on location, device and personalization. The average says 12 and describes nobody in particular.
  • Across the whole property, position is your topmost result for each search. Grouped by page, it's that page's own position. The same query can show two different averages depending on how you slice it. The Search Console API limits post covers that aggregation rule in more detail.
  • Queries with few impressions swing from week to week. A position of 9.0 from 40 impressions is a rumour.
  • Results pages carry ads, answer boxes and other features above and between the classic links. Position 8 on one query can be visible without scrolling. On another it's a long way down.

None of this makes position useless. It makes it a filter for candidates rather than a ranking. Set a floor on impressions so you aren't reading noise, and look at the actual results page before you act.

How do you prioritise by revenue instead of impressions?

For each candidate, multiply the query's impressions by the revenue per click of the page that ranks for it.

Page revenue per click = organic revenue the page brought ÷ organic clicks the page received, over the same period.

Organic revenue here means MRR from customers whose first visit was that page, arriving from Google search. Getting that number needs attribution: a first touch recorded on the visit and joined to the subscription at signup. If you don't have that yet, this walkthrough covers the minimum setup.

Use a longer window for revenue than for impressions, say 90 days. Customers arrive slowly, and on a small site a 28-day revenue figure for most pages is zero.

Score = impressions over the last 28 days × page revenue per click over the last 90.

The score isn't a forecast. It ranks candidates by search demand, weighted by how well each page already turns searchers into customers.

A worked example

A hypothetical SaaS with three pages in play. Every number below is invented for illustration.

PageOrganic clicks (90 days)Organic MRR (90 days)Revenue per click
/blog/saas-metrics-glossary6,000€60€0.01
/blog/stripe-vs-paddle1,200€240€0.20
/tools/stripe-fee-calculator300€150€0.50

And five queries in striking distance:

QueryPageAvg positionImpressions (28 days)Score
saas metrics definitionsglossary9.414,000140
what is arpuglossary8.69,50095
paddle alternativestripe-vs-paddle11.23,200640
stripe fees calculatorfee calculator14.81,100550
stripe vs paddle for eustripe-vs-paddle17.3900180

Sorted by impressions, the two glossary queries come first by a wide margin. Sorted by score, they come fourth and fifth. The glossary gets plenty of visits and almost no customers, which makes sense: someone looking up a definition isn't shopping. "paddle alternative" has under a quarter of the impressions of the top glossary query and more than four times its score, because people who land on that comparison post go on to pay.

That's the whole argument. The impression-sorted list would have sent you to polish a page that, on its own track record, doesn't convert.

Guard against small numbers

Revenue per click built on one or two customers is fragile. One customer on a page with 30 clicks produces a rate that won't hold. Set a minimum before a page enters the ranking, such as two paying customers or a few hundred clicks in the window, and list the rest separately as promising but thin.

Also keep in mind what is measured and what isn't. The page's revenue is measured. Which query each customer typed is not, because Google doesn't pass it to your site. The score assumes every click on the page converts at the same rate. That's good enough for ordering a to-do list. If you ever report it as revenue per keyword, label it modeled. Search Console hidden queries goes through that split and the clicks Google leaves out of it.

What should you actually change on the page?

Once you've picked a query, the edit is usually small. Roughly in order:

  1. Search the query yourself in a private window and read what ranks above you. If the top results are tools and you have an essay, or they're short definitions and you have a long comparison, the gap is intent, and no amount of rewording fixes it.
  2. Answer the query directly in a section of its own, with the query's wording, or something close, in the heading. For "paddle alternative" on a Stripe vs Paddle post, that could be an H2 like "What are the alternatives to Paddle?" with a plain answer in the first two sentences under it.
  3. Cover what the higher results cover and you don't. A missing step, an outdated fee, a concrete example.
  4. Rewrite the title and meta description if they don't reflect the query. This matters more as you approach page one, where people actually read them.
  5. Add internal links from related pages on your site, with anchor text that says plainly what the target page is about.
  6. Resolve overlap. If two of your pages split the query, merge them, or make the difference obvious and link one to the other.

Things to avoid: repeating the query in every paragraph, changing the URL, and editing five pages in the same week. Change one page at a time so you can tell what moved.

How do you know if it worked?

Rankings take weeks to settle after an edit. Note the date of the change, wait at least four weeks, then compare equal windows before and after: the query's position and clicks, and the page's organic revenue. Some edits will do nothing. That's normal, and it's the reason to rank the list by revenue in the first place, so the edits that do work are the ones that pay.

Joinsight builds this list as Keyword opportunities: queries at positions 8 to 20 over the last 28 days, on pages with organic revenue in the last 90, ranked by impressions × the page's revenue per click. The exact wording is on the definitions page.

See what makes you money.

Connect Stripe or RevenueCat and Search Console, and you see combined MRR and 16 months of search history on day one. Page and keyword revenue follow as the snippet collects first touches.

No card required. The trial clock starts when your first revenue source connects.