Methodology

Proximity Beats Reviews, and a Name Is Not a Page

A 5.0 shop with hundreds of reviews loses the map pack at 7.5 miles to a 5.0 shop with 18. Proximity wins - and the one page that ranks organically does it for a reason no template can copy.

A 5.0 rating carrying hundreds of reviews lost to a 5.0 carrying 18 — at seven and a half miles from the shop. Distance won.

Two coordinate-pinned search measurements taken for an HVAC contractor we work with point the same direction. Local-pack visibility on high-intent HVAC queries tracks the distance between the searcher and the shop far more tightly than it tracks review volume or review quality; and the single city page that ranks organically appears to rank because of an entity fact about the business rather than anything transferable inside the template. The practical consequence is a budget decision rather than an SEO opinion. Building more city pages on the current model is spending money to prove something the measurement already showed.

The bound on this, stated before the findings

This is one point in time. The hub-template test carries n=1 control and five negatives, across one query archetype. That is strong enough to stop a content budget from being committed to the current plan, and not strong enough to close the question. Those are different standards, and the gap between them is why the bound is printed above the headline rather than below it.

The confirming measurement is already specified: re-run the held-template design across two or three additional archetypes, re-pinned, on separate days. Until that runs, the honest description of what follows is the strongest read available on this account, not the answer.

Everything below is a diagnostic baseline read. Nothing here claims an effect from work performed.

Finding one: proximity, measured with real coordinates

On 2026-07-31 the local pack was sampled through SerpApi with a mobile user agent, with the result location pinned by uule parameter to three sets of real coordinates: the shop itself, a downtown point at 7.5 miles, and a suburban point at 14 miles.

At the shop pin:

Query, shop pin, 2026-07-31Local pack rankOrganic
ac repair1absent
furnace repair1absent
ac repair near me1absent
boiler repair1absent
ac installation2absent
hvac companies near me2absent
hvac contractor3absent
ac installation chicago4absent
ac tune-up chicagoabsentabsent

At the downtown pin, 7.5 miles out: gone. At the suburban pin, 14 miles: gone. Same queries, same instrument, same day.

The displacement is the part that matters. At 7.5 miles the position was held by a competitor profile carrying 5.0 across 18 reviews. The displaced profile carries 5.0 across hundreds of reviews and a 100% owner reply rate. More than ten times the review volume and a perfect response record did not travel seven and a half miles.

That is not an argument against reviews. Reviews do their work after the impression, in the choice between two profiles a searcher can already see. It is an argument against selling review acquisition as a visibility remedy, because at distance the binding constraint is not the one reviews act on.

Organic was absent on every pack query in the table; the pack did all the work. And the pack's website clicks landed on a ?utm_campaign=gmb URL, which Google Search Console recorded on 2026-07-31 as 42 clicks at an average position of 4.7 — a second instrument on a separate read, not part of the SerpApi pins above.

One query broke the pattern: emergency ac repair <home neighbourhood> returned no local pack, organic #1, under an AI Overview. A neighbourhood name behaved differently from a city name, and that set up the second test.

Finding two: three identical pages, one of them ranks

On 2026-08-03 the same instrument ran a held-template test on the archetype emergency air conditioning repair <city>.

CityPage tierOrganicAI Overview
home neighbourhoodhub (control)#1yes
suburb Ahubabsentyes
suburb Bhubabsentyes
suburb Careaabsentyes
suburb Dareaabsentyes
suburb Eareaabsentyes

Suburbs A and B run the same hub template, the same five-service matrix, and the same depth of local substance as the page that ranks. They rank nowhere. Page tier does not explain the number one.

Two candidate explanations survive, and they point the same way. The shop is physically in that neighbourhood, so profile, address of record and page all assert the same name. And that name is one few HVAC businesses target, while suburbs A and E are saturated. Neither explanation is a property of the template.

Proximity beats reviews at three pinned distances Three pins on a distance axis: at the shop the profile holds pack rank one on four queries; at 7.5 miles it is gone, displaced by a competitor holding 5.0 across eighteen reviews against this profile's 5.0 across hundreds; at fourteen miles it is absent. A second panel notes the hub-template test: the control city ranks organic number one while five cities on the same template rank nowhere. ONE PROFILE, THREE PINS — 2026-07-31, UULE-PINNED, MOBILEAt the shopPack rank #14 queries; top-3 on 3 more7.5 miles outGONEdisplaced by a 5.0 × 18-review profile14 miles outGONEabsent from the packThis profile: 5.0 across hundreds of reviews (100% owner replies).Distance outweighed a review advantage of more than ten to one.Hub-template test, 2026-08-03: the control city ranks organic #1;five cities on the same template rank nowhere. Page tier does not explain the #1.
SerpApi, mobile, uule-pinned to physical coordinates; runs dated 2026-07-31 and 2026-08-03. Confidence bound published with the finding: one point in time, one control, five negatives, one query archetype.

