When we took over reporting, the clinic's site earned 74 clicks and 2 conversions in a month from 9,263 impressions. The traffic problem was easy to see. The harder problem was that three separate URLs were bidding against each other for the same commercial intent, so nothing the client published could compound. Three months later the same account showed 271 clicks, 239 sessions and 8 booked consultations, with average position down from 25.5 to 11. The interesting part of this engagement is not the growth curve; it is which page we deleted, which keyword we abandoned, and which ranking we knowingly sacrificed to get there.
Executive Summary
Context
The client operates a single-location anti-aging and longevity practice in a competitive metropolitan market. Revenue depends on consultations booked through the site, so the entire organic program is judged on booked appointments rather than sessions. Before our engagement, average positions hovered around 25, non-branded traffic arrived in unpredictable bursts, and topical coverage was thin: a handful of service descriptions, no real explanatory content, and no structure connecting the two.
Three constraints shaped every decision. First, the local competitive set includes clinics with far larger link profiles and long-standing review volume, so head local terms were never going to be won on content alone in a quarter. Second, content production was capped: the client could support a small number of reviewed, clinically accurate pieces per month, and medical claims required approval, which slows publishing. Third, nothing in the program could rest on claims the site could not evidence, which rules out the comparison and superlative language competitors use freely.
Authority was modest and stayed modest: domain rating 18 at the start, 20 by month 3, with referring domains moving from 25 to 32 and total backlinks from 121 to 154. That was deliberate. We were not going to explain a ranking change with a link spike that never happened.
The Challenge
The audit in month 1 produced three findings that reordered our plan.
Intent was split across three URLs. The commercial service page, a separate consultation page and a lightly differentiated location page were all returning for overlapping commercial queries. Google alternated between them, which is why the same query would show at 31 one week and drop out the next. Nothing was ranking badly because the content was poor; it was ranking badly because the site was giving three answers to one question.
Crawl budget was going to pages nobody should see. Template-level duplication generated near-identical URLs from filter and pagination parameters, and internal links pointed at redirect chains and a set of 4xx endpoints. The indexed-page ratio was poor enough that new content had no reliable path into the index, so publishing more before fixing this would have been wasted spend.
There was no informational layer at all. Every page on the site asked for a booking. Nothing explained what a hormone panel measures, how treatment plans are sequenced, or what drives cost differences. For a category where prospective patients research for weeks, that absence had two effects: no non-branded top-of-funnel traffic, and no contextual internal links to give the money page topical support.
The commercial reality behind those findings: 2 conversions a month, and no mechanism by which more content would have changed that. Fixing the plumbing and the architecture had to come before scaling anything.
Methodology
Month 1: make the site indexable, then decide what deserves to rank
Our first sprint was unglamorous. We ran crawl and indexation triage, corrected canonicals that pointed at parameterized duplicates, collapsed redirect chains into single hops, and fixed the template that was generating the duplication in the first place. Renderability and Core Web Vitals checks came with it, plus a status-code sweep on internal links so equity stopped leaking into dead ends. We also validated existing schema, which was declaring conflicting entity information across templates.
Parallel to the technical pass, we mapped the SERP for every tracked query and assigned exactly one URL per intent. That mapping is what exposed the cannibalization, and it produced the decision that defines this case: the commercial cluster would be served by one page, the local cluster by the city page, and the informational cluster by a resource library that did not yet exist.
We also set claim boundaries before writing anything. Working from pages the client had already approved, our editorial reviewers extracted the tone, the permitted claim language, and the hard limits on outcome statements, then built a pre-publication checklist. In a medical category this is not decoration: it is what allows a small team to publish quickly without a compliance review becoming a bottleneck on every draft.
Months 1 to 3: an informational library built in six clusters, not fifteen one-off posts
The content program is the engine of this case, so it is worth being precise about its shape. We published 15 articles organized into 6 topic clusters: hormone and endocrine health, skin and aesthetic rejuvenation, metabolic and weight management, IV and nutrient therapy, longevity diagnostics and lab panels, and the cost, financing and insurance questions that dominate pre-booking research. Five pieces landed in month 1, four more in month 2, six in month 3.
Fifteen articles is not a large library. It worked because every piece was assigned to a cluster with a defined hub, and every piece linked into the consolidated service page with anchor text describing the service rather than the article. That gave us two things at once: coverage of the questions patients actually type (the site ended the quarter ranking for 165 informational keywords), and a growing set of contextually relevant internal links arriving at one commercial destination instead of being split three ways. Our internal topical authority index tracked that consolidation of coverage: 27 at the start, 36 at month 2, 45 at month 3.
Briefs for the money page itself were rewritten from the SERP up. Comparison sections, a fee-structure explanation, credential and reviewer detail, and an FAQ block replaced the previous marketing summary, because the queries we were targeting were research queries wearing commercial clothes.
Month 3: consolidation, pruning, and two authority moves
The architecture sprint executed the mapping from month 1. Duplicate-intent pages were merged into the surviving service page and redirected; orphaned and thin pages that existed only to hold a keyword were pruned; the path from any cluster article to the booking form was shortened to two clicks. Anchor distribution was rebalanced so the service page was not receiving fifteen identical anchors.
Two smaller workstreams ran on top. We cleaned Organization and Service markup so the practice, its services and its named clinical reviewers resolved as one consistent entity, checked citation consistency across directories, and added short answer-ready summary blocks to the cluster hubs, written to be quotable without asserting anything the page does not evidence. Separately, we recovered links that had been lost to page moves, cleaned up inaccurate citations, and pitched a small number of genuinely relevant industry resources. That accounts for the 7 additional referring domains, and nothing more dramatic: we declined placements that did not pass our quality threshold rather than manufacture a link curve.
Timeline
Phase one: foundations before publishing
Month 1 delivered no ranking story worth reporting, and we said so at the time. The work was indexation triage, canonical and redirect cleanup, the template duplication fix, and the intent map. The only content shipped was the first five cluster articles, deliberately weighted toward diagnostics and hormone health because those clusters had the clearest question sets and the least reputational risk. Average position was still deep in the twenties at the end of the month.
Phase two: coverage starts registering
Through month 2, the informational library expanded and the first internal linking pass went live. Impressions grew because the site began appearing for question queries it had never touched, and average position improved as the cleaned templates let the priority URLs be crawled consistently. CTR moved from 0.8 percent to 1.0 percent, which is a small number that mattered: it confirmed that improved positions were reaching ranges where people actually click, rather than the site simply appearing more often for irrelevant terms.
The pivot: stop producing breadth, reinforce what converts
Our original plan for month 3 was more articles. The data argued against it. Query-level review showed the newest thin posts accumulating impressions with almost no clicks, while the cluster hubs that had been expanded with comparison tables and fee explanations were pulling both clicks and assisted conversions. At the same time, the tracked superlative comparison query was sliding, and the SERP for it had filled with third-party roundup pages the clinic cannot appear in.
So we changed the allocation. Part of the month-3 publishing budget went into consolidation and pruning instead: merging duplicate-intent pages, retiring pages that existed only as keyword holders, and deepening existing hubs rather than starting new ones. We also stopped writing toward the superlative comparison query entirely and moved that effort to cost, affordability and reviews intents, where a first-party page can legitimately be the best answer.
Phase three: consolidation lands
The remaining month-3 work was the architecture merge, the entity and schema cleanup, and the link recovery pass. This is the month where the ranking distribution changed shape: instead of a dozen queries clustered in the thirties, the commercial set spread across positions 2 to 17, and the booking flow started receiving traffic from queries that indicate purchase readiness rather than curiosity.
Results
Both Search Console captures use one account and an unchanged non-brand filter.

