Two pages to 206, with the doorway-page risk measured before launch
Mobile auto locksmith whose two-page site became 206 pages, with every one of 187 town pages written by hand and the duplication measured.
- Client
- Sonny's Auto Keys
- Trade
- Mobile auto locksmith
- Based
- Rochdale, Greater Manchester
- Live since
- 2026
What the business needed
Sonny cuts, programs and repairs car keys and gets people back into locked vehicles, SERMI certified, within about forty miles of Rochdale. The original site was two pages, home and gallery, with a quote form. It could not rank for a town-level search, and the Business Profile was close to invisible: fewer than fifty searches surfaced it in six months.
The rebuild had one number in the brief: the site had two pages and needed one for every town Sonny would drive to. The risk in that is well known. Two hundred pages that say the same thing with the town name swapped is the doorway-page pattern Google's spam policy describes, so the job was to add the pages without building that.
What was built
206 pages: 187 towns across Greater Manchester, Lancashire, West Yorkshire, Cheshire, Merseyside, Derbyshire, South Yorkshire, North Yorkshire and Staffordshire, nine county hubs, an areas index, a services index and six service pages. One dynamic route serves both towns and counties, and a build-time check fails the build if a town slug ever collides with a county slug.
Templated town copy was measured at about 72% pairwise similarity before any writing started. Every one of the 187 towns was then written by hand with real roads, stations, car parks and neighbouring towns, which brought the mean to 44% and the worst pair to 54%. An indexing gate keeps any page that is still derived rather than written out of the index until it is finished. Page copy scans itself for mentions of other covered towns and links the first one, whole-word and capital-aware so it never links 'Sale Road' to Sale.
The quote form now asks for a postcode rather than a make and model, because the postcode is what Sonny needs before deciding whether to take the job. It carries a required ownership confirmation and posts to Formspark with a branded notification that reminds the reader most customers expect a reply within the hour. Calls, SMS with a pre-filled message and WhatsApp are one tap each.
One locksmith in the markup, not 190
A single Locksmith and AutomotiveBusiness entity carries the address, hours and service catalogue, and every town and service page's Service node points back at it by id.
Similarity measured, not assumed
Five-gram Jaccard similarity was run across all town pages before and after the rewrite. The numbers are in the project README so the next person can rerun them.
No promises the business has not made
The copy never states drive times or distances, and the services file forbids quoting a price, a time or a capability Sonny has not confirmed. A wrong promise costs a locksmith the job.
Nearest neighbours by distance
Each town links to its six nearest covered towns, worked out from coordinates rather than typed by hand, so the internal linking stays correct when a town is added.
Getting it found
The Business Profile was rewritten end to end in September 2026: the description, a third category for key duplication, the service-area list rebalanced from ten of nineteen slots in Greater Manchester alone to a full twenty across all nine counties, all twenty-three service entries given descriptions, four blank ones dropped, and a weekly posting cadence started in place of one stale post from December.
The profile's six-month figures at that point were 655 views and 52 interactions, against 683 interactions for Auto Keys Pro over the same period, which is the benchmark the plan is written against. Sonny has 5.0 from 25 reviews and was not in the top ten of the Rochdale map pack for 'car key replacement Rochdale'; the median competitor has 145 reviews. Reviews, not code, are the next lever, and the plan says so.
“Webvise built my website in just 2 days and it turned out great. Super responsive with any changes I asked for.”
Under the hood
What the site runs on. The same approach is described on the service pages it came from.
- Next.js 16, static export
- React 19 and TypeScript
- Tailwind CSS
- One dynamic route for towns and counties
- Build-time slug collision check
- Formspark with branded notification
- Locksmith schema, one entity by id
- Google Business Profile rewrite