jem-id
Terug
tech blog

Achter de schermen van een statistiekenpagina

Auteur
Gepost op 07 mei 2026
door Bram Vermeer (back-end developer)

In onze webapplicatie HortiHeat hebben we iets nieuws gelanceerd, het ‘Lookbook’. Een openbare webpagina waarop kwekers hun volledige assortiment overzichtelijk kunnen presenteren. Met een paar klikken halen ze eenvoudig collecties en producten op uit Floriday om het lookbook te vullen of richten ze de pagina handmatig in.

Maar we wilden meer bieden dan alleen een mooie etalage voor producten. Want hoe waardevol is zo’n pagina zonder inzicht in wat er gebeurt? Daarom voegden we statistieken toe. De kweker kan zo inzien welke categorieën en producten populair zijn, uit welke landen de bezoekers komen, hoeveel mensen het lookbook bekijken en meer.

In deze blog nemen we je mee in de technische keuzes die wij maakten.


Welke data willen we laten zien?

We zochten naar de meest praktische, snelle en toekomstbestendige manier om statistieken inzichtelijk te maken. Maar voordat zij een techniek konden kiezen, bepaalden we eerst wat we de kweker wilden laten zien.

Het is verleidelijk om zo veel mogelijk data te delen. Hoe meer data, hoe beter. Maar veel data brengt ook risico’s met zich mee. Veel cijfers en grafieken maken het al snel onoverzichtelijk. Als een kweker moet zoeken naar wat écht belangrijk is, dan haakt hij sneller af. Daarom maakten we bewust keuzes en focusten we ons op statistieken die direct duidelijk zijn. Statistieken waar de kweker meteen op kan inspelen.

We kwamen tot het volgende lijstje met statistieken: 

  • Het aantal bezoeken van het lookbook
  • Het aantal unieke bezoekers (bezoekers die voor het eerst het lookbook bezoeken)
  • Het land van herkomst van bezoekers
  • Het aantal dagelijkse bezoeken en het aantal unieke bezoekers van die dag
  • De best bekeken categorieën en artikelen
  • Bezoekers die doorklikken vanuit prijslijsten

In de toekomst willen we deze statistieken wellicht verder uitbreiden als dat wenselijk is voor de kweker.

Tekst gaat verder onder afbeelding

Keuze voor de tool

Na wat onderzoek kozen we voor de tool Matomo voor het verzamelen van statistieken. Deze tool heeft een eigen API, waarmee we de data eenvoudig kunnen ophalen. Daarnaast kunnen we Matomo zelf hosten in onze eigen omgeving, waardoor we geen extra cloudkosten kwijt zijn en de data via deze tool in eigen beheer kan blijven. Bovendien is er een AVG-functionaliteit standaard in de tool gebouwd. Matomo is flexibel, hierdoor kunnen we onze eigen invulling geven aan functionaliteiten. Zo kunnen we bijvoorbeeld toestemming vragen aan gebruikers voor het verzamelen van gegevens en specifieke data bijhouden, zoals bezoeken aan artikelen en categorieën. 

Zelf een systeem bouwen kost veel tijd, terwijl Motomo het wiel al heeft uitgevonden. De keuze was daarom snel gemaakt. 

Hoe hebben we het gemaakt?

Vanuit het lookbook worden er statistieken gepusht naar Matomo. Zoals paginaweergaves, herkomst van de gebruikers, het aantal gebruikers en meer. Matomo verzamelt deze gegevens en slaat ze op in een eigen database. De Matomo instantie hosten wij zelf in onze cloudomgeving, waardoor we alles in eigen beheer houden. De instantie heeft ook een eigen API waarmee wij de data op kunnen halen uit Matomo. Deze API bevragen wij vanuit de HortiHeat back-end via achtergrondprocessen. Elke 30 minuten halen deze processen nieuwe data op bij Matomo. De data die wij ophalen, slaan we op in onze eigen HortiHeat database. Hiervan maken wij een model van dat past in onze structuur en bij wat we ermee willen doen. Door het in onze eigen database met eigen modellen op te slaan, blijven we flexibel en kunnen we altijd van tool wisselen. Zelf hosten wij ook een API met alle functionaliteiten die HortiHeat nodig heeft. Deze API biedt de front-end (het HortiHeat-dashboard voor kwekers) endpoints om data op te halen. We geven modellen terug die aansluiten bij wat we willen tonen. De front-end vertaalt deze data vervolgens naar staafdiagrammen en een kaartweergave. 

Belangrijk om te weten: De statistieken worden uiteraard alleen bijgehouden wanneer de gebruiker daar toestemming voor geeft.

Tekst gaat verder onder afbeelding

En hoe nu verder?

De statistiekenpagina is inmiddels in gebruik en we krijgen veel positieve reacties. Hoe we in de toekomst de verzamelde data beheren, hebben we nog niet bepaald. We denken nu na over de juiste manier om hiermee om te gaan. Want als je oneindig data opslaat, loopt de database langzaam vol en gaat de performance van de pagina achteruit. 

We zouden kunnen kiezen voor dataretentie. Daarbij bewaren we data voor een vaste periode, bijvoorbeeld twee jaar. Data ouder dan die periode verwijderen we. Zo blijft de database beheerbaar en de statistiekenpagina snel, omdat queries minder data doorzoeken. Het nadeel is dat data definitief verdwijnt. Kwekers kunnen dan niet verder terugkijken dan deze periode. 

Een andere optie is een archiefstructuur in de database door middel van een extra tabel waarin alle data ouder dan 2 jaar terechtkomt. De actuele tabel blijft hierdoor klein, waardoor queries snel blijven. De performance van de statistiekenpagina blijft daardoor stabiel. Daarnaast blijven historische data beschikbaar en kunnen we die altijd ophalen uit de extra tabel. Het nadeel hiervan is dat de extra tabel na verloop van tijd wel achteruit gaat in performance omdat er heel veel records in komen. Ook kunnen we deze data niet eeuwig bewaren in deze extra tabel, want dan loopt onze database alsnog langzaam vol. 

Er blijft dus nog genoeg te onderzoeken en de komende tijd gaan onze developers verder ontwikkelen aan het lookbook. Wat ze precies ontwikkelen lees je hier