Yogaloom SEO Audit
SEO & Performance Audit

yogaloom.com

Reformer Pilates & Yoga studio, Muswell Hill — findings ranked by expected impact on organic visibility.
Originally audited 2026-09-06 Re-checked 2026-09-20 WordPress · Elementor · Yoast SEO
What changed since 2026-09-06: only the /time-table-2/ title tag was edited (no longer literally reads "Contact Us") — the duplicate page itself is still live and still unredirected. Every other open finding below is unchanged, verified live again on 2026-09-20 by re-crawling the same pages, sitemap and schema. Both previously-resolved fixes (homepage title/meta, LocalBusiness schema) are still in place. Performance scores were not re-measured this pass — no browser/Lighthouse tool was available in this session, and Google's PageSpeed API is still returning the same unauthenticated 429 quota error as before — see the methodology note at the bottom.
3
pages still competing for "reformer pilates equipment" — unchanged
1
duplicate "-2" page still live & unredirected (/time-table-2/)
96
reviews shown by the on-site widget — schema fixed, widget itself still stale
6
of 8 findings from the last audit still open

High priority

fix first — actively splitting rankings today

Verified by re-crawling live title tags, the XML sitemap and page source again on 2026-09-20 — not estimates.

Three pages compete for "reformer pilates equipment" — and the wrong one is winning

Cannibalization
Evidence
/reformer-pilates/, /reformer-equipment-pilates/ and /private-equipment-reformer-pilates/ are all still live with unchanged titles, re-verified 2026-09-20.
Impact
Your best-optimized page (well-written title, covers "Pilates North London," "Muswell Hill," "Yoga & Pilates Studio London") isn't necessarily the one showing up — a weaker page can absorb its clicks.
Fix
Pick /reformer-pilates/ as canonical for the core keyword, 301-redirect the other two into it (or re-scope them narrowly, e.g. equipment-buying only, and link to the main page from within them). Still pending — no change since the original audit.
Related fix already done: investigating this finding turned up a 4th, unlisted page cannibalizing the same keyword — /yoga-in-muswell-hill/, titled "yoga" but its actual content (H1: "Strengthening Reformer Pilates in Muswell Hill") was Reformer Pilates, a leftover mistake from a previous SEO agency. 301-redirected into /reformer-pilates/ and its now-redundant nav menu entry removed. Re-verified live 2026-09-20 — redirect still returns 301. The 3 pages above are a separate, still-open piece of this same problem.

An old "-2" duplicate page is still live, indexed, and competing with the real one

Partially addressed
Evidence
/time-table-2/ still returns 200 OK. Its title tag was updated since the original audit — it no longer reads the bare "Contact Us" mislabel, now "Yoga & Pilates in Muswell Hill | Contact Us | Yogaloom" — but it's still a duplicate of /timetable/ ("Timetable - Yogaloom Pilates") and still has no redirect.
Impact
A second, real, indexed page still quietly competing with the one page (Timetable) Google should trust for this content.
Fix
/time-table-2/ still needs a 301 redirect to /timetable/ — the title edit alone doesn't resolve the duplication.
Correction (still stands): /about-us-2/ and /all-offers-2/ were re-checked 2026-09-20 and remain the only, actively-linked version of their page (just an awkward slug) — no action needed on those two.

Mobile pages took up to 24 seconds to become interactive (2026-09-06 measurement)

Not re-measured
Evidence
Original figures (2026-09-06): a real Lighthouse audit scored mobile performance 63–69/100 across two clean runs — Time to Interactive 16–18s, Speed Index 12.2s — and a third run scored 28/100 during a slow server response. Desktop scored 48/100, dragged down by a layout-shift score of 0.617. Not re-measured on 2026-09-20 — this session had no browser/Lighthouse tool available, and Google's PageSpeed API still returns the same 429 quota error it did in the original audit. What was re-checked directly from the page source: the same 4 overlapping page-builder plugins are still all loading (Elementor core, ElementsKit, Qi Addons, Essential Addons), and the image lazy-loading/dimension gap is numerically identical (14 of 35 homepage images lazy-loaded, 15 missing width/height) — i.e. nothing structural that drives the score has changed.
Impact
Core Web Vitals are a direct Google ranking factor, and mobile is where most local "near me" searches happen — a visitor waiting 16+ seconds to interact has usually already left.
Fix
Unchanged: trimming the three overlapping page builders is still the highest-leverage single fix. To get a real updated score, either re-run this audit from an environment with browser/Lighthouse access, or check pagespeed.web.dev directly (it draws on Google's real-user Chrome data, not this tool's quota).

