Rotterdam · 51°55′N · 4°28′O · Atelier nr. 004
1 plek · start Q4 2026Klantportaal →MMXXVI
Pillar · Marketingautomatisering8 min lezen

PostHog instellen
voor product analytics zonder data scientist.

Eén vraag, volledig beantwoord: welke events zet je als eerste in PostHog voor een B2B-SaaS, en hoe bouw je daar een activatie-funnel op die je durft te laten zien. Inclusief de fouten die in de meting zelf zitten en de dingen die je beter niet meet.

Lifecycle-trechter met conversie-percentages
EVENTS · FUNNELS · ACTIVATIEMARKETINGAUTOMATISERING · PostHog instellen
Q1PostHog of Mixpanel?+
Ze meten hetzelfde soort gebeurtenissen. PostHog zet product-analytics, session replay, feature flags en experimenten in hetzelfde account en heeft een EU-regio. Mixpanel is sterker in rapportagelagen voor grotere analyseteams. Voor een klein SaaS-team weegt dat eerste doorgaans zwaarder dan dat laatste.
Q2Waar begin ik als er nog niets staat?+
Met zeven events op papier, vóór je iets in code zet. De naamgeving vastleggen kost een half uur en scheelt later het herbouwen van elk dashboard.

Verdieping

Welke events definieer je als eerste

Een event is een gebeurtenis met een tijdstip, een persoon en een paar eigenschappen. De verleiding is om alles te vangen wat beweegt. Doe dat niet. Een event verdient zijn plek als er een beslissing van afhangt: als het cijfer twee keer zo hoog of twee keer zo laag zou zijn, zou je dan iets anders doen? Voor een B2B-SaaS blijven er dan ongeveer zeven over.

Spreek eerst één schrijfwijze af en wijk daar niet van af: eerst het object, dan de handeling, in de verleden tijd, met underscores. Dus workspace_created, niet Create Workspace en niet createWorkspace. PostHog corrigeert je naamgeving niet. Twee schrijfwijzen worden twee losse events, en dat merk je pas als een funnel op nul staat.

Event: wat er gebeurde (invite_sent). Property: de context bij die gebeurtenis (rol: beheerder). Person: de gebruiker aan wie PostHog de events hangt, via een distinct_id. Group: het bedrijf waar die gebruiker bij hoort. In B2B is het bedrijf vaak de eenheid die telt, niet de losse gebruiker.

EventWaar je hem vuurtPropertiesWaarvoor
signup_completedServer, nadat het account echt is weggeschrevenbron, plan, via_uitnodigingInstroom en de eerste funnelstap
workspace_createdServer, bij het aanmakenvia_sjabloonDe eerste stap van de inrichting
data_connectedServer, na een geslaagde testaanroep van de koppelingintegratieVaak de echte activatiestap
teammate_invitedServer, bij de verzonden uitnodigingaantalSignaal dat het geen eenmansaccount blijft
invite_acceptedServer, bij het aangemaakte tweede accountdagen_na_uitnodigingVerspreiding binnen het bedrijf
rapport_gepubliceerdServer, bij de succesresponsduur, bronJouw kernhandeling: noem hem naar je eigen product
subscription_startedServer, vanuit de webhook van Stripeplan, intervalOmzet naast gedrag leggen

Twee regels bij het vuren. Eén: vuur op de plek waar je weet dat het gelukt is. Een klik op "Opslaan" is geen opgeslagen rapport, de succesrespons van je eigen API wel. Twee: vuur server-side waar dat kan. Wat vanuit de browser vertrekt wordt door adblockers en tracking-preventie deels tegengehouden, en dat verlies is niet gelijk verdeeld over je gebruikers.

Koppel de gebruiker aan zijn persoon zodra hij inlogt, en zet het bedrijf er als group bij. Zonder dat laatste kun je in B2B alleen vragen beantwoorden die met "hoeveel gebruikers" beginnen, en niet die met "hoeveel klanten" beginnen. Group analytics zit niet in elke laag van PostHog, dus controleer dat vóór je je meetplan erop bouwt.

De activatie-funnel opzetten

Activatie is geen standaardstatistiek maar een keuze die jij maakt. Schrijf hem op als één zin, met een handeling en een tijdvenster: "een werkruimte is geactiveerd als er binnen zeven dagen een koppeling draait en één rapport is gepubliceerd." Zonder die zin betekent het percentage elk kwartaal iets anders.

1Insight aanmaken+
Product analytics, dan Insights, dan New insight, dan het type Funnel. Je begint met een leeg diagram waarin je stap voor stap events kiest.
2Stappen kiezen+
Maximaal vier: signup_completed, workspace_created, data_connected, je kernhandeling. Laat stappen weg die iedereen sowieso passeert, want die verbergen waar het echt misgaat.
3Tijdvenster zetten+
Zet het conversion window op de periode uit je definitie, bijvoorbeeld zeven dagen. Standaard staat er een ruimere periode; daardoor tilt iemand die na drie weken alsnog iets doet je activatiecijfer op.
4Uitsplitsen+
Zet Breakdown aan op de eigenschap die je keuze stuurt: bron, plan, of het bedrijf als je group analytics gebruikt. De funnel zonder uitsplitsing zegt dát er iets misgaat, de uitsplitsing zegt bij wie.
5Doorklikken naar personen+
Elke stap is klikbaar en geeft je de lijst mensen die daar bleven steken. Bel er vijf. Vijf gesprekken verklaren meer dan het dashboard eronder.

