Introduction
Trying to manage multiple websites CMS setups quickly becomes unmanageable when you’re handling several clients or projects. Different dashboards, duplicated users, scattered content, and inconsistent workflows. If you’re a freelancer or part of an agency, this doesn’t scale: you waste time, increase errors, and complicate maintenance.
The solution is to centralise content management into a single system. A headless CMS with an API allows you to manage multiple websites from one dashboard, reuse content structures, and automate workflows. Instead of relying on isolated instances, you work with a unified backend that delivers content to any frontend.
This approach simplifies operations, improves consistency, speeds up deployments, and reduces technical overhead. In this article you will learn how to manage multiple websites from a single CMS step by step.
Prerequisites
Basic understanding of REST APIs
Access to a headless CMS (e.g. Agora CMS)
A frontend project (Astro, Vue, Next.js, etc.)
Multiple websites or projects to manage
Step 1. Define a multi-site architecture
Start by structuring how your websites will live inside the CMS.
Separate:
Content
Projects (websites)
Users
Example:
{
"websites": ["site-a", "site-b"],
"content_types": ["posts", "pages", "products"],
"workspace": "agency-01"
}You reuse content models while keeping data separated.
Step 2. Create reusable content models
Avoid building structures per website. Use shared schemas.
Example:
{
"title": "string",
"slug": "string",
"content": "richtext",
"website": "string"
}The website field acts as a filter.
Benefits:
One model, multiple outputs
Lower maintenance
Better scalability
Step 3. Segment content by website
Each entry belongs to a specific site.
Example:
POST /api/posts
{
"title": "Post for site A",
"website": "site-a"
}Query:
GET /api/posts?website=site-aYou keep everything centralised without mixing content.
Step 4. Fetch content from each frontend
Each website pulls only its own data.
Example:
const res = await fetch('https://api.yourcms.com/posts?website=site-a');
const posts = await res.json();In Astro/Vue:
onMounted(async () => {
posts.value = await fetchPosts('site-a');
});Shared backend, independent frontends.
Step 5. Manage users and permissions
Control access per website.
Define:
Users per workspace
Roles (admin, editor)
Website-level permissions
Example:
{
"user": "editor@agency.com",
"permissions": ["site-a"]
}This prevents mistakes and improves security.
Step 6. Automate workflows
Once centralised, automation becomes straightforward:
Scheduled publishing
Content syncing
Unified backups
Single update point
Example:
CRON → publish content across multiple sitesThis is where efficiency scales.
Final result
You end up with:
One CMS managing all websites
Reusable content structures
Clean content separation per site
Reduced maintenance
Scalable architecture
You move from fragmented systems to a unified content layer.
Conclusion
Centralising content management is an operational upgrade. You stop managing systems and start managing structured content. This reduces friction, improves consistency, and enables real scalability.
If you handle multiple websites, this approach is essential. A headless CMS like Agora CMS lets you implement it without unnecessary complexity.
Try Agora CMS for free and manage all your websites from one place.