A Name Is Not a Page

Step 1 — Hold the template constant and vary only the place name. Worked: three hub-tier pages, one template, one service matrix. Only the name differs. One ranks. Any variable still moving between those pages would have made the result unreadable, which is why the area-tier rows are context, not evidence.

Step 2 — Pin the SERP to real coordinates, because an unpinned local query measures nothing. Worked: four number-one placements at the shop pin; absent from the pack at 7.5 miles. Both readings are true. An unpinned rank tracker reports one of them and calls it "the ranking," and which one it reports is an accident of where the check ran.

Step 3 — Test whether the winner's advantage is transferable or is an entity fact about the business. Worked: the page that ranks is the page for the neighbourhood the business sits in. Address, profile and page agree. That agreement cannot be copied onto a page for a suburb fourteen miles away, because the thing being copied is not on the page.

Step 4 — If it is an entity fact, replicating the template is spending money to prove it. Worked: the city axis is already exhausted. As of the 2026-08-03 read, 25 sanctioned cities — 28 after the same-day reconciliation — with 25 built city pages and 15 city-by-service pages. There is no sanctioned city without a page. This is the third independent refutation of "prune the city pages," and it inverts the advice rather than softening it: the pages are not the problem, and city page 26 is not the remedy.

Two instruments, read correctly

The zero-click number is substantially an instrument misread — at least in local. The page-one impressions in this account are local-pack impressions, not blue links. A pack impression resolves into a call, a directions tap or a profile view, none of which Search Console can see as a website click. SparkToro's work on the zero-click era frames the broader shift. Much of what reads as a click crisis is an instrument reporting the absence of an event it was never positioned to observe.

Search Console's searchAppearance dimension returned zero rows on all four properties in the account when queried on 2026-07-31. Four properties, zero rows, no error. That is instrument failure, not a signal — a zero from an unvalidated instrument is void. The pinned SerpApi reads answered what Search Console could not.

AI Overviews: two observations, not a rollout

One sampled row carried an AI Overview on 2026-07-31. All six carried one on 2026-08-03. Those are different query sets three days apart, and two observations do not establish a rollout. They establish two observations. Anyone reporting a rollout from this pair is reporting a hypothesis in the grammar of a finding.

The Overview citations went unmeasured on both dates: the expansion token expired before the citation list could be captured. Whether the ranking page is cited inside the Overview above it is unknown on both dates, and stays labelled unknown.

What would prove this wrong

The central claim: the number-one placement is an entity fact about the business rather than a transferable property of the template, and proximity outranks review strength for pack inclusion at distance.

  • A hub page for a non-home city reaching organic #1 under the same template, on a second archetype. That would kill the entity-fact reading outright and restore the template thesis.
  • A repeat coordinate-pinned read at 7.5 miles returning the profile to the pack, which would reclassify the displacement as sampling variance rather than a proximity effect.
  • A distance-matched pair where the higher review count wins consistently. The test here was not distance-matched; that is a known weakness and the right way to attack the finding.
  • Search Console's searchAppearance returning rows, which would allow a second instrument to corroborate or contradict a set of conclusions currently resting on one.

And the bound again, because it is the honest ending: one point in time, one archetype, one control and five negatives. Enough to stop a spend. Not enough to close a question. The confirming run is specified and unscheduled, and this post will be amended rather than defended if it comes back the other way.


If a content plan in your account is built on adding city pages, the cheapest move before funding it is to pin one SERP to real coordinates and read what your customers see from where they are.

  • #blog
  • #local-seo
  • #google-business-profile
  • #proximity
  • #reviews
  • #serp
Share X LinkedIn
Build it yourself?

Get the kit, not just the theory.

We'll send the build checklist behind this post — and the next pillar when it ships. One email, no drip sequence. Unsubscribe in one click.

Want this built for you?

Book a discovery call. We'll walk your numbers.

20 minutes. Tell us what's broken, hear what we'd ship in the next 90 days. No pitch deck.