
QR-codecampagnes A/B-testen: de eerlijke gids voor bureaus
Een gedrukte QR-code valt niet te randomiseren zoals een webpagina. Leer welke A/B-testmethoden voor QR-campagnes echt betrouwbaar zijn, hoe je een dynamische bestemming splitst, en hoe je eerlijk blijft over significantie bij kleine offline volumes.
ScanKit · Organization
· 15 min. leestijd
Hoe je een QR-codecampagne A/B-test zonder jezelf voor de gek te houden
Elk bureau kent die vergadering wel: de een houdt vol dat de blauwe poster het beter deed dan de oranje, de ander zweert bij het tegenovergestelde, en niemand heeft de data om de knoop door te hakken. A/B-testen is hoe je die discussie vervangt door bewijs. Draai twee versies, meet welke wint, houd de winnaar.
De moeilijkheid bij QR-codes is dat een gedrukte code vaststaat. Je kunt niet stiekem de helft van je publiek de ene versie laten zien en de andere helft de andere, zoals een website dat doet. Daardoor is de voor de hand liggende test, twee posters met twee ontwerpen, ook meteen de makkelijkste om verkeerd te doen. Deze gids laat zien welke testmethoden echt een betrouwbaar resultaat opleveren, welke alleen op een test lijken, en een werkwijze die je bij elke klantcampagne opnieuw kunt gebruiken.
Het uitgangspunt is dat je tracking al op orde hebt. Is dat niet zo, regel dat dan eerst: een code die niets rapporteert valt niet te testen. De begeleidende stukken over QR-scans meten in Google Analytics 4 en welke scangegevens er echt toe doen vormen het fundament waarop dit stuk verder bouwt.
Wat A/B-testen echt betekent, en de ene regel die iedereen overtreedt
Een A/B-test vergelijkt twee versies van iets die op precies één punt verschillen, toont ze tegelijkertijd aan vergelijkbare doelgroepen en gebruikt de cijfers om te bepalen welke beter presteert. De eigen definitie van Optimizely benadrukt de twee dragende begrippen: varianten worden "willekeurig" getoond en de winnaar wordt gekozen via "statistische analyse", niet op het oog.
Daaruit volgen twee principes, en allebei worden ze voortdurend overtreden.
Ten eerste: verander één variabele tegelijk. Als versie B een nieuwe kop én een nieuwe afbeelding én een nieuwe aanbieding heeft, en B wint, dan heb je niets bruikbaars geleerd, want je weet niet welke wijziging het werk deed. Test de kop, of de afbeelding, of de aanbieding. Eén ding.
Ten tweede: kies één primaire metric voordat je begint, en maak er een ratio van die aan je doel hangt in plaats van pure volumes. "Meer scans" is een verleidelijke metric en een misleidende, want scanaantallen meten vooral waar je de code hebt geplaatst en hoe druk de plek was, niet of de creatie iemand heeft overtuigd. De eerlijke metric is een conversieratio: van de mensen die scanden, welk deel voltooide de actie die je wilde? Dat is het getal dat een variant écht kan beïnvloeden.
Waarom een gedrukte QR-code de tekstboektest breekt
Hier is het probleem dat QR-testen anders maakt dan webtesten. Een geldige A/B-test heeft willekeurige toewijzing nodig: iedereen heeft evenveel kans om de ene of de andere variant te zien, zodat de twee groepen verder identiek zijn. Een website regelt dit serverside bij elk bezoek. Een gedrukte poster kan dat niet. Wie er langsloopt, ziet wat er nu eenmaal gedrukt staat.
Op het moment dat je dus twee ontwerpen test door poster A op de ene locatie te hangen en poster B op de andere, heb je het ontwerp verstrengeld met de plaatsing. Locatie B wint misschien omdat de creatie beter was, of omdat hij op ooghoogte naast een rij hing terwijl A boven een deur zat waar niemand wachtte. Loop, verblijfsduur, verlichting, hoogte, weer en het lokale publiek verschillen allemaal tussen twee fysieke plekken, en de test kan geen daarvan losmaken van wat je eigenlijk wilde meten. Je krijgt een getal, maar het betekent niet wat je denkt.
Dit is geen reden om het testen van QR-campagnes op te geven. Het is een reden om het deel te testen dat je wel kunt randomiseren, en eerlijk te zijn over het deel dat je niet kunt.
De schone methode: test de bestemming, niet de code
De doorbraak is dat je stopt met het fysieke object te testen en in plaats daarvan test wat er na de scan gebeurt. Bij een dynamische QR-code bevat de gedrukte code alleen een korte redirect-URL. De echte bestemming staat op de server en heb jij in de hand. Daar wordt een schone test mogelijk.
De gouden standaard is serverside verkeer splitsen: één gedrukte code waarvan de redirect een willekeurig deel van de scans naar landingspagina A stuurt en de rest naar landingspagina B. Doordat dezelfde stroom scanners op het moment van de redirect wordt verdeeld, zijn de twee groepen echt willekeurig en tegelijk blootgesteld. Dit is de enige QR-A/B-test die aan de tekstboekvoorwaarden voldoet, en de methode om naar te grijpen zodra je tooling het ondersteunt.

