Gratis abonnement, geen creditcard nodigDynamische QR-codes die je na het printen kunt aanpassenGDPR-conforme scananalysesGemaakt voor bureaus, freelancers en interne teamsGratis abonnement, geen creditcard nodigDynamische QR-codes die je na het printen kunt aanpassenGDPR-conforme scananalysesGemaakt voor bureaus, freelancers en interne teamsGratis abonnement, geen creditcard nodigDynamische QR-codes die je na het printen kunt aanpassenGDPR-conforme scananalysesGemaakt voor bureaus, freelancers en interne teamsGratis abonnement, geen creditcard nodigDynamische QR-codes die je na het printen kunt aanpassenGDPR-conforme scananalysesGemaakt voor bureaus, freelancers en interne teams
Alle artikelen
Een QR-code met een UTM-tag waarvan het verkeer naar een eigen QR-kanaal in Google Analytics 4 wordt geleid.
Stappenplan

QR-codes tracken in Google Analytics 4 met UTM-parameters

QR-scans verschijnen als 'direct' of 'Niet-toegewezen' in GA4. Leer hoe je bestemmings-URL's tagt met UTM-parameters en een aangepaste kanaalgroep maakt zodat je scanverkeer in een eigen QR-kanaal terechtkomt, ook met terugwerkende kracht.

ScanKit

ScanKit · Organization

· 17 min. leestijd

Je drukt 5.000 flyers voor een klant, elk met een QR-code die naar een campagnelandingspagina verwijst. De flyers gaan de deur uit, de scans beginnen binnen te komen, en een week later stelt de klant de voor de hand liggende vraag: hoeveel van de mensen die de flyer hebben gescand, kwamen daadwerkelijk op de site terecht? Je opent Google Analytics 4, en het antwoord is ofwel nutteloos ofwel ronduit misleidend. Het QR-verkeer staat onder "Direct", alsof die bezoekers de URL uit hun hoofd hebben ingetikt, of het is verdwenen in een bak die "Niet-toegewezen" heet.

Dit is veruit de meest voorkomende manier waarop QR-rapportage misgaat, en het is geen fout van Google Analytics. GA4 is simpelweg nooit verteld dat het bezoek van een flyer kwam. QR-scans komen binnen zonder de kruimels die GA4 normaal gebruikt om een bron toe te kennen, dus tenzij je die kruimels zelf toevoegt, doet het platform het enige wat het kan en bestempelt het verkeer als direct. De oplossing is een klein, precies stukje campagnetagging, plus één instelling die de meeste handleidingen nooit noemen. Dit artikel behandelt beide, en het sluit naadloos aan op onze gids over hoe je een printcampagne met QR-codes bijhoudt en de diepgaandere uitleg over QR-code-analytics.

Waarom QR-scans als "direct" (of "Niet-toegewezen") verschijnen

GA4 bepaalt op een van twee manieren waar een bezoek vandaan komt. Het leest de verwijzer, oftewel de site waar de bezoeker vlak daarvoor was, of het leest campagneparameters die je aan de bestemmings-URL hebt toegevoegd. Een QR-scan geeft het meestal geen van beide. Wanneer iemand de camera van een telefoon op een code richt, stuurt de browser die opent vaak helemaal geen verwijzer mee, dus GA4 heeft geen site om toe te kennen. Zonder verwijzer en zonder campagnetags registreert GA4 de sessiebron als (direct) en het medium als (none), en zijn standaardregels zetten dat onder het Direct-kanaal. Volgens Googles eigen definitie is het Direct-kanaal precies het geval waarin de bron overeenkomt met (direct) en het medium (not set) of (none) is. Dat is jouw QR-verkeer, verkeerd gelabeld als mensen die uit het niets zijn opgedoken.

De instinctieve oplossing is om de URL te taggen met iets als utm_medium=qr. Dat lost het directe probleem inderdaad op, want bron en medium worden nu correct ingevuld. Maar het creëert stilletjes een tweede probleem. GA4 sorteert verkeer in kanalen met een vaste set regels, en geen enkele daarvan herkent een medium dat qr heet. De standaardinstellingen zoeken naar organic, cpc, email, affiliate, referral, audio en een handvol andere, teken voor teken vergeleken. Een medium qr komt met geen daarvan overeen, dus GA4 valt terug op zijn vangnet en bestempelt het verkeer als Niet-toegewezen (Unassigned). Met andere woorden: taggen met utm_medium=qr lost het "direct"-probleem op en creëert een "Niet-toegewezen"-probleem, want qr is een waarde die jij hebt verzonnen en die GA4's standaardinstellingen nog nooit hebben gezien.