Medium priority

meaningful, less urgent — all unchanged since 2026-09-06

An unedited page-builder placeholder is live on the homepage

Unchanged
Evidence
One of the homepage's H2 headings still literally reads "Add Your Heading Text Here" — re-verified in the live page source on 2026-09-20.
Impact
A wasted heading tag Google could otherwise use for a keyword, and a visible sign of an unfinished page to any visitor who scrolls past it.
Fix
Open that section in Elementor and write a real heading for it.

Three overlapping page-builder plugins are all loaded at once

Unchanged
Evidence
Re-verified 2026-09-20: the homepage still loads assets from Elementor core and ElementsKit Lite and Qi Addons for Elementor and Essential Addons for Elementor Lite — four page-builder libraries, each shipping its own CSS/JS, for what's normally a one-library job.
Impact
Redundant CSS/JS on every single page load — the single biggest lever on how heavy this site feels to load.
Fix
Audit which widgets from each add-on pack are actually used on the live site, standardize on one, and deactivate the rest.

The reviews widget still shows a stale count

Unchanged
Evidence
The homepage's Google Reviews widget still displays 96 reviews as of 2026-09-20 (same figure as the original audit). This is the known open item logged separately — free-tier Trustindex plugin, no manual sync button, "Last updated" stuck. Unrelated to the AggregateRating JSON-LD fix, which already independently uses the correct current figure.
Impact
Visitors see an outdated, lower review count than the studio actually has on Google.
Fix
Unchanged — the three options already on the table: upgrade the plugin's paid tier, replace it with a lighter actively-syncing alternative, or a static-text workaround for the summary line only (per the existing decision log).

Most homepage images skip lazy-loading and size hints

Unchanged
Evidence
Re-counted 2026-09-20: identical to the original audit — 21 of 35 <img> tags have no loading="lazy", and 15 have no explicit width/height.
Impact
Images below the fold load before they're needed, and images without dimensions can cause the page to visibly jump as it loads (layout shift).
Fix
Turn on lazy-loading site-wide in the theme/media settings, and make sure every image upload keeps its width/height attributes.

The XML sitemap includes plugin templates, not just real pages

Unchanged (slightly larger)
Evidence
sitemap_index.xml re-checked 2026-09-20 still lists the same four plugin-template sitemaps as before (e-floating-buttons-sitemap.xml, elementskit_template-sitemap.xml, thsn-service-category-sitemap.xml, thsn-team-group-sitemap.xml), plus two more that have appeared since: thsn-service-sitemap.xml and thsn-team-member-sitemap.xml — all page-builder component types, not content.
Impact
Google spends part of its crawl budget on internal template fragments instead of your real pages — slightly more of them now than in September.
Fix
In Yoast SEO → Search Appearance, turn off "Show X in search results" for those custom post types.

Lower priority

worth doing, no rush — unchanged

No blog or article content

Unchanged
Evidence
No post-sitemap exists at all — the site has pages but no articles.
Impact
A studio with retreats, gong baths and Ayurvedic treatments has plenty of long-tail search queries ("reformer pilates for lower back pain," "what is a gong bath") going uncaptured.
Fix
Not urgent — worth a slow-and-steady content plan once the fixes above are shipped.

A leftover analytics plugin sits unconfigured

Unchanged
Evidence
MonsterInsights is still present in the page source as of 2026-09-20. Analytics is fine — Google Analytics 4 is actually firing via Site Kit — this plugin is just dead weight.
Impact
Negligible on its own, but it's extra plugin surface for no benefit.
Fix
Either configure it properly or remove it — don't run two analytics plugins side by side.

Resolved

2 fixed since the original audit — re-verified still in place on 2026-09-20 — click to expand

Homepage title doesn't cover your main service, and duplicates another page

✓ Resolved 2026-09-06 · still in place 2026-09-20
Evidence
Homepage <title> was "Yoga in Muswell Hill | Yogaloom" — nearly word-for-word the title and meta description of the separate page /yoga-in-muswell-hill/. Neither mentioned "Pilates," although the H1 leads with "Personalised Reformer Pilates/Yoga Classes."
Impact
Google had to pick one of two near-identical pages to rank for the brand + location search — splitting the authority either page could hold alone, and under-selling Pilates, the higher-value service.
What was done: Homepage title changed to Reformer Pilates & Yoga Studio in Muswell Hill | Yogaloom, meta description rewritten to lead with Pilates + location. Re-verified live 2026-09-20 — both fields still read exactly as set. /yoga-in-muswell-hill/ — resolved separately (see the cannibalization finding above for that fix).

