Illustrative case study

A fictional business. The figures are a modelled scenario, not a client result.

● Wattlebird TelehealthTelehealth GP service · MelbourneAsia-Pacific10 months · plan Signal

Untangling 40,000 auto-generated pages so a telehealth service could actually rank

+221%

organic consultations

000090180270WTB-01WTB-02WTB-03WTB-04WTB-05WTB-06WTB-07WTB-08

SCOPE · wattlebird.example

M00/10

Radar at month 0 of 10.

URLs ON SCOPE

40,000

PRUNED

0

VALUABLE INDEXED

2,900

INP p75

410ms

FIXES ON APPROACH

WTB-01 · ONLINE GP HUB

“online gp melbourne” · 4,400/mo

ACQUIRING · lock expected M02

Each square is a crawlable URL that added nothing; each green dot a page with real demand. Amber diamonds are target clusters. Run the sweep to replay the 10-month engagement.

01Contact report

Forty thousand blips. Almost none of them real.

Programmatic 'condition × suburb' pages created a crawl trap of near-duplicates and Google was ignoring most of the site.

Wattlebird Telehealth had generated a page for every condition in every Melbourne suburb: roughly 180 conditions × 220 suburbs. Each one was technically unique and practically identical. Googlebot spent its visits wading through permutations, the index kept a fraction, and the pages patients actually booked from were crawled so rarely that updates took weeks to surface.

URL INVENTORY · MONTH 00

40,000

  • Near-duplicate condition × suburb pages31,400
  • Thin but salvageable, merged into hubs5,700
  • Pages with real search demand2,900

02Diagnosis · NOTAMs

Seven notices to everyone flying this site.

  1. IDX-01CRITIndex

    27,900 URLs in “Crawled — currently not indexed”. Google had seen the pages and decided most were not worth keeping.

  2. CRW-02CRITCrawl

    Log files: 78% of Googlebot requests hit condition × suburb permutations; the 140 pages that convert were crawled every 19 days on average.

  3. DUP-03HIGHContent

    Shingle analysis put 92% of programmatic pages above 85% similarity — the suburb name was the only thing that changed.

  4. CAN-04HIGHCanonicals

    Every permutation self-canonicalised, and ?sort / ?avail parameters spawned an unbounded URL space on top.

  5. MAP-05MEDSitemaps

    One 40,000-URL sitemap, every <lastmod> stamped with the build date, so it carried no freshness signal at all.

  6. INP-06HIGHCore Web Vitals

    INP p75 410 ms on mobile: the booking widget hydrated 1.1 MB of JS on load and a third-party chat blocked the main thread.

  7. SDA-07MEDStructured data

    No MedicalWebPage, reviewer or organisation markup; clinical review existed but was invisible to crawlers.

03Flight plan

Four vectors, flown in sequence.

Built on our Signal plan: fixes shipped as pull requests to the site’s repo, measured against log files and field data rather than a monthly PDF.

VECTOR 01 · HDG 045°

Programmatic SEO

Rebuild the template, not the pages

40,000 permutations collapse into ~180 condition hubs plus state-level service pages. A page only generates if it clears a uniqueness gate: clinician-reviewed copy, real eligibility rules, live consult hours and Medicare notes specific to that condition.

VECTOR 02 · HDG 135°

Index management

Clear the scope, deliberately

31,400 URLs return 410; the 5,700 with links or traffic 301 into their hub. Parameters are blocked at robots level, sitemaps split by page type with honest <lastmod>, and log files watched weekly until crawl share moves.

VECTOR 03 · HDG 225°

Core Web Vitals

Fix interaction before ranking

The booking widget is split and loaded on intent, long tasks are broken up with yielding, chat waits for idle, and the DOM on hub pages shrinks by 60%. INP p75 is tracked from field data, not lab runs.

VECTOR 04 · HDG 315°

Structured data

Make clinical trust machine-readable

MedicalWebPage with reviewedBy and lastReviewed, Physician entities for reviewing GPs, MedicalOrganization and BreadcrumbList — validated in CI on every template change so the markup cannot quietly break.

04Flight log

10 months, one sweep at a time.

  1. M01

    Log-file and crawl baseline; URL inventory classified into prune / merge / keep.

    pruned 2,200INP 405ms
  2. M02

    Uniqueness gate defined; first 2,200 zero-impression URLs return 410.

    pruned 9,800INP 380ms
  3. M03

    Parameter spaces blocked; sitemaps split by type; 7,600 more URLs pruned.

    pruned 18,600INP 330ms
  4. M04

    Condition-hub template v2 live for 40 conditions with clinician review dates.

    pruned 25,100INP 270ms
  5. M05

    Booking widget split and deferred — INP p75 falls below 300 ms.

    pruned 28,900INP 220ms
  6. M06

    301 merge of 5,700 salvageable pages into hubs completes; MedicalWebPage schema ships.

    pruned 30,600INP 190ms
  7. M07

    INP p75 crosses the 200 ms ‘good’ line; crawl share on money pages passes 60%.

    pruned 31,100INP 170ms
  8. M08

    Remaining hubs published; Physician reviewer entities linked site-wide.

    pruned 31,400INP 155ms
  9. M09

    Final prune batch: 31,400 removed. Indexed valuable pages pass 7,500.

    pruned 31,400INP 145ms
  10. M10

    Steady state: weekly log checks, CI schema tests, consultations +221% on baseline.

    pruned 31,400INP 140ms

05Landing report

Clean scope. +221% organic consultations.

Modelled scenario for a fictional business — not a client result. Rankings and traffic are never guaranteed; see our Terms.

Low-value URLs pruned

31,400

Indexed valuable pages

+184%

INP (p75)

410ms → 140ms

Organic sessions

+167%

ORGANIC SESSIONS & CONSULTATIONS · M00–M10

— sessions— consults

0k12.5k25k37.5k50kM00M01M02M03M04M05M06M07M08M09M10+221%

CRAWL SHARE · GOOGLEBOT REQUESTS

Month 0022% money pages
Month 0548% money pages
Month 1086% money pages

Modelled from server logs: share of Googlebot requests landing on pages that can convert (green) versus permutations (coral).

TARGET CLUSTERS · GOOGLE AU POSITION, M00 → M10
CallsignQueryVol/moBeforeAfter
WTB-01online gp melbourne4,400383
WTB-02telehealth medical certificate6,600462
WTB-03online prescription renewal3,600715
WTB-04uti telehealth consult1,900896
WTB-05after hours gp online victoria1,300—8
WTB-06bulk billed telehealth2,900—7
WTB-07mental health care plan online2,400644
WTB-08telehealth doctor melbourne2,900544
WTB-09online dermatology referral880—11
WTB-10telehealth gp near me5,400629

Cleared to land_

Get a plan like this

If your site has more pages than Google wants, Signal finds the noise, clears it, and lets the pages that matter lock on.

← All case studies