[ Case study ]
Each school ran its own WordPress install, inherited from three different vendors, with duplicated plugins and three different editing conventions. A single branding change — one phone number, one term date — had to be made nine times, and one of the nine was always forgotten.
CLIENT a nine-school private education group — FOCUS Consolidate the content model first
Representative examplesEvery case study in this library is an illustrative composite of the kind of engagement we deliver — written to show our method and standards, not to name clients.
The group runs nine private schools across one region — nursery through sixth form — each with its own office, its own admissions cycle, and, since three different vendors had come and gone, its own WordPress install. Content had accumulated for a decade: news posts, term dates, staff lists, photo galleries. The central team existed to keep the schools consistent, but the websites had quietly drifted into nine small sovereignties, and every brand decision had to be negotiated nine times through three different editing conventions.
Each school ran its own WordPress install, inherited from three different vendors, with duplicated plugins and three different editing conventions. A single branding change — one phone number, one term date — had to be made nine times, and one of the nine was always forgotten.
We proposed one WordPress multisite: a single admin where each school is a site with its own pages and its own editors, sharing one content model, one block library, and one plugin set. The reasoning was that the group's real unit of change — brand, term dates, staffing — is group-level, while the texture of school life stays school-level. We would migrate school by school during out-of-term windows, with a verified URL map per pass, because search equity and bookmarks had to survive every cutover. Simpler for editors was the design constraint, not a side effect.
Just as important is what we ruled out, and why:
We mapped every post type, taxonomy, and template across the nine installs, then designed one shared model that let each school keep its own pages without its own plugin stack.
A single block theme with theme.json tokens replaced nine themes, so brand changes propagate from one place and editors choose blocks instead of improvising layouts.
Each school moved in a staged window with a verified URL map and a redirect check, so search equity and bookmarks survived every cutover.
Delivered by the systems pod — engineer + automation specialist over 9 weeks, with working increments reviewed with the client every week.
Obstacle
One school's events calendar ran on an inherited plugin whose recurrence data didn't fit the shared content model; the mismatch surfaced in week six, after four schools had already cut over.
Handled: We wrote a converter for that plugin's export shape, re-ran the school inside its own out-of-term window, and added a data pre-flight audit to every remaining pass.
Obstacle
Two schools' news archives carried shortcodes left by the old vendors; the converter handled the six variants found in discovery, and a seventh appeared during the final migration pass.
Handled: We extended the parser, re-ran only the affected posts, and confirmed against the URL map that nothing else had moved; the morning redirect check came back clean.
Obstacle
Mid-migration, one school announced an open day and needed a homepage change inside a cutover window when its old admin was already frozen.
Handled: The school's own editor made the change on the new install after a ten-minute orientation; we watched the cutover checks stay green and logged that edit as the handover test.
The headline: sites maintained from one wordpress admin, migration completed over 9 weeks — 9 installs → 1 admin, read from CMS inventory plus editor time logs. A second check: weekly content-update effort across the group at ~6 hrs → ~1 hr.
The Friday-afternoon phone-number ritual ended. Brand and term-date changes happen once in the group admin and appear on every school site, and the offices stopped emailing each other about whose copy was current. Editors describe the new admin as shorter, not bigger — they pick a block, fill the fields, done. The group's director now plans site changes around admissions campaigns rather than around which vendor is available, and the quarterly vendor conversation no longer exists.
The result was read from CMS inventory plus editor time logs against the pre-engagement baseline over the stated window, with a guardrail check on weekly content-update effort across the group. Where platform-reported numbers and business outcomes differ, this record says which layer it is quoting.
What we would do differently
We would audit the three vendors' plugins before writing the content model, not after — one inherited plugin's data shape forced a late schema change.
[ Related service ]
[ Related builds ]
3 weeks 4 daysMedian landing-page turnaround, measured across the first 12 campaign pages post-handover
3.9s 1.8sMobile LCP on gallery pages, field data over the 28 days after launch
[ Next step ]
Next case study