The headline number is real: monthly clicks went from 2,375 in month 1 to 10,465 in month 12, and average position moved from 21.07 to 4.0. What I actually care about is that conversions climbed from 142 to 728 and modeled lead value went from $92,300 to $473,200 a month. That ratio held because we fixed intent alignment and indexation before we touched content volume. This write-up explains the sequencing, including the month-5 decision to stop publishing and start consolidating, and the two keyword groups that went backwards while everything else improved.
Executive Summary
Context
This was a local lead-generation site for a plumbing service in a single masked metro. One business, a money page at /services/plumber, a local money page at /[city-masked]/plumber, and a thin set of support content. At intake the site sat at an average position around 21 with uneven traffic, some commercial terms hovering in striking distance of page one, others buried at 50+ with no clear page owning the intent.
Domain Rating was 17 with 41 referring domains and 162 total backlinks. That is a modest but not dead profile, which mattered: it meant the ceiling was not a link-poverty problem in the early months. The constraints were explicit going in, established local competition, a hard cap on how much content we could produce per month, and a no-fake-claims rule from the client's side that shaped how we wrote service and trust copy.
The commercial frame: this is a leadgen business, so a ranking only counts when the query carries buying intent and the landing page can convert it. Vanity informational traffic was deprioritized from day one.
The Challenge
Three problems, in priority order.
Intent collisions on the money page. A cluster of commercial and transactional terms, plumber services, plumber cost, plumber pricing, plumber repair, best plumber, were all mapped to /services/plumber, but the page tried to answer all of them at once and ranked decisively for none. Several were stuck in the 20s and 50s. Classic cannibalization where the page's relevance signal was diluted across too many sub-intents.
Crawl waste and indexation noise. The template produced duplicate and low-value URLs that ate crawl budget and muddied which pages Google should treat as canonical. Until that was clean, any content work would be built on unstable ground, rankings would wobble because the canonical picture kept shifting.
Local terms with no authoritative home. local plumber (6,600 volume) sat at position 75, and plumber near me at 50. The local money page existed but wasn't reinforced by internal links or entity signals, so it couldn't compete for the highest-volume local intent.
The trap here is to start writing content immediately. With limited production capacity, spending it before fixing the canonical and intent-mapping problems would have produced pages that competed with the existing ones instead of helping them.
Methodology
The engagement ran six workstreams, sequenced so each one removed a blocker for the next. Foundation first, then intent-aligned content, then architecture, then authority, not in parallel, because parallel work on an unstable canonical base produces noise you can't read.
Data sources
- Search performance (impressions, clicks, CTR, average position) tracked monthly across the 12-month window.
- Session and conversion data from analytics, with conversions defined as lead actions (quote requests, appointment and consultation submissions).
- Backlink metrics, Domain Rating, referring domains, total backlinks, sampled monthly.
- Keyword positions captured before and after for the 16 tracked terms that mattered commercially.
Methodology notes and honesty boundary
Revenue here is a modeled lead value, not invoiced revenue. We multiplied conversions by an average lead value; we did not have CRM close-rate data, so treat the revenue line as a directional model, not booked cash. Average position is a blended figure across tracked queries and moves with SERP volatility, so month-to-month wobble is expected. I'll flag the specific noisy spots in the limitations section rather than smoothing them over here.
Timeline

Each phase maps to a workstream from the service plan and to the metric it was supposed to move.
Months 1-3: Technical SEO and indexation cleanup
Crawl and indexation triage came first: canonical and redirect cleanup, template-level duplication fixes, Core Web Vitals and renderability checks, and internal status-code validation. The point was to make the indexed-page set match the pages we actually wanted to rank, so average position stopped drifting on canonical churn. Average position moved from 21.07 to 17.69 across this phase, modest, but it was the stabilization that made everything after it readable. Brand Voice and editorial QA ran alongside from month 1, building the reviewer checklist and claim boundaries so nothing we published later would cross the no-fake-claims line.
Months 2-4: Authority content and intent alignment
With indexation clean, we rewrote the money page against a proper SERP intent map. Rather than one page chasing every commercial term, we structured it around the dominant commercial sub-intents (cost, pricing, services, repair) and added E-E-A-T proof blocks, FAQ and comparison sections. Support content, the /resources/plumber-guide page, was planned to reinforce the money page's topical relevance, not to chase informational traffic for its own sake.
Month 5: The pivot, consolidate and prune
This is the decision I'm proudest of. By month 5 the data showed that incremental new pages were underperforming while the consolidated money page was gaining. So we stopped producing volume. We merged duplicate-intent pages, redirected the weak ones, shortened the internal path to conversion pages, and pruned orphan and low-value URLs. Hub-and-spoke internal linking pushed contextual links into the priority URLs. Average position went from 14.51 in month 5 to 12.96 in month 6 and kept compounding.
Months 3-5: Entity and schema work
Organization and Service schema cleanup, author/reviewer entity alignment, citation consistency, and answer-ready summary blocks made the brand and its services less ambiguous across search surfaces, without adding any claim the cited page couldn't support.
Months 4-6 and 7: Digital PR and link recovery
Authority work was deliberately slow: lost-link recovery, unlinked-mention prioritization, and relevant citation cleanup, with a quality threshold before any placement. Referring domains rose from 55 in month 4 to 70 by month 7, gradual, within plausible monthly caps, no unnatural spikes.
Results

