GoKey Locksmiths — Case Study

WordPress to Hugo.
76 Pages. $0/mo.

How we took a broken WordPress install and turned it into a fast, rankable, schema-complete static site for a veteran-owned locksmith business — with zero monthly hosting cost.

Client
GoKey Locksmiths
Built By
eDot Dev
Completed
2026
Type
Migration + SEO Build
76 Optimized pages built
35 City + service combos
$0 Monthly hosting cost
100% Schema markup coverage
WP→Hugo Full platform migration

01 / 09

The Problem. The Plan. The Result.

GoKey Locksmiths is a veteran-owned locksmith business serving multiple cities. They came to us with a WordPress site that was slow, broken, and invisible to search engines. No schema markup, no service-area targeting, generic content, and a $30+/month hosting bill for the privilege.

The Situation

A veteran-owned locksmith business with real skills and zero online presence. WordPress was running outdated plugins, page speed was in the red, and there was no structured way to target the city-service combinations that drive local search traffic.

Every month they were paying for hosting that wasn't delivering. No tracking, no schema, no OG tags. A site that existed but didn't work.

Our Approach

Full migration to Hugo — a fast, zero-dependency static site generator. We designed a scalable page architecture with Go template-driven city+service combinations, allowing us to generate optimized local landing pages at scale without duplicating effort.

DNS migrated from GoDaddy to Cloudflare. Deployed to Netlify on the free tier. Every page ships with JSON-LD schema, OG tags, and Twitter Cards out of the box.

Platform
WordPress → Hugo
Hosting
Netlify (Free)
DNS
GoDaddy → Cloudflare
Pages Built
76
Monthly Cost
$0

02 / 09

Old Site. New Site.

Side-by-side breakdown of what changed — from platform and performance to cost, SEO coverage, and maintainability.

✕ Before — WordPress
⚠️ Broken install — outdated plugins, unresolved conflicts, intermittent errors
🐌 Slow page loads — bloated theme, unoptimized images, PHP render overhead
💸 $30+/month — shared hosting bill with no performance return
🔍 Zero schema markup — no JSON-LD, no structured data, invisible to rich results
📍 No local targeting — single homepage, no city/service landing pages
🔗 No OG / Twitter Cards — link previews looked broken on social share
🛠️ High maintenance burden — plugin updates, security patches, core updates
🌐 GoDaddy DNS — slow propagation, no advanced routing controls
✓ After — Hugo + Netlify
Sub-second loads — pure static HTML, no server-side rendering, CDN-delivered
🆓 $0/month — Netlify free tier, no hosting bill ever
📄 76 fully optimized pages — every city, every service, every combination covered
🔍 JSON-LD on every page — BreadcrumbList + Service schema, rich result eligible
🌍 35 city+service combos — template-driven local landing pages at scale
📣 Full OG + Twitter Cards — every page has proper social previews
🔒 Zero attack surface — no database, no PHP, no CMS login endpoint
☁️ Cloudflare DNS — instant propagation, DDoS protection, analytics included

03 / 09

Right Tool. Right Job.

Every technology chosen for a reason: performance, maintainability, and cost. Zero dependencies that cost money. Zero server to manage.

🦔
Static Site Generator
Hugo
🚀
Hosting + Deploy
Netlify (Free Tier)
☁️
DNS + CDN
Cloudflare
📐
Templates
Go HTML Templates
🧩
Schema
JSON-LD (LD+JSON)
📦
Content
Markdown + Front Matter
🎨
Styles
CSS (custom, no framework)
🔁
CI/CD
Netlify Auto-Deploy (Git)

04 / 09

76 Pages. One Template System.

We designed a data-driven content architecture that lets Hugo generate every city+service landing page from a single template. No duplicate HTML. No copy-paste content. Add a city or service in the data layer, and the pages generate automatically.

Page Types

  • Homepage (hero + services overview)
  • Service pages (car, residential, commercial, emergency)
  • City pages (service area hubs)
  • City + Service combo pages (35 combinations)
  • About + Contact pages
  • Blog/content pages

Content Strategy

Each city+service page is unique — localized city references, service-specific copy, and area-specific schema. Not thin duplicate content; actual differentiated landing pages targeting "locksmith [city]" and "car locksmith [city]" queries.

Template variables handle city names, service descriptions, and schema values so every page is distinct while the structure stays consistent.

