[ Case study ]
Search consoles showed 39% of the platform's guide pages excluded from the index. The Nuxt app rendered client-side for content routes, so crawlers saw shell pages, and the editorial team had no way to tell which of their 400 guides Google had actually met.
CLIENT a legal-technology content platform — FOCUS Move content routes to server rendering
Representative examplesEvery case study in this library is an illustrative composite of the kind of engagement we deliver — written to show our method and standards, not to name clients.
Search earns this platform's revenue: hundreds of practical legal guides for small-business owners, written and shipped daily by a small editorial team. Discovery is the business model — a guide Google never indexes earns nothing. The codebase is a Nuxt app maintained by one part-time developer. The editorial operation was mature and fast; the rendering architecture underneath it had quietly decided that most of the library stayed invisible.
Search consoles showed 39% of the platform's guide pages excluded from the index. The Nuxt app rendered client-side for content routes, so crawlers saw shell pages, and the editorial team had no way to tell which of their 400 guides Google had actually met.
We proposed moving the guide routes to server rendering with per-route caching, repairing the crawl surface — sitemaps, canonicals, and internal links rebuilt around the real content hierarchy — and verifying progress weekly against the excluded-pages report in Search Console. Rendering would be the only intervention: no redesign, no editorial process change, and the CMS preview flow untouched, because the client's test was index coverage and nothing else. The fix had to be legible: each week's report read as a line item against a decision list.
Just as important is what we ruled out, and why:
Guides switched to SSR with per-route caching, so crawlers receive real content while the editorial preview flow stays untouched.
Sitemaps, canonicals, and internal links were rebuilt around the actual content hierarchy, with the excluded-page report as the acceptance metric.
Each week closed with a coverage review, so regressions were caught while the cause was still findable.
Delivered by the systems pod — engineer over 6 weeks, with working increments reviewed with the client every week.
Obstacle
Once guides rendered on the server, Googlebot's crawl rate spiked and the CMS-backed origin slowed under the burst; editorial previews got sluggish within days.
Handled: Nitro route caching plus Cloudflare bot rules absorbed the spikes, and editorial previews moved to a path that bypasses the cache; the two audiences stopped competing.
Obstacle
Legacy guides carried canonical tags pointing at old URL patterns, so some pages cannibalized each other even after the rendering fix landed.
Handled: We regenerated canonicals from the content hierarchy and requested reindexing in small batches, reading the excluded-pages report weekly so each change had an attributable effect.
The headline: indexed guide pages as a share of submitted urls, over the 8 weeks after rollout — 61% → 94%, read from Search Console coverage report. A second check: organic entrances to guide pages, same period vs prior year at +2.4×.
The content team publishes without wondering whether Google will ever meet the page. The weekly coverage review became a ten-minute ritual the content lead runs alone, and did-it-get-indexed stopped being a question asked across the office. Editors noticed old guides picking up fresh organic entrances and began updating dormant ones — a behavior that never existed while half the library was invisible to search.
The result was read from Search Console coverage report against the pre-engagement baseline over the stated window, with a guardrail check on organic entrances to guide pages, same period vs prior year. Where platform-reported numbers and business outcomes differ, this record says which layer it is quoting.
What we would do differently
We would have run the log-file analysis first — three days of logs would have told us the crawler was starving before we guessed at rendering.
[ Related service ]
[ Related builds ]
9 installs 1 adminSites maintained from one WordPress admin, migration completed over 9 weeks
3 weeks 4 daysMedian landing-page turnaround, measured across the first 12 campaign pages post-handover
[ Next step ]
Next case study