Persoonlijk account of team: waarom alles in je app bij een team hoort
Je hebt in een paar weekenden met Lovable een tool gebouwd voor je eigen bedrijf. Offertes maken, klanten bijhouden, een lijst van wat er openstaat. Hij werkt, en je gebruikt hem elke dag. Dan wil iemand van de binnendienst ook inloggen. Je zoekt in je app naar een knop Collega uitnodigen en vraagt je AI-tool er een te maken. Het antwoord is lang, want alles in je database blijkt aan jou te hangen.
Daar zit een vraag achter die eigenlijk op dag één hoort: is iets van een persoon of van een team? Voor bijna elke app die je aan bedrijven verkoopt of in je eigen bedrijf gebruikt, is het antwoord: van een team, ook als dat team voorlopig uit één persoon bestaat. Later omzetten is een verbouwing, en je AI-tool maakt die keuze stilzwijgend voor je. Vergelijk het met de bedrijfsauto. Die staat op naam van de bv, ook als jij de enige bent die erin rijdt.
Waarom je AI-tool het simpelste kiest
Vraag Claude Code, Cursor of Lovable om een app voor offertes, en je krijgt meestal twee tabellen. Eén met gebruikers, en één met offertes waarin bij elke offerte staat van welke gebruiker hij is. Dat werkt meteen, en het is precies wat je vroeg. Elk scherm toont de offertes van wie er is ingelogd, en elke controle stelt dezelfde vraag: is dit van jou?
Moet een tweede persoon dezelfde offertes zien, dan klopt die vraag nergens meer. Elke tabel krijgt een nieuw veld, elke zoekopdracht een nieuwe regel en elke rechtencontrole een andere vraag. En de gegevens die er al staan, zet je één voor één om zonder dat er iets wegvalt. Je AI-tool doet dat graag, alleen in honderd bestanden tegelijk. Jij controleert of hij er geen overslaat.
Op dit stuk loop ik zelf ook steeds vast, en pas later kom ik erachter dat ik het niet handig had gedaan. In april maakte ik bij Vercel een team aan voor een nieuw product. Toen had ik er twee: dat team, en het gratis team dat Vercel van mijn persoonlijke account had gemaakt. Ik wilde het nieuwe team op het gratis plan zetten, en daarvoor moest het oude weg. Dat kon niet, want het was mijn enige gratis team. Een catch-22 in een instellingenscherm. En de API-sleutels van een tool die we nu bouwen staan nog op mijn persoonlijke accounts. Die verhuis ik vlak voor de livegang, en dat wordt een van de grotere klussen.
Het goede nieuws voor je eigen app: de grote platforms hebben dit al uitgezocht, soms op de harde manier. Er zijn drie smaken.
Drie manieren om het te regelen
Een persoon, met organisaties ernaast
GitHub laat je kiezen. Een repository, de map met je code, hoort bij je eigen account of bij een organisatie. Dat voelt vrij tot je hem wilt verhuizen, want daar heeft GitHub een hele regeling voor. Je moet beheerder zijn, de naam mag aan de andere kant nog niet bestaan, en issues, sterren en volgers verhuizen mee. Oude links sturen door, tot iemand op de oude plek een nieuwe repository met dezelfde naam maakt. Dan zijn ze weg.
Een persoon logt in, het team bezit
Bij Cloudflare en Netlify is een persoon alleen iemand die inlogt. Alles wat je maakt hoort bij een account of een team, en je kunt lid zijn van meerdere. Netlify zegt het in één zin: elke site hoort bij een team, ook als het een team van één is. Cloudflare deed het eerst anders. Tot 2018 zaten gebruikers, accounts en wat ze bezaten aan elkaar vast, en met collega's in één account werken kon alleen met een Enterprise-abonnement. Dat hebben ze losgetrokken, en sindsdien kan iedereen collega's toevoegen.
Van het ene naar het andere
Vercel begon als GitHub en werd Netlify. In januari 2024 werd elk persoonlijk account een gratis team, zodat je bij het overstappen naar een betaald plan geen projecten meer hoefde te verhuizen. Logisch, en toch verwarrend. Op het forum van Vercel vroeg iemand dat jaar waarom met het verwijderen van een team ook het persoonlijke account was verdwenen. Het antwoord van Vercel: elk persoonlijk Hobby-account is nu een team. In maart 2026 meldde een ontwikkelaar die alleen werkt dat Vercel het project niet meer wilde bouwen, omdat Hobby-teams geen samenwerking ondersteunen. Verhuizen lukte niet, verwijderen ook niet. Mijn catch-22 was dus geen pech.
Zo doen anderen het
Zet je ze naast elkaar, dan zie je hoe vaak het team de eigenaar is, en hoe verschillend een klant of gast binnenkomt.
| Platform | Wie is de eigenaar | Een klant of gast |
|---|---|---|
| GitHub | een persoon of een organisatie | een outside collaborator krijgt toegang tot één repository, zonder lid te worden |
| Cloudflare | het account, en je kunt lid zijn van meerdere | collega's komen erbij als lid van het account, met een eigen rol |
| Netlify | het team, ook als dat een team van één is | de eigenaar kiest bij welke projecten een developer of reviewer kan |
| Vercel | het team, sinds 2024 ook je eigen Hobby-team | samenwerken kan pas op het betaalde Pro-plan |
| Framer | de werkruimte | linksboven staan ook de werkruimtes waar je gast bent |
| Webflow | de workspace van de klant | een bureau werkt als gast in de workspace van de klant, en de klant blijft eigenaar |
Bij bijna iedereen is het team of de werkruimte de eigenaar, en krijgt een gast een eigen ingang. Alleen GitHub laat de persoon eigenaar blijven, en heeft daarom die hele regeling voor het verhuizen.
Probeer het zelf
Kies hoe je dashboard is ingericht. Je ziet wat er linksboven staat, wie de eigenaar is van wat er gemaakt wordt, en wat er gebeurt als er een collega bij komt.
Het gangbare advies: alles hoort bij een organisatie
Wie software aan bedrijven verkoopt, krijgt overal hetzelfde advies. WorkOS, dat het inloggen voor zakelijke apps regelt, raadt aan je app rond organisaties te bouwen. Wie vertrekt, laat de gegevens achter bij de organisatie. Clerk, ook een dienst voor het inloggen, schrijft dat de meeste zakelijke apps persoonlijke accounts beter uit kunnen laten. En Makerkit en TurboStarter, twee pakketten met startcode voor een SaaS, waarschuwen dat overstappen later bestaande gegevens losscheurt, dus dat je dit kiest vóór de lancering.
Het recept is steeds hetzelfde. Een persoon kan in meerdere teams zitten, en een team heeft meerdere personen. Dat lidmaatschap is een eigen lijst, een koppeltabel, met een regel per persoon per team. En wie zich aanmeldt, krijgt meteen een eigen team: een werkruimte van één, met de naam van de persoon of het bedrijf, die je later hernoemt. Clerk heeft daar een schakelaar voor. Bij Auth0 schrijf je het zelf, met een stukje code dat na het aanmelden draait.
Doe dit voordat er echte gegevens in staan. Dan is het tekenwerk. Daarna is het verhuizen.
Wat het betekent voor je database
Vier soorten tabellen zijn genoeg.
| Tabel | Wat erin staat |
|---|---|
| users | wie inlogt: een e-mailadres en een naam |
| teams | wie iets bezit: een naam en het abonnement |
| memberships | wie in welk team zit, met een rol |
| al het andere | het team dat de eigenaar is (team_id) |
Een user_id mag op een offerte blijven staan, als aangemaakt door. De eigenaar is het team. De rol staat op het lidmaatschap. Zo is dezelfde persoon eigenaar in het eigen team en gewoon lid in het team van een klant. De rekening gaat naar het team, zodat een nieuwe collega geen eigen abonnement nodig heeft.
Wat het betekent voor je interface
Zet de teamwisselaar linksboven, waar Vercel, Linear en Framer hem ook hebben. Daar zie je in welk team je werkt, en daar wissel je zonder uit te loggen. Noem het eigen team daar geen Personal, want dat woord belooft een apart account dat er niet is. Toon de naam van het team, en bij een team van één gewoon je eigen naam. Zo richten we het ook in bij de tool die we nu bouwen, waarmee klanten hun site via een chat beheren. Daar staat linksboven je naam, met de sites die je voor klanten bewerkt.
Gasten en klanten: toegang tot één ding
Niet iedereen hoort in je team. Denk aan een klant die één site mag bijwerken, een opdrachtgever die in één bouwproject meekijkt of de accountant die één jaarrekening moet zien. Maak ze geen teamlid, want dan zien ze alles. Geef ze toegang tot dat ene ding, met een eigen lijst: deze persoon, dit project, deze rol.
Soms is een link genoeg. Bij Codocs, de deeldienst die we voor Hostmatters maakten, krijgt de ontvanger een deellink, met een wachtwoord en een vervaldatum als je dat wilt. In het logboek staat wanneer de link geopend is en vanaf welk adres.