Zet er twee insights naast en niet meer: een retention-weergave (komen ze terug na die eerste week) en een trend op je kernhandeling per week. Een dashboard met tien grafieken leest niemand, ook jijzelf niet.

De opgeschreven definitie voor activatie
Een activatiecijfer zonder opgeschreven definitie is geen cijfer maar een stemming. Eén zin, met een handeling en een tijdvenster, vastgelegd op dezelfde plek als je code. Verandert de definitie, dan noteer je de datum erbij en vergelijk je niet meer over dat punt heen.
Toets het zo: kan iemand anders uit je team met alleen die zin dezelfde funnel opnieuw bouwen? Zo nee, dan is de definitie nog niet af.

Waar het in de meting zelf misgaat

De meeste vreemde uitkomsten komen niet doordat gebruikers zich anders gedragen, maar doordat de meting stuk is. Loop deze lijst langs voordat je iets concludeert.

Wat je beter niet meet

  • Autocapture als basis voor je funnel. Prima om rond te kijken, ongeschikt als fundament: je meet dan hoe je knoppen heten in plaats van wat er gebeurde.
  • Scrolldiepte en elke muisklik. Kost opslag, levert zelden een beslissing op.
  • Totalen zonder noemer. "Aantal events deze maand" stijgt vanzelf zodra je meer gebruikers hebt en zegt op zichzelf niets.
  • Percentages op een handvol mensen. Met een paar personen per stap noem je aantallen, geen procenten, anders praat je over ruis.
  • Omzet als waarheid in PostHog. De waarheid over geld staat in je facturatiesysteem. Stuur hooguit het abonnementsevent mee, zodat je gedrag en plan naast elkaar ziet.
  • Alles "voor het geval dat". Elk event dat niemand kan uitleggen wordt over drie maanden verkeerd geïnterpreteerd.

PostHog naast GA4 en je eigen database

PostHog beantwoordt vragen over gedrag in je product. GA4 beantwoordt vragen over de kanalen ervoor en is de plek waar Google Ads zijn conversies vandaan haalt. Je eigen database beantwoordt vragen over geld. Die drie in één systeem willen persen is de duurste manier om alsnog niets te weten. Voor de marketingkant: GA4 instellen voor een SaaS.

Twee dingen controleer je bij de bron, omdat ze verschuiven en dit stuk ze niet actueel kan houden. Eén: waar de gratis laag ophoudt en wat daarboven per event of per opname gerekend wordt. Twee: hoe je aan de EU-kant blijft. PostHog heeft een EU-regio; zelf hosten kan met de open-source versie, maar PostHog stuurt teams zelf richting hun cloud, dus zelf hosten is een bewuste keuze met eigen beheerkosten. Beide staan in hun eigen documentatie en op hun prijspagina, en dat is de enige bron die klopt op de dag dat je kiest.

Veelgestelde vragen

Q1Hoeveel events heb ik nodig om te beginnen?+
Vijf tot tien die samen de reis beschrijven, van aanmelden tot de handeling waar je product om draait. Meer events maken de eerste maand niet slimmer, alleen rommeliger.
Q2Client-side of server-side vuren?+
Server-side voor alles wat je server weet: aanmeldingen, koppelingen, abonnementen. Client-side alleen voor wat alleen de browser weet, bijvoorbeeld of iemand een paneel opende. Zo blijft je funnel overeind als een deel van de browser-events wordt tegengehouden.
Q3Ik heb al een halfjaar verkeerd benoemde events. Hernoemen?+
Niet met terugwerkende kracht. Introduceer de nieuwe naam, laat beide een paar weken naast elkaar lopen, zet je insights om en stop daarna met de oude. Je geschiedenis blijft zoals hij is vastgelegd, en dat is maar goed ook.
Q4Hoe houd je dit bij met een klein team?+
Zet de eventlijst als bestand in je repository, naast de code die ze vuurt. Eén eigenaar, en bij elke release de vraag: verandert dit een event? Dat is de hele governance die je in het begin nodig hebt.
Q5Hoe zit het met de AVG?+
Zet geen namen, e-mailadressen of vrije invoervelden in je event-properties; een intern id is genoeg. Kies de EU-regio, spreek een bewaartermijn af en leg vast hoe iemand verwijderd wordt uit je database én uit je analytics. Of en waarvoor je toestemming nodig hebt, hangt af van hoe je het instelt en van welke opslag je in de browser gebruikt. Laat die keuze nakijken door iemand die daarvoor is.

Hoe we dit in een project opzetten

Het begint bij ons met een bestand van één pagina: de zeven events, hun eigenschappen, en de plek in de code waar ze gevuurd worden. Dat bestand staat in dezelfde repository als het product, zodat een wijziging in de meting door dezelfde review gaat als een wijziging in de code. Daarna één pull request die de capture-aanroepen toevoegt, een apart project voor staging, en twee weken later een half uur met het team om te kijken welke van de zeven niemand gebruikt. Die halen we eruit.

Wat we niet doen is een dashboard opleveren met cijfers waar niemand een beslissing aan hangt. Wil je dit voor je eigen product laten opzetten, dan staat op de pagina over marketingautomatisering wat dat inhoudt en hoe de prijs tot stand komt.

Van lezen naar bouwen

Speelt dit bij jou?
Dan is dit de volgende stap.

Lifecycle-flows, lead-scoring en attributie die leads opvolgen terwijl je slaapt 2–4 weken, vaste prijs na een gratis gesprek. 45 minuten, gratis. Eerstvolgende start: Q4 2026.

01Reactie binnen 24 uur
02Vaste offerte binnen 48 uur
03C-02 · Marketing-automatisering