Replatforming a Plumber: WordPress to Hugo, with Lighthouse 100s

A plumber in Campton Hills called us. His website was leaking. Page loads dripping, plugins crusted over with neglect, the contact form occasionally swallowing leads whole. As a plumber, he was fine with leaks in theory. He was just hoping the irony would stop at the basement.

We took the job. Partly for the customer. Partly for the metaphor.

The Diagnosis

His existing site ran on WordPress, on a shared cPanel VPS, with the kind of plugin garden that grows when nobody weeds. Updates were either skipped (scary) or applied (also scary). Page weight was rough. Cumulative Layout Shift was worse. The contact form occasionally lost submissions to a SpamExperts MX path that nobody had touched in three years.

We laid out two options:

  • Stay on WordPress, patch the leaks, lock down the plugin set, set up a real staging environment, and refactor the theme. Months of work. Recurring hosting and maintenance.
  • Replatform onto a static site. Days of work. Negligible recurring cost. Less surface area for things to go wrong.

For a one-truck plumbing operation in Kane County, “less surface area for things to go wrong” was the deciding line.

Why Hugo Won

We’ve made the WordPress vs. static case before, but the math was especially friendly here:

  • Performance. Static HTML served from Cloudflare’s edge is faster than WordPress on any host, full stop. No PHP runtime, no database round-trip, no plugin chain stitching together a response.
  • Tech debt. WordPress means three things to maintain forever: WordPress core, the theme, and the plugins. Hugo means Hugo. Updated by running brew upgrade hugo once a year and reading the changelog over coffee.
  • Cost. GitHub for source, Cloudflare Pages for hosting and serverless functions, Cloudflare DNS, all in Terraform. The bill is $0/month. Cloudflare’s free tier meters at volumes that don’t apply to a plumber.
  • Security. No CMS to patch. No login page to brute force. The source of truth is a Git repo. The worst-case attacker bricks the build pipeline, we redeploy from a known-good commit in sixty seconds.

The argument we didn’t lean on: “static sites are simpler.” They are, until you need a contact form, image optimization, structured data, JSON-LD, A/B testing, or anything else that ships with a real WordPress install. The win isn’t simplicity for its own sake. It’s the right amount of complexity in the right places.

What We Shipped

  • Hugo site with Tailwind v4, custom layouts for services, service-area cities, reviews, and a contact page.
  • 13 city/service-area landing pages, each with local water utility specifics — well vs. municipal, hardness in grains-per-gallon, iron and manganese expectations — because that’s what Kane County homeowners search for and Google rewards.
  • A Cloudflare Pages Function handling the contact form, doing input validation, honeypot detection, and posting to Resend for transactional email. Defensive enough that the spam noise is roughly zero.
  • Terraform managing DNS records, the Pages project, security headers, and the production rollout. Every infra change is a code review.
  • JSON-LD (LocalBusiness, Plumber, Service, FAQPage) on every relevant page, with shared @ids so search engines understand it’s all the same business.
  • An llms.txt at the root for AI crawlers, because the year is 2026 and we may as well help the bots help us.

The Lighthouse Run

We used our own in-house SEO tool — CrawlHog — to evaluate the site the way Lighthouse and a real-world crawler would, in a tight feedback loop. CrawlHog caught the kind of things that take three browser refreshes to notice: oversized hero images, an inline script blocking first paint, JSON-LD with mismatched @ids, alt text on decorative SVG logos that triggered minifier-collapse and tripped a spam-signal heuristic, old WordPress URLs (/contact-us/) returning 404 instead of 301 to their new homes.

A few iteration rounds later:

  • 100 Performance
  • 100 Accessibility
  • 96 Best Practices (one ding, we know what it is, we’ll fix it)
  • 100 SEO

That’s a real production site, not a bare HTML page in a vacuum. Photos, embedded Google Fonts, GA4, JSON-LD, working contact form, sticky mobile CTA, the whole package. The kind of report that makes a project manager cry the good kind of tears.

What It Looks Like Now

The Water Heater Guys is live. Dean writes quotes from his truck. His customers find him on Google. Lead emails land in his inbox seconds after a homeowner hits submit. The website doesn’t need a developer on retainer to keep the lights on.

Updates ship by git push. Cloudflare rebuilds in sixty seconds. Total cost since launch: zero dollars and a roughly equivalent amount of sleep lost worrying about plugin CVEs.

If This Sounds Like Your Site

If your business runs on a WordPress site that’s one plugin update away from breaking, and you’re staring down a “just one more update cycle” decision — we’d love to talk. We’ll tell you honestly whether Hugo is the right fit, or whether your business legitimately needs WordPress. (It sometimes does. See our take on that.)

And if you need a plumber in Kane County, you know where to find one.

Have a question about this, or a project you're working on?

Schedule a call Contact us