A multi-tenant CMS is one install that serves many separate clients, where each client is a tenant with their own content, users and settings, walled off from every other tenant. One codebase, one thing to update, many sites. That is the whole idea, and the reason agencies care is arithmetic.
The arithmetic that sends you looking
With three client sites, separate installs are fine. With twenty, you have twenty admin logins, twenty update cycles, twenty places a plugin can break, and twenty chances that the one you forgot is the one that gets defaced. Nobody decides to run twenty separate installs. You just end up there, one client at a time, and then it is your whole week.
A multi-tenant setup collapses that. Update once and every client site gets it. Add a feature once and every client site has it. Check one dashboard to see which sites are healthy instead of opening twenty tabs.
Separate installs feel safer because the blast radius of a mistake is one client. Multi tenant is faster because the blast radius of a fix is all of them. Which one you want depends entirely on how much you trust the isolation.
Multi-tenant is not the same as multi-site
These get used interchangeably and they are not the same. Multi-site usually means one organization running several of its own properties, where everyone involved works for the same company and a bit of leakage between sites is untidy rather than fatal. Multi-tenant means the sites belong to different customers who must never see each other, where leakage is not untidy, it is the end of your agency.
A platform built for the first case and marketed for the second is the trap. Ask which one it was actually designed for.
The one question that decides it
How does it keep tenants apart, and is that isolation tested. That is the question. Not the editor, not the templates, not the pricing. A tenant id column and good intentions is not isolation, it is a convention that holds until one query forgets to filter.
- Is tenant scoping enforced in one place, or re-implemented in every query where somebody could forget
- Are there tests that actively try to read another tenant's data and assert that it fails
- Do roles and permissions understand tenants, so a client editor cannot wander into another client
- Does media and file storage respect the same boundary, because that is where isolation usually leaks first
- What happens on export or backup, since that is the other place one tenant quietly ends up holding another tenant's content
Separate install per client
- Every update is multiplied by your client count
- Security patching is a recurring tax forever
- A new feature has to be rebuilt site by site
- No single view of what is healthy
One multi-tenant platform
- Update once, every client site inherits it
- One place to patch and one place to audit
- Build a feature once and every client has it
- One dashboard across the whole book
Join the Seedly owners community.
Owners trade setups, share add-ons, and swap playbooks. See what people are building before you commit.
When you do not need one
If you build a handful of sites a year and hand them off, this is overhead you will not get back. If every client wants something structurally different, you are not running a fleet, you are running bespoke projects and a shared platform will fight you. And if you cannot answer the isolation question about a given platform, you do not need that one, because the thing you are buying is exactly the thing you cannot verify.
What I ended up with
I built the multi-tenant version I wanted rather than renting one, because the per-site fees on hosted platforms scale with your client count and the whole point was to stop that. The tenant boundary is the part I care most about, which is also the bar I would hold any other platform to. If you are weighing a starter kit instead, the same question applies and I went through it in what to look for in a Next.js multi-tenant SaaS starter kit. The day to day version of running a fleet is in managing 50 client websites from one dashboard.
Judge it on the wall between clients, not the editor.



