Local SEO Case Study: 15 Positions in 28 Days, Logged
We changed one local service page on July 13 and logged every Search Console number either side of it. Here is what moved, what didn't, and what we'd do again.
On July 13, 2026 we made four changes to a single local service page on this site. In the 28 days that followed, its average Google position went from 44.7 to 29.6 and its impressions rose from 514 to 810 — and it still earned zero clicks. That last part matters as much as the first, and most case studies leave it out.
This is the full log for one page: what it looked like before, exactly what we changed, what Search Console reported afterward, and which of the four changes we think actually did the work. It is a small sample from a low-authority domain, which is precisely why it is useful — it isolates on-page effects that would be invisible on a site with a strong backlink profile. The backdrop is that fewer than one in three Google searches still sends a click to the open web, according to SparkToro’s 2026 analysis, so position movement and click movement have come apart as metrics.
What did the page look like before we touched it?
The page was our Provo, Utah service page: indexed, earning around 500 impressions per 28 days, and stuck at an average position of 44.7 — deep on page four, ranking for a tight cluster of commercial queries it was never explicitly written for. It was not broken. It was generic.
Its H1 read “AI Visibility Services in Provo.” Its most prominent call to action opened Calendly in a new tab. It carried FAQPage structured data, which Google retired as a rich result for most sites, and its body copy led with feature bullets rather than an answer to any question a buyer was actually typing. Meanwhile Search Console showed the queries it was surfacing for were unambiguously commercial: “provo seo,” “provo seo company,” “search engine optimization company provo,” and half a dozen close variants. Google had already decided what the page was about. The page just wasn’t saying it.
That gap between what a page ranks for and what a page says is the most common fixable problem we find on local service pages. The demand data supported acting on it: the head term carries low competition and, per DataForSEO, the pages winning it have fewer than ten referring domains on average. This was a market where content could plausibly matter more than links.
What exactly did we change on July 13?
Four changes, shipped in one commit: we front-loaded the H1 to the exact commercial phrase, added a genuine answer-first block under a question heading, routed both prominent CTAs to our own tracked booking page, and removed the dead FAQPage schema. No new backlinks, no new pages, no technical migration.
The H1 became “Provo SEO Company / Built for AI Search & Google.” The answer-first block was a new H2 — “How do you choose an SEO company in Provo?” — followed by a bolded 40-to-60-word direct answer and two paragraphs of supporting evidence, including a hyperlinked statistic and three contextual links to sibling pages. Both the hero button and the closing button changed from a direct Calendly link to an on-site /contact#book anchor, which keeps the visitor on the domain and lets us attribute the booking. The FAQPage block came out of the structured data array while the FAQ text stayed on the page for AI extraction.
Two weeks later, on July 27, we added one more signal: a contextual in-body link from a neighboring city page using the descriptive anchor “Provo SEO company.” That is the only off-page-ish change in the whole log, and it is internal.
What did Search Console actually report?
Comparing the 28 days before the edit (June 9 to July 6) against the 28 days after (July 7 to August 3), the page moved from average position 44.7 to 29.6 and from 514 to 810 impressions. The query-level movement was more dramatic than the page-level average, which is typical when a page stops being a generalist.
| Query | Position before | Position after | Change |
|---|---|---|---|
| provo seo | 35.2 | 21.7 | −13.5 |
| provo seo company | 34.1 | 23.8 | −10.3 |
| provo search engine optimization | 33.4 | 21.1 | −12.3 |
| search engine optimization company provo | 39.4 | 21.6 | −17.8 |
| search engine optimization service provo | 42.8 | 19.4 | −23.4 |
| search engine optimization services provo | 37.8 | 17.8 | −20.0 |
Every query in the commercial cluster moved in the same direction at roughly the same time, which is the pattern you want to see: it suggests Google re-evaluated the page’s topical fit rather than one query drifting on its own. The whole family crossed from page four into the top of page two.
One detail we did not expect. Search Console’s URL inspection showed the page’s last crawl date preceded our July 13 edit, yet the position climbed during that window anyway. Our read is that Google reassessed content it had already fetched rather than needing a fresh crawl to react — which, if generally true, means the lag between an on-page edit and a ranking response can be shorter than the crawl log implies.
What didn’t work — and what we’re not claiming
Clicks stayed at zero for the entire period, and the page produced no booked meetings. Position 21 on a query with 70 monthly searches is still position 21: it is below the fold, below the map pack, and below six competitors with real link profiles. Moving from invisible to nearly-visible is progress, not revenue.
We also can’t cleanly separate the four changes. They shipped together, so the honest attribution is “this bundle moved the page,” and our best guess — based on the fact that the query-level gains concentrated on the exact phrases we front-loaded into the H1 — is that the H1 and the answer-first block did most of the work, with the CTA and schema changes contributing nothing to position (they were conversion and hygiene fixes, and we’d expect that). A cleaner experiment would have shipped them separately. We chose speed over cleanliness and we’re telling you that rather than implying a controlled test.
Nor do we claim this generalizes to competitive heads. This worked on a query where the ranking pages carry single-digit referring domains. On a term where the winners have hundreds, the same four changes would very likely produce a much smaller move, because the binding constraint there is authority rather than relevance. The Princeton team’s Generative Engine Optimization study makes a related point for AI answers — structure and evidence density change citation likelihood substantially, but they don’t override the underlying source pool.
What would we do again, and in what order?
We’d do the same four changes, in the same order, on any indexed page whose Search Console queries are more commercially specific than its own headline. That mismatch is the trigger worth looking for, and it takes about ten minutes to check.
The diagnostic is simple. Pull your Search Console queries filtered to one URL, sort by impressions, and read the top ten out loud. If those phrases don’t appear near the top of the page — in the H1, in the first question heading, in the first two paragraphs — you have the same gap we had. Google is already telling you what it thinks the page is for; most pages just never answer back. Fix the headline first, because it is the cheapest change and, in our log, the one the gains tracked most closely.
The second thing we’d repeat is the answer-first block, though for a different reason. It didn’t just help this page rank; it gave the page something quotable, which is what matters when nearly half of U.S. consumers use AI tools for brand discovery, as Business Insider reported in 2025. A page that answers a question in a self-contained paragraph can be extracted by an engine. A page of feature bullets cannot.
What we’d actually do
If you have a local service page sitting between positions 30 and 50 on commercial queries, we’d spend an afternoon on the headline and one answer-first block before spending a dollar on links. The ceiling on that work is real — you will likely land on page two, not page one — but it is the cheapest fifteen positions available, and it tells you whether relevance or authority is your actual constraint. Once you’re at position 20 and stuck, you have your answer, and the next investment is off-site.
We run this diagnostic across every page on a client’s site as part of our Utah local SEO work, and the Provo SEO company page in this log is live if you want to read the finished version. If you’d like us to run the query-versus-headline check on your pages, book a call — we’ll do the first pass on the call itself.
Tagged
Get your free website visibility audit
SEO, AI visibility, and Google Business Profile — scored in minutes. Free, no credit card.