Month 1 baseline: 9,263 impressions, 74 clicks, 0.8 percent CTR, average position 25.5. Sessions came in at 68 and conversions at 2. The shape of that data is the shape of cannibalization: broad impression coverage, almost no clicks, and positions averaging deep on page three because Google kept rotating between competing URLs.

Month 3: 18,035 impressions, 271 clicks, 1.5 percent CTR, average position 11, with 239 sessions and 8 conversions. Impressions roughly doubled, but clicks grew 3.7x, which is the number we care about. Click growth outpacing impression growth is the signature of positions improving inside existing coverage rather than the site simply casting a wider net.
Both views come from an anonymized account, with identifying details removed and figures representative of what we tracked for this practice.
Supporting movement over the same window: domain rating 18 to 20, referring domains 25 to 32, total backlinks 121 to 154. We report those to make a point about attribution. A 2-point authority change does not explain a 14-position average improvement. The architecture and content work does.
The metric that did not behave
Sessions (239) sit below clicks (271) in month 3, and the gap widened as volume grew. Part of that is ordinary measurement difference between search-side clicks and analytics sessions, part of it is mobile users bouncing before the tag fires on slower connections. We flagged it rather than reconciling it into a cleaner number, because the ratio was consistent enough month to month that it did not change any decision.
Keyword Movement

