Separation that holds up when the client asks about it
Sooner or later a client asks the awkward question: who else can see this? With hubs the answer is short. Every hub has its own content, its own look, its own address and its own optional password. Your team members can be limited to the hubs they work on, so the freelancer on client A does not even see that client B exists. And the separation is not a display filter - it is enforced where the data is fetched, which is the difference between hidden and absent.
Clients read for free, and that changes the conversation
Per-editor pricing quietly punishes the best thing an agency can do: getting the client to actually use the documentation. Every developer on the client's side, every product manager, every stakeholder who checks the brand rules - with us they are readers, readers are unlimited, and unlimited is free. You pay for your own people who write. The invoice does not grow when the documentation succeeds, which is the correct direction.
One design foundation, six client flavours
Most agencies build on a shared foundation: one grid, one component logic, each client with their own tokens on top. Hubs support that shape without double work - the same Figma file can feed several hubs, synced once, counted once against your quota. The shared parts stay shared, the client-specific parts stay separate, and nobody maintains six copies of the same button documentation.
What we would fix about ourselves first
Two things, said plainly. There is no SAML, and for enterprise clients that can be a dealbreaker their security team will not negotiate on - our Zeroheight comparison tells you where to go in that case. And a hub cannot yet move out of your account into the client's own, so a full hand-off means the client starts their own account and the content is recreated. If your model ends every engagement with a hand-off, weigh that before you commit.