SaaS tenant isolation: decide it before you add features
How customer data is separated is expensive to change later. It belongs in the first design conversation.

Pick an isolation model on purpose
A shared schema with a tenant identifier, a schema per tenant, and a database per tenant all work. They differ in operational cost, migration effort, and how easily one customer's data can be exported or removed.
Regulatory requirements and the size of your largest expected customer usually narrow the choice quickly.
Enforce it in one place
If every query must remember to filter by tenant, one will eventually forget. Put the rule somewhere it cannot be skipped, such as the data-access layer or database row-level security, and test it directly.
Keep billing and permissions in agreement
Entitlements, subscription state, and application permissions tend to drift apart. Decide which system is authoritative, and make webhook handling safe to retry, before the first paying customer arrives.



