Healthcare / Migration

Functional Patterns Brisbane

Full Squarespace-to-Vercel migration of a 193-page healthcare site — preserving every keyword ranking, every blog URL, and every backlink, with zero downtime.

Functional Patterns Brisbane website screenshot
268/268
Old URLs returning 200
$2,350
Monthly organic traffic value preserved
478
Ranked keywords protected
~0 min
Effective downtime

The Brief

Functional Patterns Brisbane is a leading biomechanics and chronic-pain facility in Bulimba with 130+ five-star Google reviews and eight years of content behind it. Their Squarespace site had outgrown the platform — bloated with 258 URLs (30% junk pages, old drafts, and "-old" duplicates), AI crawlers blocked by default, schema fragments that weren't actually deployed, and the kind of technical ceiling that Squarespace can't break through.

The rebuild target was a custom, static website with clean URL architecture, proper schema deployment, unblocked AI search crawlers, and the page-speed characteristics of a modern edge-hosted build. The catch: the blog drives 87% of their organic traffic. Any migration that broke even a handful of URLs would cost them real money.

The Challenge

This wasn't a build-from-scratch project — it was a surgical migration on a site with real SEO equity. Three constraints shaped every decision:

  • Zero SEO loss. 478 ranking keywords, 134 backlinks across 71 domains, $2,350/month in organic traffic value. All 141 blog URLs had to land at identical paths, or each broken URL would leak rankings.
  • Zero downtime. The site services paying clients and runs Google Ads. A multi-hour outage at DNS cutover would interrupt bookings and waste ad spend.
  • Email untouched. The client runs Google Workspace email plus Amazon SES and Brevo for transactional mail, all through the same domain. DNS changes had to swap only web routing, leaving all MX, DKIM, SPF, DMARC, and domain-verification records intact.

Before vs After — Quick Audit

We captured a full technical + SEO audit of the Squarespace site on 17 April 2026, then audited the Vercel build immediately pre-cutover. Side-by-side scores:

48
Squarespace (pre-migration)
Needs Work • 258 pages (30% junk) • AI crawlers blocked • No schema deployed • JS-rendered
80+
Vercel build (post-migration)
Strong • 193 purposeful pages • AI crawlers welcomed • Full schema + OG tags deployed • Static HTML on edge CDN
Before — Squarespace
  • 258 URLs in sitemap (30% junk)
  • AI crawlers (ChatGPT, Perplexity, Claude) blocked
  • Schema JSON-LD written but not deployed
  • Zero OG meta tags on any page
  • JavaScript-rendered, CLS-prone
  • No canonical tags anywhere
  • Contact form didn't actually submit
  • 0 mentions / 0 citations in ChatGPT answers
  • Platform tax on bandwidth + storage
After — Vercel
  • 193 purposeful pages, 178 in clean sitemap
  • AI crawlers explicitly welcomed via llms.txt
  • Schema deployed + validated on every page
  • Full OG + Twitter meta on every template
  • Static HTML rendered at the edge (HTTP/2)
  • Canonical tags site-wide
  • Cliniko booking integrated directly
  • Positioned for AI-search visibility growth
  • Predictable hosting costs, no platform lock-in

What Was Delivered

The engagement spanned the full migration lifecycle — audit, rebuild, URL mapping, DNS cutover, and post-launch analytics setup. Concrete deliverables:

Content and structure

  • 141 blog articles ported to identical URL paths — zero redirects needed on the core SEO asset
  • 15 additional blog posts recovered from the Squarespace backup during final audit
  • 10 condition pages rebuilt with stronger E-E-A-T signals (scoliosis, posture correction, chronic pain, etc.)
  • 6 program pages with instructor bios, schedules, and real trainer photos
  • 9 research summary pages citing peer-reviewed biomechanics literature
  • Full Squarespace backup archived locally — 282 pages, 5,645 assets — available for content reference or rollback

URL preservation and redirects

  • 95 explicit 301 redirects written into vercel.json covering every structural slug change
  • 268 old URLs verified returning 200 (direct or via redirect chain) post-cutover
  • Automated verifier script (`verify-redirects.py`) that can be re-run against any host for future changes
  • Rate-limited to stay under Vercel's DDoS thresholds (2 workers, 0.4s delay, 268 URLs in under 3 minutes)

Technical SEO

  • Canonical tags, OG meta, and Twitter card meta on every page template
  • Full JSON-LD schema deployed: WebPage, Article, BreadcrumbList, Organization, Service, FAQPage
  • Clean XML sitemap with 178 pages submitted to Google Search Console
  • robots.txt explicitly welcoming AI crawlers (GPTBot, ClaudeBot, PerplexityBot)
  • llms.txt authored for AI-search discoverability
  • Alt text audit and sweep across every inline image

DNS cutover execution

  • DNS swap performed at Squarespace with only two records changed (A @ + CNAME www) — all MX / TXT / DKIM / SPF / DMARC records untouched
  • Full screenshot evidence captured pre-change for instant rollback
  • Vercel "Valid Configuration" + SSL issuance completed within minutes of DNS propagation
  • Post-cutover verifier run confirming 268/268 green on the live domain

Analytics and Search Console

  • Fresh Google Search Console URL-prefix property verified on the new domain
  • Sitemap submitted — 178 pages discovered within hours
  • GA4 tag swept across all 193 HTML pages (closed gaps that existed on the old site)
  • Flagged legacy Google Ads conversion tag as broken (firing sitewide on every pageview) and advised a proper rebuild for bid optimisation

Key Numbers

  • 193 HTML pages built, audited, and deployed
  • 268 old URLs verified reachable post-cutover (100%)
  • 141 blog URLs preserved at identical paths
  • 95 structural 301 redirects configured
  • 178 pages in the submitted sitemap
  • 100% GA4 coverage across every page
  • 2,055 canonical / og:url references swept and verified across 206 files
  • Zero email disruption — Google Workspace + SES + Brevo all untouched

What makes this kind of project work: meticulous URL mapping before DNS changes, a scripted verifier so every old URL is tested automatically, a full site backup for rollback confidence, and leaving email DNS records alone. When 87% of traffic comes from the blog, nothing else matters more than blog URL preservation.

The Result

Functional Patterns Brisbane is now running on a modern static-site architecture with an audit score that jumped from 48/100 (Needs Work) to 80+/100 (Strong), with every SEO asset preserved. The client confirmed within hours of cutover: "They love the site."

The site is positioned for upside that Squarespace couldn't deliver: AI-search visibility (previously zero mentions), faster Core Web Vitals via edge-hosted static HTML, fully deployed schema for rich results, and a hosting setup that won't hit a platform ceiling as the business grows. Monitoring is set up for the standard 2-week GSC coverage watch to verify Google picks up the new URLs cleanly.

Related reading

View Live Site →

Migrating off Squarespace, Wix, or WordPress?

We plan and execute website migrations that preserve your SEO equity, not break it. If you're considering a platform move, let's chat about how to do it safely.

Get a Free Consultation