When Seattle Public Schools came to me in 2021, they had a web infrastructure problem. They had over 100 school websites, each managed by different staff — principals, communications coordinators, department heads — with varying levels of technical ability and no consistent authoring experience. The existing setup was fragile, difficult to update, and impossible to maintain at scale.

The answer was WordPress multisite. Here is what I learned building it.
Why Multisite and Not 104 Separate Installs
The instinct for many clients is to treat each site as independent — one install per school, managed by the school. In practice, this creates a maintenance nightmare: 104 sets of core and plugin updates, 104 sets of backups, 104 potential security vulnerabilities to patch individually.
WordPress multisite solves this. One installation, one update cycle, one backup policy, one security posture. Network-level plugins activate across all sites simultaneously. Site-specific themes and configurations live at the sub-site level.
The trade-off is complexity in the setup. A poorly configured multisite is harder to manage than 104 separate installs. The design work up front matters.
The Editorial Interface Problem
Default Gutenberg is not designed for structured content at institutional scale. A school website has specific content types: staff directories, event listings, announcements, programme pages, bell schedules. None of these have good native Gutenberg implementations.
I built custom Gutenberg blocks for each content type. Each block was:
- Structured — fields were explicit, not free-form rich text
- Constrained — editors could not break the layout by putting content in the wrong place
- Accessible — output met WCAG 2.1 AA without editorial intervention
- Consistent — the same block rendered the same way across all 104 sites
Advanced Custom Fields (ACF) underpinned the data model for the more complex blocks. The block registration code used the standard register_block_type() API with server-side rendering for blocks where the output needed to be computed from the data.
Role-Based Access at Network Scale
WordPress’s default role system is not granular enough for a district deployment. A school’s editor should not be able to see or touch another school’s content. A district communications manager should be able to publish to any site. A network administrator should see everything.
I built a custom capability layer on top of WordPress’s user role system. Site-level capabilities were enforced via the user_has_cap filter — no custom tables, no separate auth system, just WordPress’s existing architecture used properly.
The practical result: 104 sites, hundreds of editors, zero reports of content from one site appearing on another.
Training Materials as a Deployment Deliverable
One of the decisions I made early on the Seattle project: training materials were not an afterthought. They were a deliverable with the same priority as code.
I produced:
- Video walkthroughs of the custom blocks (screen-recorded, captioned)
- Written guides for common editorial tasks
- A style guide for content decisions (when to use which block, image sizing rules)
- A network admin runbook for the communications team
The goal was that by launch day, the district could operate the platform without me. That is what happened. The ongoing relationship has been about iterative feature development, not hand-holding on basics.
Lessons
Design the editorial interface for the least technical user. If a principal with no web experience can publish an announcement without creating a support ticket, the interface is right. If they need training to use a block, the block needs redesigning.
Multisite is a commitment. Once 104 schools are on it, you do not casually migrate them off. Design the data model and the plugin architecture as if it will run for ten years. It probably will.
Ongoing maintenance is a feature. The district needed to know that plugin updates would happen, that security patches would be applied, and that someone would respond when something broke. That assurance has as much value as any technical deliverable.
The Seattle Public Schools network has been in active development and maintenance since 2021. That is probably the best endorsement I can offer.