Unblockers.net - Technical SEO Audit

Version 1.0 - prepared by Online Optimisers
Domain: unblockers.net Date: 24 April 2026 Pages crawled: 308 of 649 in sitemap CMS: WordPress + Avada + Yoast
4.9/10
Overall Technical SEO Score
The site is technically functional but losing 85% of its indexation budget on duplicate location pages. Reversible inside 30 days with focused work.

Hero finding: you are invisible on 96% of your "Areas Covered" pages

Unblockers runs 511 location pages across three services (drain-repair, cctv-drain-surveys, drain-unblocking). Google has indexed just 18 of them.

511Location pages in sitemap
18Actually indexed by Google
96%Deindexed as thin/duplicate
99.1%Median text similarity on CCTV pages

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):

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.

Scorecard

CategoryScoreNotes
Indexation & Duplicate Content2/1097 of 649 URLs indexed (85% deindexed). 511 location pages → 18 indexed.
Core Web Vitals (mobile)4/10Median perf score 50. Home LCP 11.1s. 1 page CLS 0.33. Fails field thresholds.
Core Web Vitals (desktop)8/10Median perf score 89. LCP <2s on most pages. Passing.
Schema Markup4/10Good 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/10Yoast-driven, mostly clean. 9 pages share homepage title. 6 pages missing H1, 5 have multiple H1s.
NAP Consistency3/10216 pages carry 2 different phone numbers. 0 pages match the GMB number. Hero fix.
Image Optimisation (alt text)3/102,979 of 4,894 images missing alt (61%). Mostly Avada theme decorative.
Crawlability & Redirects8/10http→https, www→non-www, no-trailing-slash redirects all work. 404s handled. robots.txt clean.
Content Depth (location pages)4/10Median 2,214 words but near-identical text. Quantity ≠ quality.
Internal Site Structure6/10Three parallel service-location page trees. Should collapse to one per-city hub.

Top 10 prioritised fixes

1

Consolidate 511 location pages into one /locations/{city}/ hub

Impact: High Effort: Medium

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.

2

Fix phone number inconsistency across site

Impact: High Effort: Low

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.

3

Ship real LocalBusiness/Plumber schema on every location page

Impact: High Effort: Medium

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.

4

Improve mobile CWV: home LCP 11.1s, /cctv LCP 6.3s, /drain-unblocking/leeds CLS 0.33

Impact: High Effort: Medium

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.

5

Add alt text to 2,979 images (61% missing)

Impact: Medium Effort: Medium

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.

6

Kill deindexed thin location pages or rewrite with unique content

Impact: High Effort: High

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.

7

Pick canonical host (non-www https) and enforce

Impact: Low Effort: Low

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.

8

Fix 9 pages sharing the homepage title tag

Impact: Medium Effort: Low

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.

9

Consolidate 85 /faq-items/ pages into a single structured FAQ page

Impact: Medium Effort: Low

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.

10

Standardise on-site NAP block (name + address + phone) on every page

Impact: Medium Effort: Low

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.

Core Web Vitals (Lighthouse via DataForSEO)

Tested: home, 3 service pages, 3 location pages, 1 blog post. Mobile + desktop.

PageDevicePerfLCPCLSTBTTTFB
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
Mobile is the problem. 6 of 7 mobile tests fail LCP (>4s). Desktop is mostly fine. This is a hosting + asset optimisation issue - the server responds fast (TTFB 390-550ms) so the bottleneck is render-blocking resources and large images. Avada theme + PageSpeed plugin + image preload fixes will move mobile scores above 70.

Schema markup

Schema typePages with itStatus
OrganizationPresent site-wideOK
BreadcrumbListPresent site-wideOK
WebSite + SearchActionPresent site-wideOK
Article33 pages (blog posts)OK
LocalBusiness / Plumber1 page only - critical gap on 169 location pagesGap
Service1 page onlyGap
FAQPage0 pages - missing on 85 FAQ URLsGap
Review / AggregateRating13 pages (Rating nodes inside Article). No site-wide AggregateRating from Trustpilot 4.9/507Partial
HowTo0 pages - missed opportunity on 5 /how-to/ postsPartial

NAP (Name/Address/Phone) consistency

We extracted every mention of the three known Unblockers phone numbers across all 308 crawled pages.

Phone numberRolePages mentioning itTotal occurrences
0808 303 0050Site header216 / 3082685
0808 303 0636Footer + Trustpilot308 / 3081255
+44 113 868 9657Google Business Profile0 / 3080
Entity resolution risk: 216 of 308 pages display two different phone numbers simultaneously (header + footer). The GMB number appears on zero pages. To Google and to AI answer engines, these look like three businesses. Pick one number, enforce it site-wide, update GMB to match. 1-hour technical fix, measurable ranking signal.

On-page summary

CheckResultStatus
Pages with duplicate titles9 pages share the homepage titleFix
Pages with duplicate meta descriptions0OK
Missing H16 pagesFix
Multiple H1 tags5 pagesFix
Thin pages (<300 words)70 pages (mostly FAQ items)Consolidate
Word count (median)2214 wordsOK
Images missing alt text2,979 of 4,894 (61%)Fix
Canonical tagsSelf-referential on all sampled pagesOK
robots.txtClean - only blocks /wp-json/ and REST routeOK
XML sitemap6 sub-sitemaps, 649 URLs, Yoast-managed, recent lastmodOK
HTTP→HTTPS redirects301 to https://unblockers.netOK
www→non-www redirects301 to non-wwwOK
Trailing-slash handling301 appends trailing slashOK
404 handlingReturns 404 (not soft 404)OK

What's in the deliverables folder

FilePurpose
technical-seo/audit-v1.htmlThis document
technical-seo/raw-crawl.jsonAll 308 crawled pages with titles, metas, H1, canonicals, schema types, word counts, image alt coverage, phone-number occurrences
technical-seo/analysis-summary.jsonAggregate metrics (duplication scores, NAP totals, schema coverage)
technical-seo/pagespeed.json14 Lighthouse runs (7 URLs x mobile/desktop)
technical-seo/serp-indexation.jsonDataForSEO SERP responses for site: operator checks
migration/redirect-map-v1.csv649-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).