At the start (month 1): 42,403 impressions, 2,375 clicks, 5.6% CTR, average position 21.07, 142 conversions on a modeled $92,300.

By month 12: 153,902 impressions, 10,465 clicks, 6.8% CTR, average position 4.0, 728 conversions on a modeled $473,200. The CTR climb from 5.6% to 6.8% is the quality tell, clicks grew faster than impressions because the average position improvement put us into ranges where clicks are easier to earn, and because the rewritten pages matched query intent more closely.
Both visuals above are masked illustrative views, not verified Google exports. Per the evidence policy, domains are blurred and the figures are internally coherent synthetic metrics for scenario modeling. Do not read them as live Search Console screenshots.
The compounding curve
- Impressions roughly tripled (42,403 → 153,902), driven by more queries surfacing the site as relevance signals strengthened.
- Conversions grew 5.1x (142 → 728), faster than clicks (4.4x), because the traffic skewed more commercial and transactional over time.
- Domain Rating moved 17 → 29 and referring domains 41 → 96. Authority supported the gains; it did not cause the early ranking movement, which came from technical and intent work.
Keyword Movement

The wins clustered on the consolidated money page and the support guide. The regressions are worth more attention than the wins, so I've kept them in the table rather than hiding them.
| Keyword | Volume | Intent | Mapped page | Before | After | Category |
|---|---|---|---|---|---|---|
| plumber services | 1000 | commercial | /services/plumber | 37 | 1 | winner |
| plumber cost | 1000 | commercial | /services/plumber | 20 | 1 | winner |
| plumber repair | 480 | transactional | /services/plumber | 27 | 1 | winner |
| plumber guide | 1300 | informational | /resources/plumber-guide | 50 | 1 | winner |
| plumber pricing | 1900 | commercial | /services/plumber | 59 | 8 | winner |
| plumber near me | 880 | local | /[city-masked]/plumber | 50 | 10 | winner |
| best plumber | 320 | commercial | /services/plumber | 26 | 13 | winner |
| local plumber | 6600 | local | /[city-masked]/plumber | 75 | 35 | winner |
| plumber appointment | 480 | transactional | /services/plumber | 74 | 35 | winner |
| plumber reviews | 1000 | commercial | /services/plumber | 44 | 21 | volatile |
| plumber specialist | 1000 | commercial | /services/plumber | 78 | 27 | volatile |
| plumber consultation | 1900 | transactional | /services/plumber | 78 | 65 | winner |
| emergency plumber | 720 | transactional | /services/plumber | 64 | 55 | winner |
| plumber quote | 720 | transactional | /services/plumber | 36 | 38 | stable |
| plumber company | 210 | commercial | /services/plumber | 43 | 50 | decliner |
| plumber service area | 590 | local | /[city-masked]/plumber | 77 | 93 | decliner |
Which intents won and why
The commercial money-page terms won hardest. plumber cost, plumber pricing, plumber services and plumber repair all reached positions 1-8 because consolidation concentrated the relevance signal onto one page instead of splitting it. That is the direct payoff of the month-5 pivot.
The big local prize was local plumber at 6,600 volume: 75 to 35. Real progress, not page-one yet, high-volume local terms in an established competitive market move slowly, and our authority growth was capped on purpose to stay clean.
Which regressed, honestly
Two terms went backwards. plumber company slipped 43 to 50 and plumber service area dropped 77 to 93. The pattern is consistent: when we consolidated the money page around dominant cost/pricing/service intents, we deprioritized the weaker company framing, and that page lost the little relevance it had for that specific query. plumber service area regressed because the local page was being re-pointed toward the higher-value local plumber and near me intents during the pruning phase, and the thin service-area angle lost ground in the reshuffle. Both were acceptable trades, low volume relative to what we gained, and neither converts as well as the terms we reinforced. plumber quote stayed effectively flat (36 → 38), which I read as SERP noise rather than a real move.
Business Impact
This is a leadgen site, so the only results that matter are leads and their modeled value. Conversions went from 142 to 728 per month, a 5.1x increase, while sessions went from 2,345 to 10,208. Conversion rate held roughly steady across the year (around 6% of sessions converting), which tells me the extra traffic was the right kind of traffic. If we had chased informational volume, the conversion rate would have diluted; it didn't.
Modeled lead value rose from $92,300 to $473,200 a month. To be precise about what that is: conversions multiplied by an average lead value, not invoiced revenue and not adjusted for close rate. The honest version is that we drove a 5x increase in qualified lead volume, and the dollar figure is a directional model on top of that.
The mechanism behind the lead growth is the intent skew. The pages that reached the top of the SERP, cost, pricing, services, repair, are mid-to-bottom-funnel commercial and transactional queries. Someone searching plumber cost or plumber repair is closer to hiring than someone searching a how-to. Ranking those at 1-8 instead of 20-60 is what turned impression growth into lead growth rather than just traffic growth.
Limitations
Honesty section, because the smooth-looking curve has rough spots.
- Month 7 dipped. Clicks fell from 6,103 to 5,980 and impressions from 98,428 to 94,914 between months 6 and 7, even though average position kept improving. I attribute this to SERP volatility and seasonality, not a campaign failure, average position improved through the dip, which is the signal that the underlying work held while query-level demand fluctuated.
- Month 10 was soft. Impressions dropped from 126,542 to 119,395 and clicks from 8,225 to 7,880 versus month 9. Conversions barely moved (546 → 550). This coincided with the period where Domain Rating plateaued at 26 for two months, authority growth stalled briefly, and the click curve flattened with it before resuming in month 11.
- Revenue is modeled, not booked. No CRM close-rate data, so the dollar figures are conversions × average lead value. Treat them as directional.
- Average position is a blended, volatile metric. Single-month moves include SERP noise; the trend is meaningful, individual months less so.
- Two keywords regressed as a deliberate trade, documented above. We did not recover plumber company or plumber service area because reinforcing them would have re-introduced the cannibalization we'd just removed.
- Competitive ceiling on local terms. local plumber reached 35, not page one. In an established market with capped, clean link-building, that is the realistic pace.
Causal Explanation
Here is the explicit sequence of what caused what, because the order is the whole story.
Step 1, Indexation cleanup stabilized average position. Fixing canonicals, redirects and template duplication stopped the canonical picture from shifting, so rankings stopped wobbling on crawl noise. This is why months 1-3 show steady, unspectacular position gains (21.07 → 17.69): not flashy, but the foundation that made later signals legible.
Step 2, Intent alignment concentrated relevance. Rewriting the money page around dominant commercial sub-intents, instead of every term at once, let single pages rank decisively. The consolidation (month 5) is the inflection: plumber cost, plumber pricing, plumber services, plumber repair all moved into the top 8 because their relevance signal stopped being split across competing pages.
Step 3, Ranking position improved CTR. Moving from average position 21 to 4 put listings into ranges where users actually click. CTR rose 5.6% → 6.8%, so each impression worked harder.
Step 4, Qualified clicks converted. Because the winning terms were commercial and transactional, the extra clicks were buyers, not researchers. Conversion rate held near 6% even as volume 4x'd, which is how 142 conversions became 728.
Step 5, Authority reinforced, didn't initiate. DR 17 → 29 and referring domains 41 → 96 supported the higher-difficulty terms over time, but the early movement came from technical and content work. Authority was the slow tailwind, not the engine, which is exactly why the month-10 DR plateau coincided with a soft traffic month.
Key Takeaways
- Fix indexation before you write a word. With limited content capacity, spending it on a site with canonical churn wastes both the content and your ability to read the results.
- Consolidation beats production when intent is colliding. The single best decision was stopping content in month 5 and merging instead. Four terms reached the top 8 because of it. More pages would have made it worse.
- Pick which intents you'll sacrifice. plumber company and plumber service area regressed on purpose. Knowing which low-value terms you're willing to lose is part of the consolidation decision, not an accident.
- Cap your link velocity even when you want faster results. The clean, slow authority curve is why nothing got penalized. The month-10 plateau was annoying but honest.
- Report leads, not traffic. A 4.4x click gain is fine; the 5.1x conversion gain is the number that pays the invoice. Always tie the work back to the lead.