1. Work
  2. Glowlight Med Spa
  3. The search work
Shipped to production

Search & SEO

The free build that got me hired.

Technical SEO across three brands: a custom plugin that owns a site’s output server-side, a search audit for Desert Sun, and the local-search tracking that made the results measurable.

Role
Sole engineer
Stack
WordPress, PHP, Schema.org
Period
May to September 2026
Status
Shipped to production

01Glowlight

The Glowlight plugin

The clinic’s site was missing the fundamentals: per-page titles and descriptions, structured data, a robots.txt Googlebot would honor, and a sitemap that matched the site. On every service page, the only h1 in the markup belonged to a promotional popup, so Google read each service page as a page about a coupon.

The site runs Elementor, where content edits live in a page builder and get overwritten. Anything typed into an admin field is one careless save away from gone.

So none of the fixes went into the admin. They went into a plugin that rewrites the output server-side, module by module, every change under version control and reversible one file at a time.

Titles and meta

Per-page titles and meta descriptions for every indexable page, generated with fallbacks rather than hand-entered.

Structured data

A complete graph: organisation, local business, services, providers and breadcrumbs, plus FAQ schema on the service pages.

Star ratings

SERP star ratings via AggregateRating, backed by the clinic’s real reviews.

The headline fix

Real per-page h1 elements for Googlebot, server-side, without touching a single Elementor template.

Locations

A locations hub with its own page for each clinic.

Measurement

Microsoft Clarity with a guard that masks patient fields on the page, plus a GA4 event when a booking completes.

I shipped the first version before I was hired. Each later change went out as its own narrow deploy, so its effect could be read on its own in Search Console. Most of the queries I tracked moved up, several from page two to page one, and the weight-loss pages I targeted first held the top spots while the wider set of local weight-loss searches climbed. The plugin got me hired, and the booking rebuild came with it.

02Desert Sun

The Desert Sun audit

A search audit of the sister brand, run against the live site’s raw HTML rather than rendered pages, and against sixteen months of Search Console data. Every finding was checked against the live site and Chrome’s field data before it went in the report, and two of my own earlier flags did not survive that check.

  • Held upPage-level SEO
  • The gapStructural: a salon in dozens of towns and no location pages, so it could only rank locally through its homepage and its Google listings
  • WonSearches for its own name plus a city
  • Nearly invisibleThe service-plus-“near me” searches where most of the volume is
  • Put firstConversion tracking and campaign tagging, ahead of most of the on-page work, because without them no channel’s return could be measured

I have since built the location pages as a WordPress plugin, one page per salon, generated from data pulled out of the site’s own store locator.

Desert Sun location pagesOne page per salonOn staging

03Local search

Making local search measurable

Clicks from the brands’ Google Business listings were landing in analytics as direct traffic, so the biggest local channel a multi-location business has could not be measured.

  • Every listing retagged across the three brands, each pointed at its own canonical location page with campaign tags
  • A custom analytics channel group, so those clicks report as their own source
  • A minimal bulk upload. Re-uploading Google’s own export flags phantom changes to addresses and categories and can trigger re-verification, so the sheet carried only the columns being changed
  • Booking checkout events wired into GA4, so organic search’s share of bookings is measured instead of guessed

Verified three ways before it counted as done.

  1. A column diff proving only the website field changed
  2. HTTP checks that the tags survived every redirect and that each listing reached the right store
  3. A real click-through on a live listing