Het diagram hierboven laat de vorm ervan zien:
- Eén dynamische code, dezelfde gedrukte code voor iedereen, zodat de plaatsing voor beide varianten identiek is.
- De redirect, waar de scanstroom over de twee bestemmingen wordt gesplitst.
- Twee bestemmingen die op één ding verschillen: pagina A en pagina B.
- De meting, waar je de conversieratio van elk vergelijkt en de winnaar houdt.
Tag elke bestemming met een eigen utm_content-waarde zodat Google Analytics de twee varianten op aparte regels rapporteert. Gebruik een beschrijvende waarde als hero-offer versus hero-testimonial, geen kale "a" en "b" die je over drie weken niet meer herkent. De utm_content-parameter is de standaardplek om A/B-varianten te labelen, maar onthoud dat hij de varianten alleen scheidt in je rapportages; de splitsing zelf gebeurt in de redirect.
Een opmerking over eerlijkheid over je tools. Niet elke dynamische-code-opzet voert een automatische willekeurige splitsing uit. ScanKit bijvoorbeeld richt elke code op één bestemming die jij beheert en op elk moment kunt aanpassen. Dat geeft je geen splitknop met één klik, maar wel iets wat voor offline campagnes bijna net zo nuttig is: de bestemming direct kunnen omzetten en een winnaar uitrollen zonder herdruk, en precies daarop leunen de volgende twee methoden.
Als splitsen niet kan: sequentiële en gematchte-plaatsingstests
Kun je het verkeer van één code niet willekeurig verdelen, dan heb je twee terugvalopties. Allebei zijn ze zwakker, en het is goed om precies te weten waarom.
Een sequentiële test draait versie A een periode, schakelt daarna de bestemming van dezelfde code een even lange periode naar versie B, en vergelijkt. Omdat de bestemming bij een dynamische code aanpasbaar is, hoeft dat geen herdruk: je verandert simpelweg waar de code naartoe wijst wanneer de tweede fase begint. De zwakte is de tijd zelf: alles wat tussen de twee periodes veranderde, zit nu door het resultaat heen gemengd. Een week met salaris, een hittegolf, een feestdag, de actie van een concurrent, de verhouding doordeweeks tegenover weekend: het verstrengelt allemaal de vergelijking. Draai elke fase hele weken lang, vermijd een feestdag erin, en behandel het resultaat als een sterke aanwijzing in plaats van bewijs.
Een gematchte-plaatsingstest gebruikt twee verschillende gedrukte codes op twee locaties, maar zo gekozen dat de locaties zo veel mogelijk op elkaar lijken: dezelfde winkelindeling, gespiegelde meubels, vergelijkbare loop. Om de overgebleven plaatsingsbias eruit te halen, wissel je de varianten halverwege tussen de locaties, zodat elk ontwerp evenveel tijd op elke plek doorbrengt. Dit is beter dan een naïeve twee-postertest, maar nog altijd quasi-experimenteel. Rapporteer het als richtinggevend, niet als definitief.
Steekproefomvang en significantie, zonder mooipraterij
Hier eist offline testen eerlijkheid, want de aantallen zijn meestal klein. Statistische significantie, doorgaans vastgezet op een betrouwbaarheidsniveau van 95 procent, is de lat die zegt dat een verschil waarschijnlijk niet aan toeval te wijten is. Die lat, en de steekproefomvang die je nodig hebt om hem te halen, bepaal je voordat de test begint.
De allerveelvoorkomendste manier om jezelf voor de gek te houden is gluren. Volg je de test en roep je een winnaar uit op het moment dat hij voor het eerst de 95 procent passeert, dan heb je geen 95 procent-test gedraaid. De bekende analyse van Evan Miller laat zien dat stoppen op het eerste significante moment het echte percentage vals-positieven naar zo'n 26 procent duwt, ruim vijf keer wat je dacht. De discipline is saai maar beslissend: zet de steekproefomvang en de einddatum vooraf vast en lees het resultaat pas af als je er bent.
Een goedkope sanity check is de A/A-test: draai twee identieke varianten tegen elkaar. Bij een drempel van 95 procent hoort een goed werkende opzet maar zo'n 5 procent van de tijd een "winnaar" aan te wijzen, puur door toeval. Kroont je tool er veel vaker een, dan klopt er iets niet voordat je iets echts hebt getest.
Nu het ongemakkelijke deel. De meeste gedrukte QR-campagnes genereren simpelweg niet genoeg scans, laat staan genoeg conversies, om 95 procent significantie te halen. Dat is geen falen van je methode, het is de realiteit van offline volume. Is dat het geval, zeg het dan. Bepaal de steekproefomvang vooraf, draai de test eerlijk, en presenteer een resultaat met weinig volume als richtinggevend bewijs in plaats van het op te tuigen als statistisch bewezen. Correct en bescheiden verslaat indrukwekkend en fout, en klanten onthouden welke van de twee je ze gaf. Weersta de verleiding om een net "dit verhoogde conversies met 23 procent" te citeren als de steekproef dat niet kan dragen.
De verstorende factoren die QR-tests stiekem verpesten
Zelfs een schone splitsing kan bedorven raken door wat eromheen gebeurt. Vier om voor te waken:
- Nieuwigheidseffect. Een nieuw ontwerp kan de resultaten optillen puur omdat het nieuw is, een effect dat vervaagt zodra mensen eraan wennen. Draai lang genoeg om voorbij de piek te kijken, vaak meerdere weken, en houd de winnaar na de uitrol een week of twee in de gaten om te bevestigen dat de winst standhoudt.
- Seizoensinvloed en dag van de week. Het verkeer op een zaterdag is niet hetzelfde publiek als op een dinsdag. Draai in veelvouden van hele weken zodat de verhouding doordeweeks en weekend in balans is, en vermijd vensters die over een feestdag of uitverkoop heen lopen.
- Plaatsingsverschillen. Hierboven al behandeld, en het herhalen waard omdat het de QR-specifieke valkuil is: hangen twee codes op twee verschillende plekken, dan meet je misschien de plek, niet de creatie.
- Te veel tests tegelijk. Overlappende tests beïnvloeden elkaar en maken elkaar troebel. Isoleer ze, of spreid ze, zodat elk resultaat één ding betekent.
Een herhaalbare A/B-werkwijze voor klantcampagnes
Voeg het samen tot iets wat je elke keer op dezelfde manier kunt draaien, in de eigen werkruimte van elke klant:
- Schrijf de hypothese. "De landingspaginakop aanpassen zodat hij begint met de korting verhoogt de aanmeldingen, omdat de aanbieding de reden is dat mensen scanden." Een echte voorspelling, met een reden.
- Verander één variabele. Bouw pagina A en pagina B die op dat ene ding verschillen en op niets anders.
- Kies de primaire metric. Eén conversieratio, nu bepaald, niet nadat je de data hebt gezien.
- Kies de splitsmethode. Een gerandomiseerde bestemmingssplitsing als je tooling het toelaat; anders een sequentiële of gematchte-plaatsingstest, met de beperkingen ervan benoemd in de briefing.
- Zet de steekproefomvang en looptijd vooraf vast. Hele weken, lang genoeg om de nieuwigheid te overleven, en niet gluren.
- Lees het resultaat één keer, aan het eind. Tegen je vooraf bepaalde betrouwbaarheidslat. Wees eerlijk als het volume alleen een richtinggevende uitspraak toelaat.
- Rol de winnaar uit. Omdat het een dynamische code is, wijs je de live bestemming opnieuw naar de winnende pagina zonder herdruk, en monitor je daarna een week of twee om te bevestigen dat de winst echt is en geen nieuwigheid.
De opbrengst stapelt zich op. Elke test die één variabele verandert leert je iets herbruikbaars over het publiek van die klant, en de dynamische bestemming betekent dat handelen naar wat je leert niets aan drukwerk kost. Wat je stopt met doen is net zo waardevol: jagen op de dingen die aanvoelen alsof ze zouden moeten werken. Probeer je nog steeds de pure scans op te krikken, dan past de eerlijke gids over meer scans krijgen goed bij dit stuk, want testen vertelt je welke van die tactieken de cijfers van je klant echt verzette.
Veelgestelde vragen
Kun je een gedrukte QR-code A/B-testen?
Ja, maar niet door de gedrukte code zelf te testen. Een gedrukte code staat vast, dus je kunt niet willekeurig toewijzen welke versie een voorbijganger ziet. De betrouwbare aanpak is één dynamische code gebruiken en de bestemming erachter testen, door de scans serverside over twee landingspagina's te splitsen. Kan je tool het verkeer niet splitsen, dan val je terug op sequentiële of gematchte-plaatsingstests, die zwakker zijn maar nog steeds nuttig als je ze als richtinggevend behandelt.
Wat moet ik A/B-testen bij een QR-campagne?
Test de bestemming, want dat is het deel dat je na het drukken kunt veranderen en het deel dat de meeste overtuiging doet. Goede kandidaten zijn de landingspaginakop, de aanbieding, de call to action en de pagina-indeling. Verander er één tegelijk. Het ontwerp van de fysieke poster testen over verschillende locaties is onbetrouwbaar, want plaatsing en loop verstrengelen het resultaat.
Welke metric moet ik gebruiken om een QR-A/B-test te beoordelen?
Gebruik een conversieratio: het deel van de mensen dat scande en daarna je doel voltooide, zoals een aanmelding of aankoop. Beoordeel niet op pure scanaantallen, want scans weerspiegelen vooral waar de code hangt en hoe druk de plek is, niet of de variant werkte. Kies één primaire metric voordat de test begint.
Hoe lang moet een QR-code-A/B-test draaien?
Lang genoeg om je vooraf bepaalde steekproefomvang te halen, in veelvouden van hele weken zodat de verhouding doordeweeks en weekend in balans is, en lang genoeg om het nieuwigheidseffect te overleven, wat vaak meerdere weken betekent. Bepaal de einddatum vooraf en lees het resultaat pas af als je er bent, in plaats van te stoppen zodra het op een winnaar lijkt.
Hoeveel scans heb ik nodig voor een statistisch significant resultaat?
Er is geen enkel getal; het hangt af van je basisconversieratio en de grootte van het verschil dat je wilt detecteren, dus gebruik een steekproefomvangcalculator voordat je lanceert. Wees realistisch: de meeste gedrukte campagnes genereren niet genoeg scans om 95 procent significantie te halen, dus reken op een richtinggevend resultaat en zeg dat eerlijk in plaats van te overdrijven.
Heb ik een dynamische QR-code nodig om een A/B-test te draaien?
In de praktijk wel. De bestemming van een statische code zit vast in het drukwerk, dus je kunt het verkeer niet splitsen, een verliezende variant niet wisselen en geen winnaar uitrollen zonder herdruk. De aanpasbare bestemming van een dynamische code is wat elke methode hier mogelijk maakt, van een serverside splitsing tot een sequentiële test tot een directe winnaaruitrol.
Waar wordt utm_content voor gebruikt bij QR-testen?
Het labelt elke variant zodat Google Analytics ze op aparte regels rapporteert. Geef elke versie een beschrijvende waarde, zoals hero-offer en hero-testimonial, in plaats van een kale "a" en "b". Het scheidt de varianten in je rapportage, maar het splitst het verkeer zelf niet; de splitsing gebeurt in de redirect.
Wat is een A/A-test en waarom zou ik er een draaien?
Een A/A-test draait twee identieke varianten tegen elkaar. Omdat ze hetzelfde zijn, hoort geen van beide te winnen, en toch zal een gezonde opzet bij een betrouwbaarheidsniveau van 95 procent nog steeds zo'n 5 procent van de tijd een valse "winnaar" markeren door toeval. Roept je tool veel vaker een winnaar uit, dan deugt de opzet of de tool niet, en dat kun je beter weten voordat je hem op een echte test vertrouwt.
De korte versie
Een gedrukte QR-code valt niet te randomiseren zoals een webpagina, dus de naïeve "twee posters, twee ontwerpen"-test meet evenzeer de plaatsing als de creatie. Test in plaats daarvan het deel dat je wel in de hand hebt: de bestemming achter een dynamische code.
De schone methode is één code waarvan de redirect de scans over landingspagina A en pagina B splitst, met een eigen utm_content op elk zodat analytics ze uit elkaar kan houden. Kun je het verkeer niet splitsen, draai dan een sequentiële of gematchte-plaatsingstest en rapporteer hem als richtinggevend. Beoordeel op een conversieratio, niet op pure scans. Bepaal je steekproefomvang en einddatum vooraf, gluur nooit en roep niet vroeg een winnaar uit, en blijf eerlijk als het offline volume te klein is om significantie te bewijzen.
Rol daarna de winnaar uit door de dynamische bestemming opnieuw te richten, zonder herdruk, en houd hem twee weken in de gaten om zeker te weten dat de winst echt is. Schrijf de hypothese, verander één ding, meet één ratio, en laat de data de discussie beslechten de volgende keer dat de kamer verdeeld is over blauw versus oranje.
Verder lezen

· 15 min. leestijd
QR-code landingspagina: zo bouw je de pagina die de scan laat converteren
Een scan is geen resultaat; dat ontstaat op de QR-code landingspagina erachter. Waarom de homepage bijna altijd de verkeerde bestemming is, welke specs op mobiel werken (Core Web Vitals, duimbereik, korte formulieren) en hoe je conversie bewijst in de klantrapportage.
Lees meer
· 17 min. leestijd
Waarom scant mijn QR-code niet? De 3 oorzaken (en hoe je ze oplost)
QR-code die niet scant? Het zijn bijna altijd drie verschillende problemen: de camera leest het patroon niet, de link is kapot, of de pagina is verplaatst. Loop de drie poorten af, vind de echte fout en los hem vaak op zonder herdruk.
Lees meer