Beide helften zijn op te lossen, en de rest van deze gids doet precies dat: tag de URL goed zodat de data klopt, en leer GA4 vervolgens wat jouw QR-medium betekent zodat het niet langer in Niet-toegewezen belandt.

Waarom de verwijzer je op mobiel niet kan redden

Het is verleidelijk om aan te nemen dat de telefoon genoeg informatie doorgeeft om de bron te identificeren. Meestal doet hij dat niet. De verwijzings- en organische attributie van GA4 zijn afhankelijk van de HTTP-verwijzerheader, en native camera-apps en in-app-browsers sturen om privacyredenen vaak geen verwijzer mee, of strippen die tot niets. Wanneer de verwijzer ontbreekt, heeft GA4 niets om te vergelijken met zijn lijsten van bekende sites, dus valt het bezoek terug op direct. Dit is de kern van waarom offline tracking verschilt van webtracking: je kunt niet op de verwijzer leunen, dus moet je de broninformatie in de bestemmings-URL zelf zetten. Dat is precies wat campagnetags doen, en de reden waarom ze een scan overleven terwijl een verwijzer dat niet doet.

De anatomie van een getagde QR-bestemmings-URL

Campagnetags, bijna altijd UTM-parameters genoemd, zijn sleutel-waardeparen die je achter een ? aan een URL plakt. Googles advies is om er altijd drie op te nemen: utm_source, utm_medium en utm_campaign. Source is waar het bezoek vandaan komt, medium is het type kanaal, en campaign is het initiatief waar het bij hoort. Voor een QR-code op de flyer van een klant ziet een nette getagde bestemming er zo uit:

https://clientsite.com/offer?utm_source=flyer&utm_medium=qr&utm_campaign=acme_spring

Diagram dat de anatomie van een met UTM getagde bestemmings-URL toont, met source, medium en campaign uitgelicht achter het vraagteken.
De opbouw van een getagde QR-bestemmings-URL: basispagina plus utm_source, utm_medium en utm_campaign.

De genummerde onderdelen van die URL zijn als volgt op te splitsen:

  1. De basisbestemming, de pagina waar de bezoeker daadwerkelijk op moet landen. Alles erachter is trackingmetadata die GA4 leest en vervolgens voor de bezoeker verbergt.
  2. utm_source, de specifieke plaatsing of asset. Gebruik het fysieke ding waar de code op staat, zoals flyer, poster of packaging_insert, zodat je plaatsingen later uit elkaar kunt houden.
  3. utm_medium, het kanaaltype. Voor QR is dit de waarde die je standaardiseert, meestal qr.
  4. utm_campaign, het klantinitiatief waar de code bij hoort, bijvoorbeeld acme_spring. Houd één naam per campagne aan over alle plaatsingen heen, zodat de rapportage klopt.
  5. utm_content, een optionele tag om twee versies van dezelfde plaatsing uit elkaar te houden, zoals doordrop_a tegenover doordrop_b in een A/B-test.

Twee andere parameters zijn de moeite waard om te kennen. utm_id laat je een campagne-identifier meegeven die het verkeer koppelt aan een record in je eigen systemen, en utm_term draagt een zoekwoord voor betaalde zoekadvertenties, wat zelden van toepassing is op een gedrukte code. Let op: utm_creative_format en utm_marketing_tactic bestaan in Googles specificatie, maar worden niet getoond in GA4-rapporten, dus beloof een klant er geen kolom voor.

Eén detail laat meer campagnes struikelen dan welk ander dan ook: parameterwaarden zijn hoofdlettergevoelig. Voor GA4 zijn qr en QR twee verschillende media die je verkeer over twee rijen splitsen die nooit met elkaar in overeenstemming komen. Kies één schrijfwijze, houd hem in kleine letters, vermijd spaties, en leg je taxonomie vast zodat iedereen in het team codes op dezelfde manier tagt.

utm_medium kiezen voor QR: qr, offline of print?

Er bestaat een al lang slepende discussie over de vraag of het medium voor een gescande code qr, offline of print moet zijn. Het eerlijke antwoord is dat het nauwelijks uitmaakt welk woord je kiest, want geen van de drie komt overeen met een GA4-standaardkanaal. Wat je ook kiest, GA4 parkeert het in Niet-toegewezen totdat je het anders vertelt, dus kies op basis van duidelijkheid en niet op basis van een of andere ingebeelde ingebouwde ondersteuning.

