How to Structure Strapi for Multiple Websites
Plan a Strapi multi-site CMS with explicit site ownership, shared-content rules, permissions, routing, SEO controls, caching, and recovery boundaries.
A Strapi multi-site setup uses one content platform to support more than one website, brand, region, or audience. The hard part is not adding a site field. The hard part is deciding which content is shared, which content must stay separate, and which editors can publish to each destination.
Choose the ownership model first
Before building content types, list the sites and the people responsible for them. Decide whether each site shares legal ownership, infrastructure, release schedules, security requirements, and editorial governance. Separate Strapi instances are often safer when organizations have different administrators, compliance boundaries, or failure tolerance.
A shared instance is a better fit when one team governs the sites, content reuse has clear value, and the organization accepts a shared operational dependency.
Three practical Strapi multi-site patterns
1. Site relation on each entry
Create a Site collection with fields such as name, key, domain, locale defaults, theme reference, and publishing status. Content entries relate to one or more sites. The frontend requests entries for its site key.
This pattern is explicit and easy to query. It also requires validation so editors cannot publish an entry with missing or conflicting site relationships.
2. Shared entries with site-specific overrides
Keep reusable information, such as an organization description or service definition, in a shared entry. Store site-specific title, introduction, call to action, or metadata in related override records. This reduces copied content while preserving local or brand-specific language.
Use overrides only for fields that need them. A content model with an override for every field becomes harder to understand than separate entries.
3. Separate instances with a shared frontend package
Some organizations should keep content and permissions in separate Strapi instances while sharing frontend components, schemas, and deployment tooling. This costs more to operate but reduces the effect of one site's publishing or infrastructure problem on the others.
Example content model
Site
- name
- key
- primaryDomain
- defaultLocale
- active
Page
- title
- slug
- site (relation)
- pageType
- sections (dynamic zone)
- seo (component)
- publishStart
- publishEnd
GlobalSetting
- site (relation)
- navigation
- footer
- contactDetails
- defaultSeo
Use a composite rule in application logic for site + slug. A slug that is unique in one site may be valid in another, so a global slug rule can block legitimate pages.
Query by site, not by hostname alone
The frontend should resolve the current site from controlled configuration, then request content with that site key. Do not trust an arbitrary request hostname to select private content. Preview and webhook endpoints need the same site validation.
Cache keys and revalidation tags should include the site identifier. Otherwise, publishing one site's page can invalidate or overwrite another site's cached response.
Roles, permissions, and editorial boundaries
Strapi roles can limit administrative actions, but the exact site-level permission model needs testing against your Strapi edition and workflow. If editors must be isolated from other brands or legal entities, confirm that the required restrictions apply in the admin interface and API. Use separate instances when the boundary cannot be enforced and audited.
SEO requirements for every site
- Generate canonicals from the correct domain and route.
- Keep XML sitemaps separate by hostname.
- Store site-specific titles, descriptions, social images, and robots directives.
- Use structured data that names the correct organization and visible service area.
- Prevent preview, duplicate-domain, and inactive-site URLs from being indexed.
Shared content does not mean every site should publish the same page. Each site needs a reason for the page and enough distinct information to serve its audience.
Deployment and recovery planning
A shared Strapi instance creates a shared dependency. Review database backups, uploaded media, environment separation, migrations, restore testing, rate limits, monitoring, and the effect of a failed deployment on every site. Record how each frontend behaves if the CMS is unavailable.
Questions to answer before building
- Which content is shared, localized, or owned by one site?
- Can an editor see or change another site's content?
- Who approves global changes?
- How are domains, redirects, previews, and sitemaps generated?
- Can one site deploy or recover without the others?
A short architecture review can answer these questions before the content model hardens around the wrong ownership assumptions. See Strapi development services for implementation help and the Strapi and Railway portfolio for related project context.