De checklist
- Elk ding dat iemand maakt, heeft een team als eigenaar.
- Er is een tabel memberships, met per regel een persoon, een team en een rol.
- Wie zich aanmeldt, krijgt meteen een eigen team, met een naam die je later wijzigt.
- De rekening hangt aan het team.
- Klanten en gasten krijgen toegang per ding, zonder teamlid te worden.
- Linksboven staat de naam van het team, en nergens Personal.
- Dit staat vast voordat er echte gegevens in je app staan.
Die bedrijfsauto rijdt intussen gewoon op naam van de bv. Komt er een collega bij, dan laat je een tweede sleutel maken. In je app heet die knop Collega uitnodigen.
Bronnen, bekeken op 17 oktober 2026: WorkOS, Modeling your app, Users and organizations en Model your B2B SaaS with organizations. Clerk, Configure organizations. Makerkit, Account modes. TurboStarter, Disable personal accounts. Auth0 Community, Having all users be part of an organization, september 2025. Cloudflare, Accounts and zones en Expanding multi-user access, mei 2018. Netlify, Team-owned sites, Team management en Manage project access. Vercel, Easier transitions between hobby and pro, januari 2024, en op het forum Don't create hobby plan, augustus 2024, en Hobby teams do not support collaboration, maart 2026. Vercel, Account Management. Framer, Workspaces. Linear, Workspaces. Webflow, Guide for clients of agencies and freelancers. GitHub, About repository transfers en Adding outside collaborators.
Probeer dit
Laat je AI-codeerhulp je app nalopen, voordat je de volgende functie bouwt. Plak deze opdracht in Claude Code, Cursor of Lovable:
Loop mijn app na op hoe gebruikers en eigendom zijn ingericht, en verander nog niets. Vertel me per tabel of de eigenaar een gebruiker of een team is. Vertel of er een tabel is die gebruikers aan teams koppelt, met een rol per lidmaatschap, en of iemand bij het aanmelden meteen een eigen team krijgt. Vertel hoe een klant of gast toegang krijgt tot één ding zonder teamlid te worden. Stel daarna een plan voor waarin alles bij een team hoort: de tabellen users, teams en memberships (user_id, team_id, rol), een team_id op al het andere, een team van één bij het aanmelden en een aparte toegangslijst voor gasten. Zeg welke bestaande gegevens we moeten omzetten en hoe, en wacht op mijn akkoord.
Begin je net, zet de opdracht dan in je eerste bericht en vraag of de tool het meteen zo inricht. Lees het plan rustig door, en laat het pas uitvoeren als er een back-up van je database is.
Vragen
Moet een SaaS of webapp persoonlijke accounts of teams hebben?
Voor een app die je aan bedrijven verkoopt of in je eigen bedrijf gebruikt: teams. Een persoon logt in, en alles wat er gemaakt wordt hoort bij een team, ook als dat team uit één persoon bestaat. Zo kan er later een collega bij zonder dat je de database verbouwt. Clerk, WorkOS en Makerkit geven hetzelfde advies.
Hoe ziet een database met gebruikers, teams en lidmaatschappen eruit?
Een tabel users voor wie inlogt, een tabel teams voor wie iets bezit, en een tabel memberships met per regel een user_id, een team_id en een rol. Alle andere tabellen krijgen een team_id als eigenaar. De rol staat op het lidmaatschap, zodat dezelfde persoon in het ene team eigenaar en in het andere gewoon lid kan zijn.
Hoe geef je in een SaaS een klant toegang tot één project zonder dat die teamlid wordt?
Met een aparte toegangslijst per project: deze persoon, dit project, deze rol. Of met een deellink, eventueel met een wachtwoord en een vervaldatum. Een klant als teamlid toevoegen geeft toegang tot alles in het team, en dat wil je meestal niet.
Kun je een SaaS achteraf omzetten van persoonlijke accounts naar teams?
Ja, maar het is een verbouwing. Elke tabel krijgt een team_id, elke zoekopdracht en elke rechtencontrole verandert, en de bestaande gegevens zet je een voor een om. Makerkit en TurboStarter waarschuwen dat gegevens daarbij los kunnen raken. Kies het daarom voordat er echte gebruikers zijn.
Kiest Lovable of Claude Code zelf voor persoonlijke accounts of teams?
Meestal kiezen ze het simpelste: alles aan de ingelogde gebruiker hangen. Dat werkt voor één persoon. Vraag er dus vooraf expliciet om, met teams, lidmaatschappen en een team van één bij het aanmelden.
Verder lezen
Bekijk ook
Lab Notes Vol. 1 verschijnt op dinsdag 1 december
Eens per twee maanden de nieuwe stukken in je mail, met wat niet op de site staat:
- Wat er speelde in de studio en wat er nieuw is bij ons
- Wat we onderweg vonden: een paar links die het lezen waard zijn
- Eén ding om zelf te proberen, haalbaar in een uur