Mijn aanbeveling is om utm_medium=qr je standaard te maken, omdat het het daadwerkelijke mechanisme beschrijft, een gescande code, in plaats van de brede familie print. Draag het oppervlaktedetail vervolgens in utm_source: flyer, poster, packaging_insert, tradeshow_banner, table_tent. Die splitsing geeft je één consistent medium om op te groeperen, en een brondimensie die rijk genoeg is om afzonderlijke plaatsingen te vergelijken. Als je qr liever voor iets anders reserveert, is offline een verdedigbaar alternatief, maar verbind je aan één en documenteer het. De snelste manier om een kwartaal aan rapportage te verpesten, is door drie mensen dezelfde campagne te laten taggen als qr, QR en print.

Leer GA4 jouw QR-kanaal met een aangepaste kanaalgroep

Hier komt de stap die bijna elke andere handleiding overslaat. Om te voorkomen dat je QR-verkeer in Niet-toegewezen belandt, maak je in GA4 een aangepaste kanaalgroep aan die jouw medium herkent. Ga in Beheer, onder Gegevensweergave, naar Kanaalgroepen. Je hebt minimaal de rol Bewerker of hoger nodig op property-niveau. Je kunt de standaardgroep niet bewerken, dus kopieer hem en voeg vervolgens bovenaan een nieuwe regel toe: stel de kanaalnaam in op QR met een voorwaarde dat het sessiemedium exact overeenkomt met qr. Sla het op, en vanaf dat moment rapporteert elke code die getagd is met utm_medium=qr onder een schoon QR-kanaal in plaats van in het vangnet.

Twee dingen maken dit beter dan het in eerste instantie klinkt. Aangepaste kanaalgroepen werken met terugwerkende kracht, dus GA4 verwerkt je historische data opnieuw in de nieuwe groepering in plaats van pas vanaf vandaag te tellen. En de limieten zijn ruim genoeg voor bureauwerk: een standaardproperty staat twee aangepaste kanaalgroepen toe naast de standaardgroep, en een Google Analytics 360-property staat er vijf toe. Eén QR-kanaalregel, één keer per klantproperty gedefinieerd, en het Niet-toegewezen-probleem is voorgoed verholpen.

Zorg dat de tags daadwerkelijk aankomen: redirects en verkorters

Het taggen van de URL helpt alleen als de tags de reis naar de landingspagina overleven, en hier hebben dynamische QR-codes een scherp oog nodig. Een redirect draagt je querystring alleen mee als de redirectbestemming die bevat. Een 301- of 302-respons stuurt de browser naar het adres dat in de Location-header staat en niets meer; het plakt de oorspronkelijke ?utm_...-string er niet automatisch weer aan. Een goed gebouwde dynamische code stuurt de bezoeker rechtstreeks door naar je volledige getagde URL, zodat de parameters intact aankomen. Een slordige code, of een externe linkverkorter die er bovenop is gestapeld, kan ze laten vallen of overschrijven, en elke extra tussenstap is weer een kans dat de tags eraf vallen.

Dit is ook waar een dynamische code zijn waarde bewijst. Met ScanKit codeert de gedrukte code een korte link zoals scankit.app/r/your-slug, en wordt de scan doorgestuurd naar de bestemmings-URL die jij hebt ingesteld. Zet de volledige, met UTM getagde URL in dat bestemmingsveld en elke scanner landt erop met de tags op hun plek. Omdat de bestemming bewerkbaar is, is een typefout in utm_campaign een klusje van dertig seconden in plaats van een herdruk, wat het hele argument is voor de bestemming van een code wijzigen zonder opnieuw te drukken en het bredere pleidooi voor dynamische boven statische codes. Een statische code bakt de tags voor altijd in de inkt; een dynamische houdt ze onder jouw controle.

Controleer de keten voordat ook maar één flyer naar de drukker gaat. Open de DevTools van je browser, ga naar de Netwerk-tab, scan of open de korte link van de code, en bekijk het uiteindelijke landingsverzoek. De URL daarvan zou nog steeds je utm_-parameters moeten bevatten. Als ze zijn verdwenen, heeft een redirectstap ze gestript, en heb je het opgemerkt terwijl het nog gratis te repareren is.

