16 Sep 2026
Een scan is een webverzoek, en een webverzoek praat
Een statische QR-code bevat de bestemming zelf, dus bij het scannen komt er geen server aan te pas. Een dynamische code bevat een korte URL, zoals qreu.eu/x7k2, en de telefoon vraagt die URL op bij een redirectserver, die antwoordt met de echte bestemming. QR-code scans bijhouden gebeurt volledig in dat ene verzoek. De code, het papier en de camera voegen niets toe; alles komt uit wat een telefoon meestuurt als hij een server om een pagina vraagt.
Neem een flyer van een bakkerij in Gent. Een klant richt de camera op de code, tikt op de melding, en gedurende ongeveer honderd milliseconden wisselen haar telefoon en de redirectserver een handvol headers uit. Daarna belandt ze op de bestelpagina van de bakkerij en is de redirectserver uit beeld. Wat er in die headers zat, bepaalt wat de bakkerij kan leren.
Wat een scan naar de redirectserver stuurt
Een HTTP-verzoek voor een korte URL bevat grofweg vijf dingen die een redirectserver kan gebruiken. Het IP-adres van de telefoon, of van het netwerk waarop hij zit, komt mee met de verbinding zelf. De User-Agent-header noemt de browser, het besturingssysteem en vaak de apparaatfamilie. De Accept-Language-header somt de talen op waarop de telefoon is ingesteld. De server noteert het tijdstip waarop het verzoek binnenkwam. Een Referer-header ontbreekt meestal bij een QR-scan, omdat de camera-app de URL rechtstreeks opent en niet vanaf een webpagina, wat op zichzelf een klein signaal is dat het bezoek uit een scan kwam.
Dat is het hele ruwe materiaal. Er zit geen naam in, geen e-mailadres, geen telefoonnummer en geen locatie buiten wat het IP-adres impliceert. Een dashboard dat beweert meer te weten, heeft de bezoeker erom gevraagd, een cookie gezet of een script van derden op de landingspagina geladen. Dat zijn keuzes, geen eigenschappen van de QR-code.
Wat dat in een dashboard wordt
Elke header wordt een vertrouwde grafiek. Het IP-adres wordt opgezocht in een geolocatiedatabase en wordt een land, soms een regio of stad. De User-Agent wordt apparaattype, besturingssysteem en browser. Accept-Language wordt een taalverdeling, wat in een toeristisch gebied vaak nuttiger is dan het land: de bakkerij ziet misschien 40 procent Franse en 25 procent Engelse scans op een flyer in een hotellobby. Het tijdstip wordt de tijdreeks die de piek van de zaterdagmarkt laat zien.
De stap die ertoe doet, komt daarvóór: bewaart de server het ruwe verzoek, of alleen de afgeleide tellingen? Een server die elke verzoekregel met IP-adres opslaat, houdt een logboek van identificeerbare bezoeken bij. Een server die "België, Android, Nederlands, zaterdag 11:00" met één ophoogt en het verzoek weggooit, houdt een tabel met getallen bij. Beide leveren dezelfde grafieken. Maar één van de twee bewaart persoonsgegevens.
Waarom een IP-adres een persoonsgegeven is
Dat onderscheid telt omdat het IP-adres in de EU een persoonsgegeven is, ook als het dynamisch is en ook als de websitebeheerder de persoon niet zelf kan identificeren. Het Hof van Justitie van de Europese Unie oordeelde in zaak C-582/14, Breyer tegen Duitsland, op 19 oktober 2016 dat een dynamisch IP-adres dat een websitebeheerder registreert een persoonsgegeven is ten opzichte van die beheerder, als hij over wettige middelen beschikt om de bezoeker te identificeren met hulp van aanvullende informatie bij de internetprovider. Dat is persbericht 112/16, en die redenering heeft sindsdien elke Europese discussie over analytics gevormd.
Het praktische gevolg: een scanlog met IP-adressen is een bestand met persoonsgegevens, met alles wat daarbij hoort, waaronder bewaartermijnen, een grondslag en een plek in uw verwerkingsregister. Een teltabel zonder IP-adressen is dat niet. De juridische checklist voor QR-campagnes staat in onze AVG-gids voor QR-codes; dit artikel blijft aan de technische kant van die lijn. Dit is geen juridisch advies.
De Franse toezichthouder biedt een nuttig ijkpunt voor hoe een tool die alleen telt eruitziet. De CNIL-pagina over tools voor publieksmeting die van toestemming vrijgesteld kunnen zijn noemt de voorwaarden: de tool wordt strikt voor publieksmeting gebruikt, levert alleen anonieme statistieken op, volgt een persoon niet over verschillende sites of apps, en koppelt de gegevens niet aan andere verwerkingen of geeft niet-anonieme gegevens niet door aan derden. Lees die vier voorwaarden als een technische specificatie en u heeft het ontwerp voor cookievrij QR-code scans bijhouden.
Tellen tegenover herkennen: de lijn die ertoe doet
Elk analyticssysteem staat aan één kant van een simpele lijn. Tellen beantwoordt "hoeveel scans kwamen zaterdag uit België". Herkennen beantwoordt "is dit dezelfde telefoon die dinsdag de poster scande". Herkennen is waar een cookie voor dient: een kleine identifier op het apparaat, zodat het tweede bezoek aan het eerste kan worden gekoppeld. Het is ook wat een cookiebanner noodzakelijk maakt, want het opslaan en uitlezen van een identifier op iemands telefoon valt onder de ePrivacy-toestemmingsregels, tenzij het strikt noodzakelijk is voor de dienst waar de gebruiker om vroeg. Een redirect heeft het niet nodig.
De verleiding om te herkennen is echt, want het ontsluit unieke bezoekers, terugkeerpercentages en retargetingdoelgroepen. De prijs is dat elk van die functies de QR-campagne in toestemmingsgebied trekt en een tabel met getallen verandert in een register van mensen. Voor een gedrukte flyer is de vraag of "unieke scanners" een van uw beslissingen zou veranderen. Meestal niet; u zou de flyer toch naar de betere plek verplaatsen.
Hoe EUQR QR-code scans bijhouden zonder cookies mogelijk maakt
De statistieken van EUQR zijn gebouwd om aan de telkant te blijven. De redirect zet geen cookie en slaat geen identifier op de telefoon op, dus er valt bij de redirect niets toe te stemmen. Scangegevens en korte-linkgegevens worden in Amsterdam gehost. EUQR slaat nooit ruwe IP-adressen op: land en apparaat worden op het moment van het verzoek afgeleid en alleen de geaggregeerde tellingen blijven bewaard. De statistieken komen uit privacyvriendelijke hashes die dagelijks roteren. In de praktijk betekent dat dat de hash niet naar een adres is terug te rekenen en de volgende dag niet meer met dezelfde telefoon overeenkomt, zodat het systeem tellingen van één dag zinnig kan houden zonder ooit te kunnen zeggen wie er scande.
Het resultaat aan uw kant is een dashboard met scans per dynamische QR-code en klikken per korte link, als tijdreeks en uitgesplitst naar land, apparaat, browser en taal, altijd als geaggregeerde tellingen. Omdat de redirect geen cookie zet en geen tracker van derden laadt, hebben uw eigen landingspagina's vanwege de QR-code geen cookiebanner nodig. Of uw pagina er om andere redenen een nodig heeft, zoals een Google Analytics-tag of een ingesloten video, is een aparte vraag over uw pagina, en de AVG-vriendelijke generator legt uit waar die lijn loopt.
Wat u opgeeft, en waarom printcampagnes het zelden missen
Eerlijkheid over de afweging hoort bij het ontwerp. Cookievrije scanstatistieken kunnen geen individuele scanpaden tonen, kunnen niet zeggen dat één persoon drie verschillende codes scande, kunnen geen retargetingdoelgroep opbouwen en kunnen een aankoop twee weken later niet aan een specifieke scan toeschrijven. Als uw bedrijfsmodel van een van die zaken afhangt, heeft u tracking met toestemming op de landingspagina zelf nodig, en dat is een beslissing voor uw privacyfunctionaris, niet voor een QR-tool.
Voor de meeste printcampagnes is geen van die zaken de vraag die wordt gesteld. De bakkerij wil weten of de hotelflyer of de marktflyer werkt, welke taal ze de volgende keer moet drukken, en of de zaterdagpiek een tweede oplage rechtvaardigt. Tellingen per plek beantwoorden alle drie. Wat de tellingen niet kunnen, is van één anonieme bezoeker een bekende klant maken, en voor papier is dat meestal de juiste beperking om te aanvaarden.
Scans lezen per code en per plek
De gewoonte die tellingen in beslissingen omzet, is één code per plek. De bakkerij drukt één code voor de hotellobby, één voor de marktkraam en één voor de etalage, alle drie naar dezelfde bestelpagina. Nu vergelijkt het dashboard de plekken rechtstreeks: hotel 412 scans, markt 1.180, etalage 96. Combineer dat met de taalverdeling en de tijdreeks en u heeft een printbaar rapport waar geen cookie en geen toestemming aan te pas kwam.
De bewaartermijn volgt uw plan: 30 dagen statistieken op Starter, 90 dagen op Pro, 365 dagen op Business en 730 dagen op Agency, met geaggregeerde totalen die altijd bewaard blijven. CSV-export is beschikbaar vanaf Pro, dus een maandelijks uittreksel kan zo lang als u wilt in uw eigen spreadsheet leven. Planlimieten en prijzen staan op de prijzenpagina, met onbeperkt scans op elk plan, zodat een campagne die beter loopt dan verwacht niets extra kost om te meten.
Veelgestelde vragen
Welke gegevens stuurt een QR-scan eigenlijk mee?
Is een IP-adres in de EU een persoonsgegeven?
Kunt u QR-code scans bijhouden zonder cookies?
Heb ik een cookiebanner nodig voor een QR-campagne?
Wat kunnen cookievrije statistieken mij niet vertellen?
Tel scans zonder cookies
Maak een dynamische QR-code, druk hem af en lees scans per code, land, apparaat en taal in uw dashboard. Geen ruwe IP-adressen opgeslagen, gehost in Amsterdam, vanaf €0,99 per maand.
Maak een dynamische QR-code