OneHealth Clinics
They came to us on a slow WordPress install with a WooCommerce store that wasn't cutting it and almost no local search visibility. We rebuilt everything.
The client
Primary care for every stage of life.
OneHealth Clinics is a comprehensive primary care and specialty clinic in St. George, Utah. Seven providers spanning internal medicine, family medicine, pediatrics, dermatology, and women's health — serving patients from newborn through senior years, all under one roof.
When they came to us, they were running a slow WordPress site with a WooCommerce store nobody could get useful data out of — and no internal team to fix any of it. We became their full digital partner and long-term technical team. Migration, buildout, ecommerce, and SEO — and we're still the ones keeping the lights on.
The challenge
A practice that outgrew its website.
Legacy WordPress stack
The existing site was slow, hard to update, and gave the team no real control over content or design. A modern practice deserved a modern foundation.
WooCommerce wasn't cutting it
They had a WooCommerce store, but it was slow, hard to use, and gave them no visibility into the data that actually mattered — sales trends, inventory, order status. It was there, but it wasn't working for them.
Invisible to local search
With 13,000+ monthly impressions, Google was already finding them — but poor titles, zero structured data, and no individual service pages meant almost none of those impressions converted to clicks.
Migration & buildout
Off WordPress. Onto something they could actually own.
We rebuilt the entire site from scratch on Next.js 15 with Tailwind CSS and shadcn/ui — a stack built to last — maintainable, extensible, and fully in SiteHaus's hands. Every page was designed with their brand, their patients, and their search rankings in mind.
WordPress → Next.js 15
Migrated off a slow, hard-to-maintain WordPress install onto a modern Next.js App Router stack — faster builds, better DX, full TypeScript.
Content architecture
Rebuilt the full page structure from scratch: home, services (with individual specialty sub-pages), pediatrics, about, contact, and shop — all with proper metadata and layout hierarchy.
SEO equity preserved
All old WordPress URLs mapped to new routes with 301 redirects, including legacy traffic still hitting dead paths like /contact-us and /specialty-services.
Design system
Built a cohesive design system using Tailwind CSS and shadcn/ui with a custom teal/parchment palette, consistent typography, and reusable components across all pages.
Ecommerce platform
A full commerce platform. Built once, available to every client.
Rather than bolt on a third-party plugin, we built SiteHaus Commerce — a white-label ecommerce API that powers OneHealth's storefront and is available to any of our clients. NestJS microservices, PostgreSQL with 32 tables, BullMQ workers, and Stripe Connect so payments flow directly to the client with zero platform fees.
Architecture
Three independent processes over a single database: a public-facing Gateway, a Commerce microservice (catalog, cart, orders, inventory), and a Payments microservice (Stripe keys, webhooks, refunds) — communicated via NestJS TCP. A fourth BullMQ Worker process handles async jobs — order emails, inventory expiry — without touching the request path. Stripe keys never leave the Payments service.
Full product catalog
Products with multi-variant support (size, format, dosage), option groups, image management via Cloudflare R2, and dynamic collections.
Real-time inventory
Inventory reservations with Redis-backed TTL expiry on carts — stock is held when a customer adds to cart and released if they abandon checkout. No overselling.
Stripe Connect payments
Revenue routes directly into OneHealth's Stripe account. SiteHaus takes zero platform fee. Includes Stripe Tax API for automatic tax calculation.
Order lifecycle
Full order management from pending through confirmed, shipped, and delivered — with return and refund handling built in from day one.
Async email workers
BullMQ + Redis worker processes handle order confirmations, shipping updates, and inventory alerts asynchronously — no blocking the request path.
Admin dashboard
Staff can manage products, variants, inventory levels, orders, discount codes, shipping zones, and collections — all without touching code.
SEO & UX
13,000 impressions were already happening. We made them count.
A Google Search Console audit revealed a strong impression base with poor click-through — outdated titles, no structured data, a mobile experience with real friction. We fixed all of it in a single sprint.
Search visibility
Geo-targeted titles
Updated every page title to include St. George, UT — the single fastest lever for local healthcare search ranking.
5 specialty service pages
Weight Loss, Hormone Therapy, NAD+ Infusions, Vitamin Infusions, and PRP Injections each got a dedicated page so Google can rank them independently.
7 physician schemas
Added Schema.org Physician structured data for all 7 providers on the About page, targeting doctor name searches directly.
Legacy brand capture
329 monthly searches for their former name were going nowhere. Added the Dixie Primary Care reference to hero copy and meta descriptions to capture them.
User experience
Services mega menu
Rebuilt the desktop nav into a two-column mega menu — Clinic Services and Specialty Services with descriptions, replacing a flat link list.
Mobile nav overhaul
Replaced a 12-item expanded services list with clean top-level links, larger touch targets, and a Book Appointment CTA in the hamburger menu.
Scrollable quick-nav
Quick-nav pill strips on Services, Pediatrics, and About were consuming 200px of mobile viewport. Replaced with a swipeable horizontal scroll using shadcn ScrollArea.
Friction fixes
Phone number made tappable via tel: link. Footer Book Appointment button was routing nowhere — fixed. Book Appointment CTA added to the persistent navbar.
Results
A practice patients can actually find — and that can sell.
OneHealth went from a slow WordPress site and a WooCommerce store that wasn't working for them to a fully custom web presence. The SEO changes — new service pages, physician schemas, geo-targeted titles — take 4–8 weeks to fully index. We'll update this page with ranking data as it comes in.
Live now
- Full site migrated off WordPress
- Ecommerce storefront live and selling
- 7 physician schemas indexed
- 5 specialty service pages launched
- 301 redirects preserving SEO equity
Indexing (check back June 2025)
- Weight loss medication St. George rankings
- Hormone replacement therapy Utah rankings
- Individual physician name search positions
- About page position improvement (currently p.16)
- Specialty service page organic entries
Work with us
Want us to do this for your site?
Tell us where you are and we'll be straight about what we'd do.
Start a conversation