QR-verkeer aflezen in GA4

Zodra de codes getagd zijn en de kanaalgroep op zijn plek staat, staat de data waar je hem zou verwachten. Open Rapporten, dan Acquisitie, dan Verkeersacquisitie, en zet de dimensie op Sessiebron/-medium of Sessiecampagne. Je QR-rijen verschijnen als flyer / qr, poster / qr enzovoort, gegroepeerd onder het QR-kanaal dat je hebt gemaakt. Om te bevestigen dat een code werkt op het moment dat hij live gaat, scan je hem zelf en kijk je hoe het Realtime-rapport het bezoek registreert. Bouw voor klantrapportage een vrije Verkenning met source, medium en campaign als rijen, gefilterd op medium qr, en je hebt een uitsplitsing per plaatsing die je kunt exporteren of inplannen. Voor wat je daar vervolgens daadwerkelijk uit moet rapporteren, behandelt onze QR-code-analyticsgids welke scanstatistieken hun plek in een klantpresentatie verdienen.

Waarom je scantelling en GA4-sessies niet zullen kloppen

Verwacht twee verschillende getallen, en raak niet in paniek als je ze ziet. Je QR-platform telt een scan op het moment van de redirect, voordat de landingspagina is geladen. GA4 telt een sessie pas wanneer de pagina laadt, de tag afvuurt en eventuele vereiste toestemming is gegeven. Dat zijn verschillende punten in de funnel, dus ze meten verschillende dingen. Scantotalen liggen hoger omdat bots en beveiligingsscanners links volgen, browsers pagina's vooraf inladen, en dezelfde persoon twee keer scant voor de zekerheid. Sessietotalen liggen lager omdat sommige bezoekers wegklikken voordat het script draait, sommige analytics volledig blokkeren, en sommige toestemming weigeren. ScanKit logt de scan server-side bij de redirect, en daarom houdt zijn telling stand zelfs wanneer die van GA4 wordt onderdrukt door een adblocker. Behandel het scangetal als blootstelling en het sessiegetal als toegestane, bevestigde landingen, en stem dan de trendlijnen op elkaar af in plaats van een exacte match na te jagen.

Een herhaalbare opzet voor klantcampagnes

Als we het samenvatten, is de workflow die QR-attributie schoon houdt over een portfolio van klanten kort en de moeite waard om te standaardiseren. Houd elke klant in een eigen werkruimte zodat codes, bestemmingen en naamgeving nooit over accounts heen lopen. Spreek één keer een UTM-taxonomie af, met utm_medium=qr vastgelegd, utm_source die de plaatsing beschrijft en utm_campaign die het initiatief benoemt. Voeg de aangepaste QR-kanaalgroep toe aan de GA4-property van elke klant. Test de redirect van elke code in de Netwerk-tab voordat hij naar de drukker gaat. Zet vervolgens elke maand de scantelling en de GA4-sessietelling naast elkaar en leg het verschil uit in plaats van het te verbergen. Doe dat, en "hoeveel mensen hebben de flyer gescand?" wordt een vraag die je met een uitgestreken gezicht kunt beantwoorden.

Veelgestelde vragen

Waarom verschijnt mijn QR-codeverkeer als direct in Google Analytics 4?

Omdat de scan GA4 bereikte zonder verwijzer en zonder campagnetags, dus er was niets om het bezoek aan toe te kennen. Telefooncamera's en in-app-browsers sturen meestal geen verwijzer mee, en een kale bestemmings-URL bevat geen broninformatie, dus registreert GA4 de sessie als (direct) en (none) en zet die onder het Direct-kanaal. Voeg utm_source, utm_medium en utm_campaign toe aan de bestemmings-URL en de bron wordt correct geregistreerd.

Welke UTM-parameters moet een QR-code gebruiken?

Minimaal de drie die Google voor elke campagne-URL aanbeveelt: utm_source, utm_medium en utm_campaign. Voor een QR-code is een praktisch patroon utm_source voor de plaatsing (zoals flyer of poster), utm_medium=qr voor het kanaal, en utm_campaign voor het klantinitiatief. Voeg utm_content toe wanneer je twee versies van dezelfde plaatsing wilt vergelijken, en utm_id om het verkeer aan een campagnerecord te koppelen.

Moet utm_medium qr, offline of print zijn?

