Active recovery situation — decline stabilising. Mass product deletion caused 4,118 GSC 404s. Revenue dropped from ~£112K to ~£20K/month. Weekly clicks plateaued at ~447 for 3 weeks (W15–W17); impressions ticking up. Only 55% of submitted URLs are indexed.
| Category | Weight | Score | Weighted | Key Issue |
| Technical SEO | 22% | 68 | 15.0 | Charset iso-8859-1, viewport zoom block, no cache headers |
| Content Quality | 23% | 35 | 8.1 | Thin product/category content, stale blog, no E-E-A-T |
| On-Page SEO | 20% | 45 | 9.0 | Weak titles, 17 duplicate metas, 27 pages missing OG tags |
| Schema | 10% | 8 | 0.8 | Zero structured data on entire site |
| Performance (CWV) | 10% | 82 | 8.2 | Field data all Good. Lab score 45 (platform ceiling) |
| AI Readiness | 10% | 38 | 3.8 | No llms.txt, no FAQ content, uncitable passages |
| Images | 5% | 40 | 2.0 | 27 missing alt, no lazy load, no WebP/AVIF |
Top 5 Critical Issues
| # | Issue | Severity |
| 1 | Zero structured data (JSON-LD) on any page | Critical |
| 2 | Thin/stale content: product descs <50 words, blog dormant 14 months | Critical |
| 3 | 4,118 historic 404s still suppressing authority | Critical |
| 4 | No AI readiness: no llms.txt, no FAQ content | High |
| 5 | Mobile regression: viewport zoom blocked, tiny fonts | High |
Top 5 Quick Wins
| # | Action | Effort |
| 1 | Add Organization + WebSite JSON-LD to homepage | 2 hrs |
| 2 | Create /llms.txt | 2-4 hrs |
| 3 | Remove maximum-scale=1.0 from viewport | 30 min |
| 4 | Resubmit sitemap to GSC (stale since Mar 2025) | 15 min |
| 5 | Fix 17 duplicate meta descriptions | 2-3 hrs |
Clicks (28d)
1,732
-39.1%
Impressions (28d)
271K
-34.7%
Indexed Pages
2,314
55.2% of 4,194
Sitemap Submitted
Mar 2025
Over 1 year stale
Decline has stopped — stabilising. Three-week plateau: W15 443 → W16 450 → W17 447. Impressions nudging up to 71,787. Google has stopped the downward spiral; clear recovery signal not yet confirmed.
Weekly Trend GSC Web Search
| Week | Clicks | Impressions | Trend |
| W06 (Feb) | 877 | 118,358 | |
| W07 (Feb) | 798 | 121,117 | |
| W08 (Feb) | 826 | 118,856 | |
| W09 (Mar) | 756 | 114,131 | |
| W10 (Mar) | 757 | 113,529 | |
| W11 (Mar) | 809 | 110,551 | |
| W12 (Mar) | 679 | 106,769 | |
| W13 (Mar) | 632 | 88,311 | |
| W14 (Apr) | 473 | 70,042 | |
| W15 (Apr) | 443 | 70,477 | |
| W16 (Apr) | 450 ↑ | 70,183 | |
| W17 (Apr) | 447 | 71,787 ↑ | |
Top 20 Queries 28 days
| Query | Clicks | Impr | CTR | Pos |
| bk safetywear | 25 | 162 | 15.4% | 1.0 |
| portwest work trousers | 18 | 2,130 | 0.8% | 5.7 |
| portwest workwear | 16 | 1,216 | 1.3% | 5.1 |
| leo workwear | 15 | 2,641 | 0.6% | 5.8 |
| cotton polo shirts | 13 | 1,022 | 1.3% | 5.5 |
| orn workwear | 10 | 1,334 | 0.7% | 6.2 |
| portwest bib and brace | 8 | 314 | 2.5% | 3.3 |
| bk safety | 7 | 72 | 9.7% | 1.3 |
| traffic management uniform | 7 | 26 | 26.9% | 1.0 |
| bizweld overalls | 6 | 121 | 5.0% | 3.0 |
| portwest safety trainers | 6 | 259 | 2.3% | 8.7 |
| bk workwear | 5 | 36 | 13.9% | 2.2 |
| r238x | 5 | 54 | 9.3% | 2.4 |
| orn work trousers | 4 | 423 | 0.9% | 7.7 |
| portwest flame retardant trousers | 4 | 52 | 7.7% | 5.9 |
| portwest overalls | 4 | 439 | 0.9% | 6.6 |
| r238x gilet | 4 | 32 | 12.5% | 2.3 |
| railway clothing | 4 | 76 | 5.3% | 14.8 |
| workwear exeter | 4 | 69 | 5.8% | 3.1 |
| railway ppe clothing | 4 | 19 | 21.1% | 1.1 |
Top 15 Landing Pages 28 days
| Page | Clicks | Impr | Pos |
| / (homepage) | 68 | 4,658 | 14.6 |
| /leo-workwear.html | 39 | 4,752 | 6.9 |
| /portwest-workwear-trousers.html | 35 | 5,157 | 7.7 |
| /hi-vis-railway-gort-clothing.html | 34 | 2,717 | 8.5 |
| /100-cotton-polo-shirts.html | 27 | 3,434 | 10.1 |
| /hi-vis-superior-exec-vests.html | 26 | 3,717 | 10.5 |
| /workwear-exeter.html | 26 | 1,224 | 20.7 |
| /orn-workwear.html | 25 | 4,588 | 6.5 |
| /portwest-footwear.html | 24 | 4,000 | 8.6 |
| /hi-vis-traffic-management.html | 21 | 461 | 12.4 |
| /portwest-workwear.html | 21 | 3,057 | 11.0 |
| /security-jackets.html | 20 | 2,372 | 8.9 |
| /result-r238x-gilet.html | 19 | 373 | 5.4 |
| /recovery-workwear.html | 17 | 505 | 5.4 |
| /hi-vis-polo-shirts.html | 16 | 4,288 | 9.7 |
GA4 Traffic by Channel 28 days
| Channel | Current | Previous | Change | Bounce Rate |
| Organic Search | 2,809 | 3,725 | -24.6% | 44.8% |
| Cross-network (PMax/DSA) | 1,435 | 1,082 | +32.6% | 35.9% |
| Paid Shopping | 290 | 590 | -50.8% | 40.7% |
| Paid Search | 72 | 88 | -18.2% | 58.3% |
| Referral | 83 | 87 | -4.6% | 34.9% |
Charset
ISO-8859
should be UTF-8
Security Headers
| Header | Value | Status |
| Strict-Transport-Security | max-age=31536000 | Pass |
| X-Content-Type-Options | nosniff | Pass |
| X-Frame-Options | SAMEORIGIN | Pass |
| Content-Security-Policy | frame-ancestors 'self' | Basic |
| Permissions-Policy | Not set | Missing |
| Cache-Control | Not set | Missing |
Technical Issues
| Issue | Severity | Count |
| Viewport zoom blocked (maximum-scale=1) | Critical | 200+ |
| iso-8859-1 charset | High | All |
| No Cache-Control headers | High | All |
| Meta tags in <body> | Medium | 86 |
| No Permissions-Policy | Low | All |
robots.txt
User-agent: *
Disallow: /admin/
Disallow: /api/
Crawl-delay: 1
Sitemap: https://www.bksafetywear.co.uk/sitemap.xml
Blog Posts
22
last: Feb 2025
Avg Product Desc
<50w
target: 100-200
E-E-A-T Assessment
| Signal | Score | Notes |
| Experience | 3/10 | No first-hand experience content, no case studies |
| Expertise | 4/10 | Some technical blog posts but thin and dated |
| Authoritativeness | 3/10 | No Wikipedia entity, no industry awards, no named experts |
| Trust | 5/10 | Company address/phone present. No reviews, no certs page. |
Content Depth
| Page | Words | Assessment |
| Homepage | ~32 | Marketing copy only. Dual H1. |
| Hi-Vis Clothing | ~40 | One sentence. No standards, no buying guide. |
| Footwear | 0 | Navigation tiles only. Zero body copy. |
| Product (A320 Gloves) | 34 | Far below 100-200 word optimum. |
| FAQ Page | 0 | Empty navigation shell. No Q&A content. |
| Blog (best post) | ~300 | EN ISO 20471 post is genuinely useful. |
| Workwear & PPE Buying Guide | ~2,500 | 7-section guide with EN ISO standards, S-ratings, EN 388/374/407, EN 397/812, FFP classes, FR fabrics. Phosphor icon card TOC. Live — /workwear-buying-guides.html |
Missing content: About Us page now live (30 Apr 2026 — page id 189). Buying guide now live (3 May 2026 —
/workwear-buying-guides.html, 7 sections, ~2,500 words). Still missing: certifications page, FAQ content, case studies, standards compliance guide.
Title Tag Audit
| Page | Current Title | Issues |
| Homepage | Hi Vis Safety Wear, Workwear, Embroidery & Printing | No brand Wasted chars |
| Hi-Vis Clothing | Hi Vis Clothing | Too short No brand |
| Footwear | Footwear | Too short No brand |
| A320 Gloves | Portwest A320 Dexti-Grip Gloves Nitrile Foam | No brand/price |
| Contact | Contact Us | No brand |
Broken External Links (106)
| Type | Count | Status | Action |
| Portwest CloudFront PDFs | 4 | 404 | Replace with current URLs |
| Leo Workwear downloads | 59 | 500 | Replace with current URLs |
| Various external | 32 | 502 | Investigate and fix |
| About Us page | 1 | Live | Built 30 Apr 2026 (page id 189) |
Rich Results Eligible
7 types
none implemented
Zero structured data on the entire site. No JSON-LD, Microdata, or RDFa on any page. Competitors show price, availability, and review stars in SERPs.
Missing Schema Opportunities
| Schema Type | Target Pages | Rich Result | Impact |
| Product | All product pages | Price + availability in SERPs | Critical |
| Organization | Homepage | Knowledge panel | High |
| BreadcrumbList | All pages | Breadcrumb trails in SERPs | High |
| FAQPage | FAQ / buying guides | FAQ rich results | High |
| WebSite + SearchAction | Homepage | Sitelinks search box | Medium |
| LocalBusiness | Contact page | Local knowledge panel | Medium |
| BlogPosting | Blog posts | Article rich results | Medium |
| VideoObject | 19 Vimeo pages | Video thumbnails | Medium |
GEO Dimension Scores
| Dimension | Weight | Score |
| Citability | 25% | 32 |
| Structural Readability | 20% | 38 |
| Multi-Modal Content | 15% | 40 |
| Authority & Brand | 20% | 28 |
| Technical Accessibility | 20% | 55 |
Platform Readiness
| Platform | Score | Limiting Factor |
| Google AI Overviews | 22 | No schema, thin content |
| ChatGPT | 35 | No llms.txt, short passages |
| Perplexity | 40 | Blog partially citable |
| Bing Copilot | 35 | No structured data |
Page-type mismatch on highest-value queries. Google rewards hybrid category+editorial pages (EN ISO guidance, FAQs, buying guides on category pages). BK's category pages are pure grids. The GORT/railway page is the exception that ranks well and should become the template.
Search Intent Alignment
| Query | Dominant Intent | BK Page | Match | Priority |
| hi vis clothing | Transactional + Compliance | /hi-vis-clothing.html | Partial | High |
| safety workwear UK | Brand trust | Homepage | Low | High |
| PPE suppliers UK | B2B evaluation | None | Miss | Medium |
| hi vis vest bulk buy | Volume transactional | None | Miss | High |
| workwear embroidery UK | Service | Login redirect | Critical | Critical |
| railway hi vis GORT | Niche compliance | /hi-vis-railway-gort.html | Strong | Maintain |
Persona Scoring Weakest first
Embroidery Buyer
23/100
No public landing page. Add-a-Logo requires login. No pricing, turnaround, or examples visible to Google.
Procurement Officer
42/100
No trade page, no visible volume pricing, no request-a-quote CTA.
Safety Manager
49/100
No EN ISO class filter, no standards guide page.
Sole Trader
63/100
Products right, but delivery vague, mobile zoom locked.
Rail Contractor
73/100
GORT page exists and ranks. Strongest alignment on site.
Reviews
0
on sampled products
Product Page Signals
| Signal | Status |
| Price (inc/exc VAT) | Good |
| Stock count | Good |
| Size/colour variants | Good |
| Quantity discounts | Good |
| Breadcrumbs | Present |
| Related products | 12 shown |
| EN standards | Present |
| Product schema | Missing |
| Reviews | Empty |
| Description depth | <50 words |
| OG tags | Present |
Missing E-commerce Signals
| Signal | Impact |
| Product schema (price in SERPs) | Critical |
| AggregateRating (review stars) | High |
| Bulk buy / trade landing page | High |
| Public embroidery page | Critical |
| EN ISO class filter | High |
| Product comparison tools | Medium |
| Inline size guide | Low |
Target: 65/100 within 3 months. Addresses both 404 recovery (redirects, sitemap, indexation) and structural gaps (schema, content, AI readiness).
Week 1 Quick wins, highest impact per hour
| # | Action | Effort | Impact | Priority | Status |
| 1 | Remove maximum-scale=1.0 from viewport | 30 min | Fixes 200+ mobile/a11y errors | Critical | |
| 2 | Resubmit sitemap to GSC | 15 min | 55% indexation, stale URLs confusing Google | Critical | Done16 Apr 2026 |
| 3 | Add Organization + WebSite JSON-LD | 2 hrs | Knowledge panel, entity definition | High | |
| 4 | Create /llms.txt | 2-4 hrs | Highest-signal GEO file | High | |
| 5 | Enable CF Polish + Auto Minify | 5 min | Auto WebP, minification | Low | |
Week 2 Schema + on-page fixes
| # | Action | Effort | Impact | Priority | Status |
| 6 | Add Product JSON-LD to all product pages | 4-8 hrs | Rich results: price + availability in SERPs | Critical | |
| 7 | Add BreadcrumbList JSON-LD | 2-4 hrs | Breadcrumb trails in SERPs | High | |
| 8 | Fix 17 duplicate meta descriptions | 2-3 hrs | Unique keyword targeting | High | |
| 9 | Add OG tags to 27 pages | 2-3 hrs | Social sharing / link previews | High | |
Weeks 3-4 Content + new pages
| # | Action | Effort | Impact | Priority | Status |
| 10 | Build public embroidery/printing service page | 1-2 days | New keyword set, persona 23 → 60+ | Critical | |
| 11 | Add editorial content to Hi Vis Clothing page | 4-6 hrs | EN ISO 20471 guidance, FAQ block | High | |
| 12 | Add editorial content to Footwear page | 3-4 hrs | Zero content currently | High | |
| 13 | Rebuild About Us page (currently 404) | 3-4 hrs | E-E-A-T, trust signals | High | Done 30 Apr |
| 13b | Build Workwear & PPE Buying Guide — 7 sections covering EN ISO 20471, EN ISO 20345, EN 388/374/407, EN 397/812, EN 149, EN ISO 11612/11611. Card TOC with Phosphor icons. | 4-6 hrs | Topical authority, long-tail standards queries, AI citation target | High | Done 3 May |
| 14 | Rebuild FAQ page with real Q&A + schema | 1 day | Featured snippets, AI citation | High | |
Month 2-3 Expansion, cleanup, ongoing
| # | Action | Effort | Priority | Status |
| 15 | Create bulk buy / trade landing page | 1 day | High | |
| 16 | Fix 106 broken external links | 4-6 hrs | Medium | |
| 17 | Fix 27 missing alt text images | 1-2 hrs | Medium | |
| 18 | Improve homepage title + fix dual H1 | 30 min | Medium | |
| 19 | Add VideoObject schema to 19 Vimeo pages | 2-4 hrs | Medium | |
| 20 | CF Worker: lazy loading for images | 2-4 hrs | Medium | |
| 21 | Fresh blog content with named authors | Ongoing | Medium | |
| 22 | Improve product descriptions (top 50) | Large | Medium | |
| 23 | Convert "Trusted By" logos to citable text | 1-2 hrs | Low | |
| 24 | Build YouTube presence | Ongoing | Low | |
Score Trajectory
| Milestone | Score | Actions |
| Now | 42 | Baseline |
| After Week 1 | 45 | Viewport, sitemap, Org schema, llms.txt |
| After Week 2 | 52 | + Product schema, BreadcrumbList, metas, OG tags |
| After Month 1 | 59 | + Embroidery page, category editorial, About, FAQ |
| After Month 2 | 63 | + Trade page, broken links, alt text, titles |
| After Month 3 | 65 | + Blog, product descs, lazy loading |
| With 404 recovery | 70 | + Organic authority restoration |
Products Merged
33
pairs → multi-colour listings
Retiring SKUs Archived
33
shells in cat 2254 for Google
Pairs Skipped
3
pre-existing data issues
Improvements Needed
8
swatches, images, slugs
Improvements Needed
| # | Issue | Priority | Details |
| 1 | Colour swatches missing on all 33 products | High | No hex colour values set — customers see plain text dropdowns. H75/H76/H68/H69 already have swatches; fix via PUT with #FFFF00 (Yellow), #FFA500 (Orange), #003087 (Navy). |
| 2 | H148 variant images — 6/14 only | High | Orange variants had no images in original H149. Affected rows show placeholder. Needs DELETE + POST redo with images baked in (product id=17303). |
| 3 | H131 variant images — 7/14 only | High | Yellow/Navy variants had no images in original H132. Same DELETE + POST redo required (product id=17451). |
| 4 | H66 Yellow variants — 4 missing fields | Medium | 7 Yellow variants from retired H67 are missing: thumbnail_image, basket_image, country_of_origin, low_stock_threshold. DELETE + POST redo. |
| 5 | H112 Yellow/Navy variants — same fields missing | Medium | 7 Yellow/Navy variants from retired H112Y likely have same 4 missing fields. Verify and DELETE + POST redo if confirmed. |
| 6 | 16 stale URL slugs contain single colour name | Medium | Slugs like h133-hi-vis-2-tone-orange-polo-shirt are now multi-colour products. Won't break rankings but misleading. Can be fixed via PUT (url_text change = no redirect needed, Bluepark handles old slug). |
| 7 | H37 description may be blank | Medium | During original merge run, first POST attempt hit 429 rate-limit. Recovery re-ran successfully but page_content field should be audited — check the live page and restore from H37 backup if blank. |
| 8 | Cat 2254 shells may appear in related products | Low | Bluepark's related-product algorithm may surface the 33 archived shells (cat 2254). Adding a title prefix like "[Archive]" would push them out of the related widget. |
All 33 Merged Products Base SKU kept its URL · Retiring SKU archived in cat 2254
| # |
Base SKU |
Title |
Retiring SKU |
Colours now available |
| 1 | 318XX | Hi Vis 2 Tone Hooded Zipped Sweatshirt | 318XXY | Orange/Navy Yellow/Navy |
| 2 | 36S | Hi Vis Softshell Jacket | 36SY | Orange Yellow |
| 3 | H22 | Hi Vis Interactive Bodywarmer | H23 | Yellow/Navy Orange/Navy |
| 4 | H26 | Hi Vis Breathable 2 in 1 Bomber Jacket | H27 | Yellow Orange |
| 5 | H28 | Hi Vis Breathable Trousers | H29 | Yellow Orange |
| 6 | H31 | Hi Vis Standard Parka | H32 | Yellow Orange |
| 7 | H33 | Hi Vis 2 Tone Parka | H34 | Yellow/Navy Orange/Navy |
| 8 | H35 | Hi Vis Standard Storm Bomber Jacket | H36 | Yellow Orange |
| 9 | H37 | Hi Vis 2 Tone Bomber Jacket | H38 | Yellow/Navy Orange/Navy |
| 10 | H39 | Reversible Fleece Lined Bodywarmer | H40 | Yellow/Navy Orange/Navy |
| 11 | H41 | Hi Vis Overtrousers | H42 | Yellow Orange |
| 12 | H43 | Hi Vis Fleece Jacket | H44 | Yellow Orange |
| 13 | H45 | Hi Vis Fleece Jacket - Rain Patch | H46 | Yellow/Navy Orange/Navy |
| 14 | H49 | Hi Vis Coverall | H50 | Yellow Orange |
| 15 | H53 | Hi Vis Shorts | H54 | Yellow Orange |
| 16 | H66 | Hi Vis Crew Neck Sweatshirt | H67 | Yellow Orange |
| 17 | H109 | 2 Tone Bodywarmer | H110 | Yellow/Navy Orange/Navy |
| 18 | H112 | Hi Vis 2 Tone Hooded Sweatshirt | H112Y | Orange/Navy Yellow/Navy |
| 19 | H114 | Hi Vis Executive Vest (Yellow base) | H115 | Yellow Yellow/Navy |
| 20 | H116 | Hi Vis Executive Vest (Orange base) | H117 | Orange Orange/Navy |
| 21 | H127 | Hi Vis 2 Tone Overtrousers | H128 | Yellow/Navy Orange/Navy |
| 22 | H129 | Hi-Vis Lite Rainsuit | H130 | Orange Yellow |
| 23 | H131 | Hi-Vis 2 Tone Sweatshirt | H132 | Orange/Navy Yellow/Navy |
| 24 | H133 | Hi-Vis 2 Tone Polo Shirt | H134 | Orange/Navy Yellow/Navy |
| 25 | H135 | Hi-Vis 2 Tone Long Sleeve Polo Shirt | H136 | Orange/Navy Yellow/Navy |
| 26 | H137 | Hi-Vis 2 Tone T-Shirt | H138 | Orange/Navy Yellow/Navy |
| 27 | H139 | Hi-Vis 2 Tone Combat Trousers | H140 | Orange/Navy Yellow/Navy |
| 28 | H141 | Hi Vis 2 Tone Softshell Jacket | H142 | Yellow/Navy Orange/Navy |
| 29 | H144 | Hi Vis 2 Tone Puffer Jacket | H145 | Yellow Orange |
| 30 | H146 | Hi Vis 2 Tone Puffer Bodywarmer | H147 | Yellow Orange |
| 31 | H148 | Hi Vis Puffer Jacket | H149 | Yellow Orange |
| 32 | HVRS1 | Hi Vis 2 Tone Rugby Shirt | HVRS1Y | Orange Yellow/Navy |
| 33 | HVZH1 | Hi Vis Zipped Hoodie | HVZH1Y | Orange Yellow |
Pairs Skipped — Pre-existing Data Issues
| Pair | Product | Reason |
| H58 + H59 | Combat Trousers | H58 has duplicate size label — position 11 is "38R" but should be "48R" (190 units affected). No barcodes on either product. |
| H60 + H61 | Polycotton Trousers | H61 has 16 sizes, H60 only 14 (missing 26R/28R). Grid would be uneven. No barcodes on either. |
| H62 + H63 | Elasticated Trousers | Incompatible size naming — H62 uses W-prefix (W26, W28…), H63 uses bare numbers. H63 also missing W32/W34/W36. |
How the Merge Works
Each merge uses merge-colours.py <BASE> <RETIRING> --live and runs 5 steps:
- DELETE the retiring SKU — frees its variant SKUs
- DELETE the base SKU
- POST a combined product (base SKU, both colour grids, images baked in)
- Delta check — verifies options, variants, stock, SKUs, barcodes
- POST shell — recreates retiring SKU in cat 2254 to preserve its URL for Google
The retiring product must be deleted before the combined POST — if it still exists, Bluepark creates blank-SKU variant slots that PUT cannot fix.