Eleven clinics are moving from WordPress to full-code sites on Cloudflare Pages. This is the process we follow for each one, and why each step exists. Winthrop was the pilot; Kallangur is the second and proved the process works.
One template holds the design and the code. Each clinic has its own repository holding only its own content, and its own site. A change to the template reaches every clinic as a pull request, so one bad change can never take down eleven sites.
The look, the page layouts, the build script, treatment illustrations, health-fund logos and the group's dentist list. These live in the template and are never edited inside a clinic's repo.
Every word on its pages, its photographs, its prices, its opening hours and team, its 301 redirect map and its SEO files.
Eleven steps, three approval gates. Work stops at a gate until it is signed off.
The live website address, the logo pack, colour direction, photos, the Google Business Profile link, a few real reviews, and the team's names. We ask the clinic group for the slow things on day one: founding year, email, each dentist's registered name, and the analytics and call-tracking IDs.
Every page of the existing site is crawled and saved: titles, headings, word counts, image alt text, structured data. This can only be captured while the old site is still live, and it is the evidence we compare against after launch.
A script cuts the new repo from the template, drops in the clinic's facts, colours and logos, and puts clearly-labelled placeholder images everywhere a photo is still missing. The site builds from day one.
We search the built site for any other clinic's name, address or phone number. This is how we caught Winthrop's address hiding in the shared privacy policy.
The repo goes to GitHub, Cloudflare Pages builds it, and the preview is blocked from Google so it can never compete with the live site.
We read what the old site actually ranks for, research keywords and competitors on top, and decide every page of the new site. See the next section.
Nothing is written until the page list is agreed.
The design, the colour scheme and the imagery go to the client together.
Real photography, real copy, real offers.
No other page is built before this passes.
Worked through highest-value first, each page written against its own keyword brief.
Every old address must lead somewhere on the new site. A script fails until that is true.
Kevin reviews, the domain is pointed at the new site, the old site stays running for four to eight weeks as a fallback, and rankings are watched daily.
A clinic's rankings are worth more than its website. Moving hosts is where sites lose them, so the whole process is built around not losing any.
Two things meet: the standard set of pages every clinic in the group should have, and the pages the old site already earns something from.
For Kallangur that meant 111 pages to build and 284 old addresses redirected. Of 305 blog posts, 32 earned their place and the rest now point at the treatment page they were about.
The same test. A post that ranks, gets visits or has a link pointing at it carries over at its exact address. The rest redirect. We do not rebuild hundreds of posts to preserve nothing.
Every page starts from the equivalent Winthrop page, then is rewritten for this clinic. The layout is shared. The words are not.
Heroes and any photo taken inside the practice belong to that clinic and are never reused elsewhere: a patient walking in should recognise the place. Treatment illustrations, before-and-after cases, dentist headshots and fund logos are shared across the group.
Where a photo does not exist yet, the page shows a plain panel with the word PLACEHOLDER on it, so nothing half-finished can reach a live site by accident.