Het maakt geen verschil voor GA4's standaardinstellingen, want geen van de drie komt overeen met een ingebouwd kanaal; ze belanden allemaal in Niet-toegewezen totdat je een aangepaste kanaalgroep maakt. Kies voor duidelijkheid en consistentie. De meeste teams standaardiseren op utm_medium=qr en beschrijven het oppervlak in utm_source. Wat je ook kiest, gebruik het overal en houd het in kleine letters, want GA4 behandelt qr en QR als verschillende media.

Waarom verschijnt mijn QR-verkeer als "Niet-toegewezen" in GA4?

Omdat je het hebt getagd met een medium dat GA4's standaardkanaalregels niet herkennen, zoals qr. De standaardinstellingen komen alleen overeen met een vaste set media (organic, cpc, email, referral enzovoort), dus al het andere valt in Niet-toegewezen. Maak een aangepaste kanaalgroep in Beheer, onder Gegevensweergave, met een regel die medium qr koppelt aan een kanaal genaamd QR, en het verkeer wordt opnieuw geclassificeerd, ook historisch.

Houdt GA4 QR-codescans automatisch bij?

Nee. GA4 kent geen begrip van een QR-scan; het ziet altijd alleen een normaal webbezoek aan je landingspagina. Het kan een scan niet onderscheiden van een klik tenzij je het vertelt, en dat is precies wat de campagnetags op de bestemmings-URL doen. De scantelling zelf komt van je QR-platform, niet van GA4.

Kan ik de UTM-tags op een QR-code wijzigen nadat hij is gedrukt?

Alleen als de code dynamisch is. Een statische QR codeert de bestemming, inclusief tags, rechtstreeks in het gedrukte patroon, dus ze wijzigen betekent opnieuw drukken. Een dynamische code codeert in plaats daarvan een korte redirectlink, en de getagde bestemming is een bewerkbare instelling, dus je kunt de UTM-parameters op elk moment corrigeren of bijwerken zonder de vormgeving aan te raken.

Waarom kloppen mijn scantelling en GA4-sessies niet?

Omdat ze verschillende gebeurtenissen op verschillende momenten tellen. Een scan wordt gelogd bij de redirect, voordat de pagina laadt; een GA4-sessie heeft nodig dat de pagina laadt, de tag afvuurt en toestemming wordt gegeven. Scans worden opgeblazen door bots, prefetching en herhaalscans, terwijl sessies worden verminderd door wegklikken, adblockers en geweigerde toestemming. Een verschil is normaal en te verwachten, dus vergelijk de trends in plaats van de absolute totalen.

Overleven UTM-parameters een URL-redirect?

Alleen als elke redirect de querystring doorgeeft. Een 301 of 302 stuurt de browser naar het exacte adres in zijn Location-header, dus de ?utm_...-string overleeft alleen wanneer die bestemming hem bevat. Een goed gebouwde dynamische QR-redirect stuurt de tags intact door, terwijl het stapelen van een externe verkorter erbovenop het risico loopt ze te laten vallen. Controleer het door de code te scannen en te kijken of de uiteindelijke landings-URL in de Netwerk-tab van je browser de parameters nog bevat.

Moet ik een URL-verkorter gebruiken bij een met UTM getagde QR-code?

Vermijd het stapelen van een aparte verkorter bovenop een dynamische code. Elke redirectstap is weer een plek waar de tags gestript of overschreven kunnen worden, en veel verkorters herschrijven querystrings. Een dynamische QR geeft je al een korte link en een redirect, dus laat die de getagde bestemming rechtstreeks dragen in plaats van er nog een laag tussen te zetten.

De korte versie

QR-scans verschijnen als "direct" omdat ze GA4 bereiken zonder verwijzer en zonder campagnetags, en als je ze tagt met utm_medium=qr belanden ze vervolgens in "Niet-toegewezen" omdat GA4's standaardkanalen geen QR-medium herkennen. Los beide op: voeg utm_source, utm_medium=qr en utm_campaign toe aan de bestemmings-URL, maak een aangepaste kanaalgroep die qr aan een eigen kanaal koppelt, en controleer in de Netwerk-tab dat de tags de redirect overleven voordat er iets naar de drukker gaat. Gebruik een dynamische code zodat de getagde bestemming bewerkbaar blijft, en stem je scantelling af op GA4-sessies als twee eerlijke metingen van dezelfde campagne. Zet het één keer per klant op, en ga dan de flyer drukken in de wetenschap dat de volgende "hoeveel scans?"-vraag een echt antwoord heeft.

Delen

Verder lezen