No LocalBusiness or review schema, despite a 5.0★/96-review widget on the homepage

✓ Resolved 2026-09-06 · still in place 2026-09-20
Evidence
The site's structured data (Yoast-generated) only defined WebPage, WebSite, Organization and an empty BreadcrumbList — no LocalBusiness/ExerciseGym type, no address, no AggregateRating, even though the homepage displays a 5.0-star Google Reviews widget.
Impact
That star rating couldn't appear directly in Google search results without matching schema — a proven click-through lift for local, reviews-driven businesses like a studio.
What was done: Added a site-wide ExerciseGym JSON-LD block (via a WPCode PHP snippet, output on wp_head) with name, URL, phone, address (50 Hillfield Park Mews, Muswell Hill) and an AggregateRating of 5.0 / 112 reviews, matching the Google Business Profile count at the time. Re-verified live 2026-09-20 — the same ExerciseGym JSON-LD block with ratingValue: 5.0 / reviewCount: 112 is still rendering on every page load. One optional field (priceRange) remains a non-critical, cosmetic gap.

What's already working

  • Brotli compression is enabled site-wide, and static assets carry sensible cache headers.
  • robots.txt is clean — nothing blocked, sitemap correctly referenced.
  • Yoast SEO is active and generating valid Organization/WebSite schema plus XML sitemaps automatically.
  • Google Analytics 4 is correctly firing via Site Kit — you do have real traffic data to work from.
  • /reformer-pilates/ itself is well-optimized: keyword-rich title and description covering Pilates, North London and Muswell Hill.
  • Already ranking #1–#2 for general "yoga pilates studio Muswell Hill" searches, ahead of established local competitors.
  • 96 five-star Google reviews shown on-site (real count is higher — see the stale-widget finding above), a strong trust signal now backed by working schema.
  • Layout shift was a non-issue on mobile (CLS 0.002–0.003) in the original audit — the shift problem found was specifically a desktop one.
Methodology: This 2026-09-20 pass re-crawled the live site directly (titles, meta, redirects, JSON-LD schema, sitemap, homepage HTML source) to check which of the original 8 findings are still open — 6 are, 2 remain resolved, and 1 is now partially addressed. It did not re-run a Lighthouse performance test: Google's public PageSpeed Insights API is still returning the same unauthenticated 429 quota error as on 2026-09-06 (confirmed again this pass), and no browser/Lighthouse tool was available in this session to run one directly against the live site as was done originally. The structural drivers behind the original 48–69/100 scores (the 4-plugin page-builder stack, the image lazy-loading gap) are unchanged, so there's no reason to expect the scores have moved — but that's an inference, not a measurement. For an up-to-date number, check pagespeed.web.dev directly, or ask for this audit to be re-run from an environment with browser access.

Suggested order

  1. Rewrite the homepage title/meta and resolve the /yoga-in-muswell-hill/ duplicate. Done 2026-09-06 — title/meta rewritten, and /yoga-in-muswell-hill/ redirected + removed from the nav menu. Still in place 2026-09-20.
  2. Decide a canonical page in each duplicate pair and 301-redirect the rest. Still open 2026-09-20: /time-table-2//timetable/ (its title was cleaned up but the redirect is still missing), and the 3-way reformer/equipment split. (about-us-2 / all-offers-2 confirmed again not to need this.)
  3. Add LocalBusiness + AggregateRating schema. Done 2026-09-06, still live 2026-09-20 — unlocks the star-rating snippet in search.
  4. Clean up the plugin stack: fix the placeholder heading, drop two of the three overlapping Elementor add-ons, check the reviews widget's asset settings. Still open 2026-09-20 — this is the biggest lever on the mobile performance score, which hasn't been re-measured but has no reason to have improved on its own.
  5. Pass on images and the sitemap: lazy-load + dimensions, exclude template post types from Yoast's sitemap. Still open — the sitemap actually gained 2 more plugin-template entries since September.
  6. Longer term: a blog content plan. Once the above is shipped, start capturing long-tail search demand.