The tracked set is presented with the niche term masked. Volumes, intents and positions are the real tracked figures.
| Query structure | Intent | Volume | Before | After | Read |
|---|---|---|---|---|---|
| best ••• | Commercial | 1,300 | 31 | 2 | Consolidated page absorbed all competing signals |
| ••• near me | Local | 1,900 | 30 | 31 | Flat; local pack governs this result |
| top ••• | Commercial | 880 | 36 | 52 | Deprioritized; SERP taken by third-party roundups |
| local ••• | Local | 720 | 38 | 10 | City page freed from cannibalization |
| ••• reviews | Commercial | 590 | 28 | 6 | Credential and reviewer blocks added |
| ••• services | Commercial | 480 | 34 | 11 | Service taxonomy rewritten on one URL |
| ••• cost | Commercial | 390 | 34 | 6 | Fee-structure section plus cost cluster support |
| affordable ••• | Commercial | 390 | 37 | 9 | Same cluster, different price framing |
| ••• consultation | Transactional | 320 | 37 | 55 | Page merged and redirected; ranking sacrificed |
| ••• appointment | Transactional | 260 | 36 | 10 | Volatile; snapshot-dependent |
| ••• fees | Commercial | 260 | 34 | 17 | Volatile, still stabilizing |
| ••• specialist | Commercial | 210 | 31 | 13 | Entity and reviewer alignment |
| ••• office | Commercial | 170 | 36 | 14 | Improved with the consolidated page |
| ••• near me open now | Local | 140 | 29 | 6 | Hours and availability made explicit |
| ••• experts | Commercial | 140 | 25 | 6 | Best starting position, converted to top-10 |
| ••• guide | Informational | 110 | 18 | 10 | Cluster hub expanded with depth |

