Harrowgate Hosting · Managed WordPress hosting · Manchester
How a Manchester host proved its speed claims by making its own site the fastest in the category
Pass on all Core Web Vitals
6 months · Technical SEO · Manchester
- Core Web Vitals
- Comparison pages
- Structured data
- Internal linking
01The challenge
The cobbler’s children had no shoes.
Harrowgate sold performance hosting but its own site failed Core Web Vitals and its plan pages cannibalised each other.
Every plan page promised sub-second WordPress. Prospects who ran the homepage through a speed test saw a red INP score, and Google saw eleven near-identical plan pages fighting over the same four searches. Rankings for the money terms swung weekly between URLs, so none of them held a top-five position long enough to earn sign-ups.
Baseline · field data, month 0
- LCP
- 3.4s
- INP
- 410ms
- CLS
- 0.21
02Audit · diagnosis
- CRIT
01 Performance
Mobile INP 410ms at p75A chat widget and a 380KB analytics bundle blocked the main thread on every tap. The plan toggle triggered a full re-render of three pricing tables.
- CRIT
02 Architecture
11 plan pages competing for 4 intents“WordPress hosting”, “managed WordPress hosting UK” and “fast WordPress hosting” each had 3–4 URLs trading positions week to week.
- WARN
03 Performance
LCP 3.4s from an unoptimised hero videoA 2.1MB autoplay loop was the LCP element on every plan page; the poster image had no fetch priority.
- WARN
04 Structured data
Conflicting Product markupTwo plugins each emitted Product schema with different prices, so neither was eligible for price snippets.
- WARN
05 Crawl
3,200 faceted parameter URLs indexedData-centre and billing-period filters generated crawlable URLs with near-identical content.
- INFO
06 Internal links
“Click here” anchors to plan pages68% of internal links to commercial pages used generic anchors; the blog linked more to the old plans than the new ones.
- INFO
07 Content
No comparison content at allSearches like “Harrowgate vs Kinsta” were answered by affiliate sites with outdated pricing.
03The strategy
Four cables, one patch panel.
Built on our Signal plan (technical seo). Each tactic plugs into a single measurable signal, so we could see exactly which change moved which number.
- PORT A1
Core Web Vitals
We measured field data per template, not lab scores per page. Every fix was tied to a p75 metric and guarded by a performance budget in CI so a new plugin cannot silently undo it.
- PORT A2
Comparison pages
Six head-to-head pages with dated, reproducible benchmarks and a published test rig. They answer “vs” searches that affiliates used to own, and they link to exactly one plan.
- PORT A3
Structured data
One schema graph: Organization, BreadcrumbList and a Product with Offer per plan. Duplicate plugin output removed so prices are consistent and eligible for rich results.
- PORT A4
Internal linking
An intent ledger maps every keyword cluster to a single canonical URL. Anchors were rewritten to describe the destination, and blog posts now pass authority to plans, not to each other.
04Month by month
6 months, one port at a time.
$ tail -f /var/log/engagement/month-6.log
Internal-linking ledger
- [ok] 01 Descriptive anchors on 410 links
- [ok] 02 Hub pages per use-case
- [ok] 03 Monthly CWV regression budget in CI
- lcp
- 1.8s
- pass
- inp
- 120ms
- pass
- cls
- 0.02
- pass
Use the arrow keys to move between months.
05Results
Pass on all Core Web Vitals.
Pull any unit out of the rack to see the six-month trace and the changes that moved it.
eth0 · p75 field data, CrUX mobile origin
- Third-party chat widget deferred until first interaction — removed 140ms of main-thread work.
- Plan-comparison toggle rewritten without a layout-thrashing re-render.
- Hydration split: pricing tables now ship as static HTML, islands only where clicked.
eth1 · Organic trial and paid sign-ups, indexed to baseline
- Comparison pages carry a plan-matched sign-up block above the fold.
- Faster checkout step (INP 95ms) cut form abandonment on mobile.
- Product schema with offers surfaces price in results, pre-qualifying clicks.
eth2 · Keyword pairs where 2+ URLs swapped rank weekly
- 11 overlapping plan pages consolidated into 4 with 301s and merged copy.
- One canonical target per intent, mapped in an internal-linking ledger.
- Blog posts that out-ranked plan pages repointed with descriptive anchors.
eth3 · Organic sessions, indexed to baseline
- Six head-to-head comparison pages entered the top 5 for their targets.
- FAQ and HowTo-free structured data kept clean — only Product, Organization, Breadcrumb.
- Crawl budget recovered from 3,200 parameter URLs now blocked and de-linked.
Modelled scenario for a fictional business — not a client result. Rankings and traffic are never guaranteed; see our Terms.
Ranking table · Google UK, mobile
M0 → M6| Keyword | Volume / mo | Before | After | Canonical URL |
|---|---|---|---|---|
| managed wordpress hosting uk | 2,900 | 18 | #4 | /managed-wordpress |
| fast wordpress hosting | 1,600 | 27 | #3 | /managed-wordpress |
| wordpress hosting manchester | 390 | 9 | #1 | /data-centre/manchester |
| harrowgate vs kinsta | 210 | — | #1 | /compare/kinsta |
| woocommerce hosting uk | 1,300 | 34 | #6 | /woocommerce |
| best wordpress hosting for agencies | 880 | 41 | #8 | /agencies |
| wp engine alternative uk | 320 | — | #3 | /compare/wp-engine |
| uk wordpress hosting with staging | 260 | 22 | #5 | /managed-wordpress |
Get a plan like this
If your site sells speed, reliability or quality, it should prove it in the field data. Our Signal plan starts with the same audit.