We built a unified headless CMS platform replacing 4 disconnected systems over 5 months. Content architecture (months 1-2). Content modelling: designing a unified content model spanning all content types — marketing pages, product documentation, help articles, blog posts, API references, and in-app content. Content types: 18 content types defined (Feature, Use Case, Tutorial, API Endpoint, Help Article, Blog Post, Landing Page, FAQ, Changelog Entry, Team Member, Customer Story, Integration Guide, Comparison Page, Pricing Component, Legal Page, Release Note, Tooltip, and Announcement). The model: every content type structured with typed fields, relationships to other content types, and channel-specific display hints. Cross-reference architecture: content relationships enabling reuse — a Feature content type referenced by marketing pages, documentation, help articles, and in-app tooltips. Update the Feature: every referencing page automatically reflects the change. The architecture: single source of truth for every piece of product information.
Localisation framework: every content type supporting localisation — locale-specific field overrides with fallback to the source language. Translation workflow: content flagged for translation when source content changed, with status tracking (draft, in-translation, review, published) per locale. The framework: localisation built into the content architecture from the foundation. CMS platform and editorial experience (months 2-3). Platform: Sanity CMS selected for content modelling flexibility, real-time collaborative editing, and developer-friendly customisation. Custom studio: the Sanity Studio customised with — role-based access (content creators, editors, translators, and administrators with appropriate permissions), channel preview (content previewed as it would appear on the website, help centre, and in-app — editors seeing their content in context before publishing), editorial workflow (draft → review → approved → published workflow with reviewer assignment and notification), and publishing controls (scheduled publishing, channel-specific publication status, and the content governance that multi-channel publishing requires).
The studio: a content management experience that the content team loved rather than tolerated. Multi-channel frontend development (months 3-5). Marketing website: Next.js replacing WordPress — static generation with incremental regeneration, delivering page loads under 1.2 seconds. SEO: structured data, semantic HTML, and Core Web Vitals performance that Google rewarded. Design: the marketing team's design vision implemented without WordPress template constraints. Documentation site: Next.js documentation frontend consuming the same Sanity content — product documentation, tutorials, and API references rendered with the navigation, search, and code highlighting that technical documentation requires. Help centre: custom help centre frontend replacing Zendesk Guide — help articles served from Sanity with the search, categorisation, and feedback collection that customer self-service required. Blog: integrated into the marketing website rather than a separate WordPress installation — consistent design, shared navigation, and content cross-promotion between blog posts and product pages.
In-app content: Sanity content delivered through API to the product application — tooltips, onboarding guides, and feature announcements managed in the CMS rather than hard-coded. Developer docs: API documentation served from Sanity with OpenAPI specification integration — API endpoints documented alongside guides and tutorials in a unified developer experience. Content migration (months 3-5). Migration execution: content from 4 source systems migrated to Sanity — 2,400 marketing pages, 680 documentation articles, 340 help centre articles, 180 blog posts, and 45 API reference pages. Migration automation: custom scripts extracting content from each source system, transforming to the new content model, and loading into Sanity with automated validation. Content quality: migration used as an opportunity to audit content — 280 outdated articles identified and archived, 120 duplicate pages consolidated, and 45 broken internal links fixed.
The migration: content cleaner and more organised in the new system than it had been in the old systems.