Short Answer
Multi-tenant software is one application serving many customers (tenants), where each customer sees their own data, their own users, and their own configuration — but the underlying code, infrastructure, and database are shared. Slack, Xero, HubSpot, and almost every modern SaaS product are multi-tenant. The model is what makes SaaS economically viable: instead of running a separate copy of the application for every customer (expensive), one copy serves everyone, with the application logic enforcing strict separation between tenants. The architecture is invisible to the customer but defining for the engineering team.
How Multi-Tenancy Works
There are three main architectural patterns, and the right one depends on the product’s needs.
Shared database, shared schema. All tenants’ data lives in the same tables, with a tenant ID column on every row. The application filters by tenant ID on every query. This is the most efficient model and the most common for modern SaaS, but it requires absolute discipline — a single missed filter exposes one tenant’s data to another. Most application frameworks now provide built-in tools (Laravel multi-tenancy packages, Django middleware, schema-level row security in PostgreSQL) that make this safe by default.
Shared database, separate schemas. Each tenant gets their own schema (PostgreSQL) or database (MySQL) within a shared server. The application switches between them based on which tenant is logged in. This adds isolation at the cost of some operational complexity — running migrations across hundreds of schemas takes more work than running them against one.
Separate databases. Each tenant has a fully separate database, sometimes on separate infrastructure. This is the strongest isolation and the most expensive, used for enterprise customers, regulated industries, or products where data residency requirements vary by customer.
The architectural choice cascades into how customisation works, how upgrades are deployed, and how performance is managed. Most SaaS products start with shared schema and move some customers (the larger ones, or the regulated ones) to separate databases as the product matures.
Why Businesses Need to Understand This
Multi-tenancy comes up in two situations: building a SaaS product, and evaluating one to buy.
For builders, multi-tenancy is the foundation of the economics. Without it, every new customer requires their own infrastructure, their own deployments, their own updates — and the cost per customer never goes down with scale. With it, one team can support thousands of customers from one codebase. The architectural decisions made early are expensive to change later, so getting them right matters.
For buyers, the multi-tenancy model affects security, customisation, and compliance. A regulated industry might require data residency in a specific country, which only certain tenancy models support. A large customer might need extensive customisation, which is harder to deliver in a strict shared-schema model. Understanding which model a vendor uses is part of due diligence.
What to Look For
- Strict data isolation. Every query, every API call, every background job must scope to the tenant. Vendors should be able to explain how they enforce this.
- Tenant-level configuration. Logos, terminology, workflow tweaks, integrations — the customer should be able to configure their experience without the vendor doing custom code work for each tenant.
- Performance isolation. A large tenant should not be able to slow the system down for everyone else. Background job queues, database connections, and rate limits should be tenant-aware.
- Data export and portability. Multi-tenancy is no excuse for data lock-in. Customers should be able to export their data in a usable format.
- Migration paths. If a tenant outgrows the shared model and needs dedicated infrastructure, the vendor should have a path for that without requiring the customer to start over.
Common Mistakes
The most common mistake when building multi-tenant software is leaving tenant scoping as an application-level concern only. Sooner or later, a developer writes a query that forgets the tenant filter — and the consequences range from embarrassing to catastrophic depending on what data leaks. Defence in depth means enforcing tenancy at multiple layers: the application, the database (through row-level security or schema separation), and the audit log. The second mistake is allowing per-tenant customisation to drift into per-tenant code branches. Once “tenant A has a custom workflow” becomes “the codebase has a special path for tenant A”, you have lost the leverage that multi-tenancy gave you. Customisation should be configurable within the product, not coded.
How We Approach This
We have built and operated multi-tenant systems both for clients and as part of our own product ecosystem. Tenant isolation is treated as a first-class engineering concern from day one, with enforcement at the application and database layers.
Build the Foundations Right
The services pages below cover SaaS development and the architectural choices that drive multi-tenant systems. If you are scoping a SaaS or evaluating one, the tenancy model is one of the first conversations worth having.
Disclaimer: The information provided in this article is for general guidance only and does not override or replace any terms in your contract. While we aim to offer helpful insights through our Knowledge Center, the accuracy of content in this section is not guaranteed.