Unblockers runs 511 location pages across three services (drain-repair, cctv-drain-surveys, drain-unblocking). Google has indexed just 18 of them.
Why: we compared 10 sampled location pages pairwise after normalising city-name tokens. On /cctv-drain-surveys/, 28 of 45 pairs are >95% identical (median 99.1%). Google sees these as the same page with a swapped town name and correctly treats them as thin duplicate content. The /drain-repair/ set shows the same pattern (15/45 pairs >95% identical, median 69.8%; slightly better because some have small local variations).
Breakdown (sitemap vs Google-indexed via site: operator):
/drain-repair/: 318 in sitemap → 7 indexed (98% deindexed)/cctv-drain-surveys/: 153 in sitemap → 5 indexed (97% deindexed)/drain-unblocking/: 40 in sitemap → 6 indexed (85% deindexed)Examples tested: /drain-repair/leeds/ /cctv-drain-surveys/sheffield/ /drain-unblocking/bradford/
What we recommend: collapse all three service-city pages into one /locations/<city>/ hub carrying all three services. Pick your 30 priority cities and write them long, local, and unique (800+ words with genuine local proof - customer photos, job notes, landmarks, council info). Redirect the rest to the service pages. Full redirect map in migration/redirect-map-v1.csv.
| Category | Score | Notes |
|---|---|---|
| Indexation & Duplicate Content | 2/10 | 97 of 649 URLs indexed (85% deindexed). 511 location pages → 18 indexed. |
| Core Web Vitals (mobile) | 4/10 | Median perf score 50. Home LCP 11.1s. 1 page CLS 0.33. Fails field thresholds. |
| Core Web Vitals (desktop) | 8/10 | Median perf score 89. LCP <2s on most pages. Passing. |
| Schema Markup | 4/10 | Good site-wide (Organization, BreadcrumbList). Missing LocalBusiness/Plumber/Service on 169 of 170 location pages. No FAQPage schema on FAQ content. |
| On-Page SEO (titles, H1, meta) | 7/10 | Yoast-driven, mostly clean. 9 pages share homepage title. 6 pages missing H1, 5 have multiple H1s. |
| NAP Consistency | 3/10 | 216 pages carry 2 different phone numbers. 0 pages match the GMB number. Hero fix. |
| Image Optimisation (alt text) | 3/10 | 2,979 of 4,894 images missing alt (61%). Mostly Avada theme decorative. |
| Crawlability & Redirects | 8/10 | http→https, www→non-www, no-trailing-slash redirects all work. 404s handled. robots.txt clean. |
| Content Depth (location pages) | 4/10 | Median 2,214 words but near-identical text. Quantity ≠ quality. |
| Internal Site Structure | 6/10 | Three parallel service-location page trees. Should collapse to one per-city hub. |
Merge /drain-repair/, /cctv-drain-surveys/, and /drain-unblocking/ city pages into a single per-city page with all three services. Adds unique content blocks per city (photos, reviews, job gallery, local landmarks).
Reverses 96% deindexation. Recovers crawl budget. Unlocks genuine ranking potential for priority cities.
308/308 pages carry 0808 303 0636 in the footer. 216/308 also display 0808 303 0050 in the header. Zero pages mention the GMB number 0113 868 9657. Pick one, deploy everywhere, update GMB to match.
Entity resolution fix. Direct signal to Google and AI answer engines that the same business = same number = same entity. 1-hour fix.
Only 1 of 170 location pages has LocalBusiness-grade schema. Add per-page Plumber + Service + geo + areaServed + aggregateRating JSON-LD.
Direct ranking signal + AI citation eligibility. Currently invisible to structured data graph.
LCP >4s on 6/7 mobile tests. 1 page has CLS 0.328 (failing). Preload hero image, inline critical CSS, defer non-critical JS, fix layout shift on /drain-unblocking/{city}/.
Mobile Core Web Vitals are a ranking factor. Site currently fails for most pages.
4,894 images total, 2,979 have no alt attribute. Mostly decorative in Avada theme but damages accessibility, image search, and AI multi-modal ingestion.
Image search surfacing + accessibility. Bulk fix via Avada theme settings or a plugin pass.
28/45 sampled CCTV location pages are >95% identical (median 99.1% similarity). Google correctly deindexed them. Plan: 30 priority cities rewritten with 800+ unique words + local proof; rest redirected to service pages.
Directly addresses deindexation. Fewer, stronger pages > 500 thin pages.
Redirects are working (http/www all → https non-www). Keep this. Update GMB, Trustpilot, and citations to match.
Already good — needs verification in every external citation.
9 pages carry the literal homepage title Unblockers™ | National Drain Unblocking, Clearing & Repairs UK. Each needs a unique, query-matching title.
Removes title duplication signal. 30-minute fix.
84 of 85 FAQ pages are single-question thin pages. Consolidate into one /faq/ with FAQPage schema + individual anchors. Redirects mapped in redirect-map-v1.csv.
Reclaims indexation budget. One strong FAQ page outranks 85 thin ones. FAQPage schema = AI citation candidate.
Only the HQ (Station Rd, LS18 5PA) appears site-wide. Add complete NAP block in footer: trading name, full address, one phone, email. Match GMB exactly.
Classic local SEO signal. Compounds with NAP fix above.
Tested: home, 3 service pages, 3 location pages, 1 blog post. Mobile + desktop.
| Page | Device | Perf | LCP | CLS | TBT | TTFB |
|---|---|---|---|---|---|---|
| home | mobile | 47 | 11.1 s | 0.072 | 840 ms | Root document took 550 ms |
| home | desktop | 79 | 2.7 s | 0.032 | 160 ms | Root document took 470 ms |
| service-unblocking | mobile | 50 | 7.2 s | 0.076 | 800 ms | Root document took 460 ms |
| service-unblocking | desktop | 91 | 1.6 s | 0.029 | 130 ms | Root document took 430 ms |
| service-cctv | mobile | 46 | 6.3 s | 0.075 | 1,360 ms | Root document took 420 ms |
| service-cctv | desktop | 84 | 1.3 s | 0.029 | 270 ms | Root document took 420 ms |
| loc-drain-repair-leeds | mobile | 55 | 6.6 s | 0.072 | 670 ms | Root document took 450 ms |
| loc-drain-repair-leeds | desktop | 93 | 1.4 s | 0.049 | 100 ms | Root document took 450 ms |
| loc-cctv-leeds | mobile | 52 | 8.1 s | 0.072 | 730 ms | Root document took 460 ms |
| loc-cctv-leeds | desktop | 89 | 1.8 s | 0.029 | 100 ms | Root document took 440 ms |
| loc-drain-unblocking-leeds | mobile | 43 | 4.2 s | 0.328 | 920 ms | Root document took 490 ms |
| loc-drain-unblocking-leeds | desktop | 86 | 1.6 s | 0.029 | 190 ms | Root document took 450 ms |
| blog | mobile | 71 | 3.1 s | 0.106 | 640 ms | Root document took 400 ms |
| blog | desktop | 91 | 1.7 s | 0.029 | 120 ms | Root document took 390 ms |
| Schema type | Pages with it | Status |
|---|---|---|
| Organization | Present site-wide | OK |
| BreadcrumbList | Present site-wide | OK |
| WebSite + SearchAction | Present site-wide | OK |
| Article | 33 pages (blog posts) | OK |
| LocalBusiness / Plumber | 1 page only - critical gap on 169 location pages | Gap |
| Service | 1 page only | Gap |
| FAQPage | 0 pages - missing on 85 FAQ URLs | Gap |
| Review / AggregateRating | 13 pages (Rating nodes inside Article). No site-wide AggregateRating from Trustpilot 4.9/507 | Partial |
| HowTo | 0 pages - missed opportunity on 5 /how-to/ posts | Partial |
We extracted every mention of the three known Unblockers phone numbers across all 308 crawled pages.
| Phone number | Role | Pages mentioning it | Total occurrences |
|---|---|---|---|
| 0808 303 0050 | Site header | 216 / 308 | 2685 |
| 0808 303 0636 | Footer + Trustpilot | 308 / 308 | 1255 |
| +44 113 868 9657 | Google Business Profile | 0 / 308 | 0 |
| Check | Result | Status |
|---|---|---|
| Pages with duplicate titles | 9 pages share the homepage title | Fix |
| Pages with duplicate meta descriptions | 0 | OK |
| Missing H1 | 6 pages | Fix |
| Multiple H1 tags | 5 pages | Fix |
| Thin pages (<300 words) | 70 pages (mostly FAQ items) | Consolidate |
| Word count (median) | 2214 words | OK |
| Images missing alt text | 2,979 of 4,894 (61%) | Fix |
| Canonical tags | Self-referential on all sampled pages | OK |
| robots.txt | Clean - only blocks /wp-json/ and REST route | OK |
| XML sitemap | 6 sub-sitemaps, 649 URLs, Yoast-managed, recent lastmod | OK |
| HTTP→HTTPS redirects | 301 to https://unblockers.net | OK |
| www→non-www redirects | 301 to non-www | OK |
| Trailing-slash handling | 301 appends trailing slash | OK |
| 404 handling | Returns 404 (not soft 404) | OK |
| File | Purpose |
|---|---|
technical-seo/audit-v1.html | This document |
technical-seo/raw-crawl.json | All 308 crawled pages with titles, metas, H1, canonicals, schema types, word counts, image alt coverage, phone-number occurrences |
technical-seo/analysis-summary.json | Aggregate metrics (duplication scores, NAP totals, schema coverage) |
technical-seo/pagespeed.json | 14 Lighthouse runs (7 URLs x mobile/desktop) |
technical-seo/serp-indexation.json | DataForSEO SERP responses for site: operator checks |
migration/redirect-map-v1.csv | 649-row CSV mapping every existing URL to a target path on the new Astro site. Placeholders where the new structure needs Simon's input (e.g. specific city priority list). |