The third-party visibility view above tracks the same period and shows the estimated organic traffic curve climbing alongside the tracked positions, which is the independent sanity check on our own reporting.
Reading the pattern
Every commercial query mapped to the consolidated page improved, most of them by twenty positions or more. That is not fifteen separate wins; it is one structural fix expressing itself across a cluster. The strongest movers share a trait: they are price and evidence questions (cost, affordability, reviews, experts), and those are exactly the intents our cost cluster and diagnostics cluster were built to support with internal links.
The two regressions are honest ones. The transactional consultation query dropped from 37 to 55 because we retired its dedicated page. We accepted that: the redirected traffic lands on a page that now ranks 2 for the highest-volume commercial term, and the transactional variant of the same intent recovered to position 10 on its own. The superlative comparison query fell from 36 to 52 because we stopped working on it after the SERP shifted to aggregator content; that regression is a resourcing decision, not a ranking failure we failed to notice.
The flat head local term deserves its own note. At 1,900 monthly searches it is the most valuable query in the set, and it did not move (30 to 31). Results for it are dominated by the map pack, where proximity, review volume and profile completeness decide placement. Two longer local variants moved sharply (38 to 10, and 29 to 6) because those SERPs still reward organic pages. Closing the head term requires review-generation and profile work outside this quarter's scope.
Business Impact
Booked consultations moved from 2 to 8 per month, and modeled value from 760 to 3,040 using the practice's average new-patient value. Those are small absolute numbers and we present them as such: at eight conversions, a good week and a bad week look very different, so the direction matters more than the precision.
The composition of the traffic matters more than the count. Clicks growing 3.7x while impressions roughly doubled means the added visitors came from higher positions on queries with commercial or local intent, not from a long tail of loosely related impressions. Someone searching for the cost or the fee structure of longevity treatment is further along than someone browsing; the pages that now rank 6 and 9 for those framings are receiving exactly that visitor, one click from a booking form.
The informational library does two jobs for a local practice like this. The visible job is capture: 165 informational keywords bringing people who are researching hormone panels, treatment sequencing or IV therapy weeks before they book. Those visitors rarely convert on first touch, and we do not pretend otherwise, but they return, they read the fee page, and they arrive at the booking form already briefed. The less visible job is structural: that same library is what supplies the internal link equity and topical context that lifted the commercial page. The library created the contextual support; the commercial rankings followed.
That distinction is why we push clinics toward content rather than more ad spend. Paid placement stops the day the card stops. A library of 15 pieces across 6 clusters, correctly linked, keeps returning traffic each month and keeps strengthening the pages that convert, and the compounding is real: the topical authority index moved 27 to 36 to 45 in a single quarter, and each increment made the next article easier to rank.
One additional upside remains plausible but unmeasured. When people ask an AI assistant which clinic to consider or what a treatment costs, those systems assemble answers from clearly structured, well-sourced pages, and they favour sources whose claims are attributable. The answer-ready summary blocks on our cluster hubs, the cleaned Organization and Service markup, and the named clinical reviewers all raise the chance this practice is the source that gets quoted. The groundwork is visible; citation frequency was not tracked, so no citation outcome is claimed.
Limitations
Three months is one observation window, not a trend. The consolidation landed late in month 3, so the commercial positions reported here have had weeks, not quarters, to settle. Two queries in the set are already flagged volatile: the transactional appointment term (36 to 10) and the fee term (34 to 17) both moved several positions between weekly checks, and the end-of-period figure is a snapshot on a specific day rather than a stable plateau.
Revenue here is modeled, not reconciled. We multiply booked consultations by the practice's stated average new-patient value; we do not have CRM outcome data, so no show-rate, no close-rate and no treatment-plan value is reflected. Real collected revenue could sit meaningfully above or below the figure shown, in either direction.
Attribution across the workstreams is partly inferential. Technical fixes, content, internal linking, entity cleanup and a small number of new links all ran inside the same quarter, and we cannot isolate each contribution. Our confidence that architecture and content did the heavy lifting rests on the timing (the commercial cluster moved in the month consolidation shipped) and on the size of the authority change (2 DR points, 7 referring domains) being too small to account for it. That is a reasoned attribution, not a controlled test.
Seasonality is unmeasured. Aesthetic and longevity demand fluctuates through the year, and with a single quarter of data we have no prior-year baseline to separate campaign effect from seasonal lift. Some portion of the impression growth may reflect category demand rather than our work.
Two questions remain open. The head local term is still unaddressed at position 31, and the organic program alone will not fix it. The superlative comparison query is worse than when we started; we chose to abandon it, and if the client wants that visibility it needs a different tactic (placement within third-party roundups) rather than an on-site one. Finally, the click-to-session gap noted earlier remains unreconciled, which puts a small margin of uncertainty on every session-based figure.
Causal Explanation
Here is the mechanism in the order it actually operated.
- Indexation cleanup made everything else possible. Fixing template duplication, canonicals and redirect chains stopped crawl budget draining into parameterized URLs and dead links. Without that, articles published in month 1 would have entered the index unpredictably and no internal linking scheme would have transmitted reliably.
- Intent mapping revealed that the ranking problem was an architecture problem. Three URLs answering one commercial question produced rotation, which produced average positions in the low thirties with no stability, which produced 0.8 percent CTR.
- The informational library created the authority the money page needed. Fifteen articles across six clusters (hormone health, skin rejuvenation, metabolic and weight management, IV and nutrient therapy, longevity diagnostics, cost and financing) gave the site coverage of 165 informational keywords and moved the topical authority index from 27 to 45. Coverage in defined clusters, rather than scattered posts, is what let internal links carry topical meaning instead of just PageRank.
- Consolidation concentrated that authority on one destination. Merging the competing URLs and redirecting them meant every cluster link, every anchor, and every historical signal pointed at a single page. That page went from 31 to 2 on the highest-volume commercial term and into the top 10 on cost, affordability, reviews and expertise framings.
- Stable, higher positions changed click behaviour. CTR nearly doubled (0.8 to 1.5 percent) because the page was now appearing in positions where users click, on queries where the page genuinely answered the question.
- Qualified clicks converted. Price-aware and location-aware visitors landing two clicks from a booking form produced 8 consultations against a baseline of 2.
The pivot fits inside this chain rather than sitting beside it. Once we could see that new thin posts were adding impressions without clicks while deepened hubs were adding both, continuing to publish breadth would have diluted the internal link graph we were trying to concentrate. Cutting production and spending the capacity on consolidation and pruning strengthened the same mechanism instead of adding a competing one.
One further effect compounds beyond this quarter. A deep, clearly structured library changes how machines summarize the practice as much as how users find it. Cleaned entity markup, consistent citations, named reviewers and short attributable answer blocks give both search features and AI assistants an unambiguous source to draw from when someone asks what a treatment involves or what it costs. We treat that as improved odds of being the cited source, built on work we can point to, not as a metric we can report.
Key Takeaways
- Diagnose cannibalization before commissioning content. This site did not need more pages to rank; it needed fewer pages competing. Fifteen articles worked because they all fed one destination.
- Be willing to lose a ranking on purpose. The transactional query fell from 37 to 55 when we retired its page. Judged on that keyword alone the decision looks bad; judged on the conversion line (2 to 8) it was correct. Report both.
- Clusters beat volume when production is capped. Six defined clusters with genuine depth moved the authority index from 27 to 45. The same fifteen articles spread across fifteen unrelated topics would not have supported the money page at all.
- Some queries are not organic problems. The 1,900-volume head local term stayed flat because the map pack decides it. Naming that early prevents months of misdirected content effort.
- Do not let a link curve tell a story the links cannot support. Two DR points and seven referring domains in a quarter is what honest outreach at a quality threshold produces, and it is not the explanation for a 14-position average improvement.