One workspace per client: what changes when the CRM stops being shared
An agency running every client in one pipeline is one filter away from a data breach, and one export away from a contract problem.
Twenty CRM. Read the tool page for what it costs and what it is not for.Most agencies run every client in a single CRM, separated by a field and a saved view. It works until someone removes a filter, exports the wrong list, or asks a question that requires proving separation. The alternative is a workspace per client, which used to be unaffordable because CRMs charge per seat and per instance. At nine dollars a user per month, with unlimited objects and fields on the entry plan, the arithmetic changed.
The problem with one shared pipeline
Separation by filter is separation by discipline, and discipline fails silently. The consequences are not hypothetical: a rep sees another client prospects, an export carries rows it should not, a report double-counts. And when a client asks whether their data is isolated, the honest answer is no, it is filtered, which is a different word.
There is also a modelling problem. Two clients rarely want the same fields, the same statuses or the same stages, so a shared instance drifts towards the union of everyone requirements: forty custom fields, half of them empty on any given record, and a data model nobody can explain to a new starter.
What a workspace per client buys
Isolation that is structural rather than procedural. Nobody can see across because there is no across. Each workspace carries the objects and statuses that client actually uses, and a change for one client cannot break the reporting for another. A rep switches workspace rather than switching filter, which is a visible action instead of an invisible one.
It also makes the exit clean. When an engagement ends, the client data is a workspace, not a subset of rows in yours. That distinction shows up in a contract negotiation and it is worth having settled before the conversation happens.
What it costs you
Reporting across clients, which no multi-workspace CRM gives you natively. If you need one dashboard of everything, it lives outside the CRM, reading each workspace through its API. That is a real build, and it is the honest price of the isolation.
Provisioning too. A new client means a workspace, a data model, the automations and the users, and doing that by hand is a day of work you will resent by the fourth client. It has to be templated from the start, which is a reason to choose a CRM whose schema can be created through an API rather than only through a screen.
Why the API matters more than the features
A CRM in a prospecting operation is a write target. Call summaries, replies, booked meetings and enrichment all arrive from somewhere else, and none of them are typed by a human who remembered. REST, GraphQL, webhooks and an MCP server on every plan means the automations can do that typing, and an assistant can read the result. A CRM whose API is a premium feature will quietly become a place where data goes to be re-entered.
The self-hosting question
The code is open source, so self-hosting is genuinely an option, and the licence cost goes to zero. The operational cost does not: upgrades, backups, monitoring and the day the database needs attention are now yours. For one instance it is a weekend. For fifteen client instances it is a job, and it should be priced as one before anyone decides that free means cheap.
What to migrate, and what to leave behind
Not everything deserves to cross. Dead records, fields nobody filled, and stages that stopped matching reality two years ago should be left in the old system, because migrating them makes them look current. The rule that survives contact with a real migration: move what a person will act on in the next ninety days, plus the history attached to it, and archive the rest somewhere readable rather than importing it.
Notes are the part that gets lost, and losing them is worse than losing a field. A note carries the reason a deal stalled, the promise someone made, and the number that was quoted. Check explicitly that they arrive intact and not as a one-line reference, because an import that silently drops the body of every note looks perfectly successful in a record count.
Where the money actually goes
Not the licence. Nine dollars a seat is not what makes this decision hard. The cost is the migration, the data model work and the automations that have to be rewritten against a new API, and that cost is paid once per client in the first week. Anyone comparing CRMs on seat price alone is comparing the smallest number on the invoice.
Where these numbers come from
- Twenty pricing page, plans and self-hosting option read 18 Sept 2026
- Internal CRM migration work, one workspace per client dated 15 Sept 2026