Page Category URL Pattern Count Schema Types
Homepage / 1 LocalBusiness BreadcrumbList
Service Pages /services/[service]/ 4 Service BreadcrumbList
City Hub Pages /[city]/ ~8 Service BreadcrumbList
City + Service Combos /[city]/[service]/ 35 Service BreadcrumbList
Static Pages /about/, /contact/ 2 LocalBusiness
Blog / Content /blog/[slug]/ 26+ Article BreadcrumbList

05 / 09

Built to Rank.

Every technical SEO signal that matters for a local service business — implemented on every page, automatically, at build time. No plugin required. No ongoing maintenance.

🧩
JSON-LD Schema — BreadcrumbList

Structured navigation breadcrumbs on every page. Helps Google understand site hierarchy and enables sitelinks in search results.

🏢
JSON-LD Schema — Service

Service schema on every service and city+service page — name, description, area served, provider, price range. Rich result eligible.

🔗
Open Graph Tags

og:title, og:description, og:image, og:url on every page. Facebook, LinkedIn, Slack, iMessage previews all look sharp.

🐦
Twitter Cards

twitter:card, twitter:title, twitter:description, twitter:image. Every page shares correctly on X/Twitter with a proper preview card.

📍
Local Service Targeting

35 city+service landing pages each targeting specific "locksmith [city]" and "[service] locksmith [city]" queries with unique content.

Static HTML Delivery

No server-side rendering. No PHP. Pure HTML+CSS served from Netlify's CDN. Core Web Vitals: green across the board.

🗺️
XML Sitemap

Auto-generated sitemap.xml covering all 76 pages. Submitted to Google Search Console. Hugo regenerates it on every deploy.

🤖
robots.txt

Clean robots.txt allowing full crawl. No accidentally-blocked pages from a poorly configured WordPress SEO plugin.

🔒
HTTPS + Security Headers

Automatic HTTPS via Netlify. Security headers configured in netlify.toml. No mixed-content warnings. Signals trust to both users and Google.

06 / 09

Structured Data on Every Page.

Two JSON-LD blocks render in the <head> of every page at build time. No plugin. No runtime JavaScript. Pure structured data baked into every HTML file Hugo generates.

📄 Hugo template: layouts/partials/schema.html — BreadcrumbList + Service
{{/* BreadcrumbList — every page */}}
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "Home",
      "item": "https://gokeylocksmiths.com/"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "{{ .Title }}",         /* injected by Hugo */
      "item": "{{ .Permalink }}"         /* injected by Hugo */
    }
  ]
}
</script>

{{/* Service schema — city+service pages */}}
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Service",
  "name": "{{ .Params.service_name }}",
  "description": "{{ .Params.service_desc }}",
  "areaServed": "{{ .Params.city }}",
  "provider": {
    "@type": "LocalBusiness",
    "name": "GoKey Locksmiths",
    "url": "https://gokeylocksmiths.com"
  },
  "serviceType": "Locksmith"
}
</script>

Why This Matters

BreadcrumbList tells Google exactly how the site is structured. When the site ranks, Google can show breadcrumb sitelinks in the SERP — more real estate, more clicks.

Service schema makes each page eligible for rich results in local search. Combined with area targeting, this is the structured-data foundation for local pack visibility.

07 / 09

What Got Delivered.

From a broken WordPress site to a production-ready, schema-complete, fully optimized local business website — deployed, live, and built to last.

76
fully optimized pages — every city, every service, zero monthly bill

Delivered

  • Full WordPress to Hugo migration
  • 76 pages built and deployed
  • 35 city+service landing pages
  • JSON-LD schema on every page (BreadcrumbList + Service)
  • OG tags + Twitter Cards site-wide
  • DNS migrated: GoDaddy → Cloudflare
  • Deploy pipeline: Netlify (free tier, auto-deploy on push)
  • XML sitemap + robots.txt
  • HTTPS + security headers
  • Live at gokeylocksmiths.com

Business Impact

  • $ $0/month hosting vs. $30+/month WP hosting
  • Sub-second page loads (was 4-6s on WP)
  • Rich result eligible on all service pages
  • 35 local landing pages covering service area
  • Zero maintenance burden — no plugins, no updates
  • Zero attack surface — no database, no CMS login
  • Veteran-owned business finally visible online
Site Status
Live
Live URL
gokeylocksmiths.com
Monthly Cost
$0
Pages Indexed
76

08 / 09

Fast sites for
real businesses.

Local businesses deserve websites that actually work. We build fast, rankable, schema-complete sites that don't cost a fortune to run.

🌐 edotdev.ai
✉️ eli@edotdev.ai
📁 gokey-locksmiths

GoKey Locksmiths — Case Study — eDot Dev LLC — 2026

09 / 09