QR-codes voor offline campagnes: volg elke flyer, doos en stand
Hoe je QR-codes op print, verpakkingen en evenementmateriaal zet, zodat elke scan in je analytics terechtkomt: één gelabelde code per plaatsing, de juiste foutcorrectie, de marge van vier modules, en een test voordat je drukt.
Een flyer vertelt je niet dat het werkte. Een sticker op een verzenddoos of een bord op een marktkraam ook niet. Zet er een QR-code op en het werkt misschien nog steeds niet, want een scan zonder tags komt in je analytics binnen als iemand die je adres uit het hoofd heeft getypt.
De oplossing is klein en moet vóór de drukgang gebeuren: tag de link, maak één code per plaatsing, en test hem. Deze gids behandelt de hele routine, en onze gratis QR-codegenerator doet het taggen en de code in één stap, in je browser.
Waarom een ongetagde code verspilde moeite is
Wanneer iemand een code scant, opent zijn telefoon de link direct. Er is geen pagina ervoor, dus er is geen referrer die zegt waar het bezoek vandaan kwam. Google Analytics heeft dan niets om mee te werken en zet het bezoek op Direct, het kanaal dat het beschrijft als mensen die via een opgeslagen link of door je URL in te typen komen. De bezoeken van je flyer belanden tussen iedereen die je site had bookmarkt.
UTM-tags lossen dat op. Het zijn labels die je aan het eind van de link toevoegt, en Google zegt dat je altijd drie ervan moet zetten: utm_source, utm_medium en utm_campaign. Voeg ze toe aan de link in de code en elke scan draagt ze mee.
Eén code per plaatsing
De nuttigste gewoonte is ook de eenvoudigste: gebruik nooit dezelfde code op meerdere plaatsingen. Als dezelfde code op de tellerkaart, het raamaffiche en het bonnetje staat, leer je dat QR-codes scans kregen, en niets over welke ze verdienden.
Geef elke plaatsing een eigen gelabelde link. Houd de campagne gelijk en wijzig de contenttag:
utm_source=print,utm_medium=qr,utm_campaign=spring_launch,utm_content=window_poster- hetzelfde, met
utm_content=counter_card - hetzelfde, met
utm_content=receipt
Voor verpakkingen gebruik je de contenttag voor waar op de verpakking het zit (box-insert, back-label). Voor evenementen noem je het evenement in de campagne en de plek in de content (booth-banner, handout). Houd elke waarde in kleine letters, want Google behandelt waarden als hoofdlettergevoelig: Print en print zouden als twee bronnen verschijnen.
Als je al onze UTM-linkbouwer voor advertenties gebruikt, gelden dezelfde regels. De QR-generator past ze voor je toe: hij behoudt parameters die al in je link staan, vervangt oude UTM-waarden en houdt een #section-anker aan het eind.
Waar de scans verschijnen in Google Analytics
GA4 sorteert bezoeken in kanalen met regels op source en medium. De standaard kanaalgroep heeft kanalen voor e-mail, sms, social, zoeken, verwijzingen en meer, maar geen voor print. Een medium als qr past op geen enkele regel, dus die bezoeken komen in Unassigned, wat GA4 gebruikt wanneer geen regel past. Twee addertjes in dezelfde tabel: een source met de naam van een socialsite (bijvoorbeeld instagram) stuurt de bezoeken naar Organic Social, en een campagnenaam met shop of shopping erin, zoals utm_campaign=summer_shop, stuurt ze naar Organic Shopping. Een neutrale source zoals utm_source=print en een campagne als utm_campaign=spring_launch voorkomen beide.
Dat is prima, en beter dan Direct: de bezoeken zijn apart en volledig gelabeld. Filter elk rapport op de campagne of de source en medium, en elke plaatsing staat op een eigen rij. Kies alleen één schrijfwijze voor het medium en houd die aan, zodat al je print bij elkaar staat.
Kies de foutcorrectie bewust
Elke QR-code bevat extra data, zodat hij nog scant als een deel beschadigd is. Denso Wave, het bedrijf achter de QR Code, noemt vier niveaus die ongeveer 7% (L), 15% (M), 25% (Q) en 30% (H) van de code herstellen. Ze melden ook dat niveau M het vaakst wordt gekozen, dat Q of H geschikt is voor plekken waar codes vuil worden, en dat een hoger niveau een grotere code maakt.
In de praktijk:
- M voor flyers, menu's, posters en alles wat schoon blijft.
- Q of H voor verpakkingen die worden aangeraakt, verzendlabels, buitenstickers, en alles wat kan worden beschadigd, gebogen of deels bedekt door een duim.
- L alleen als een lange link op geen andere manier past, en overweeg dan een kortere link.
Laat de witte rand met rust
Het lege kader rond een code hoort bij de code. De gids over codeformaat van Denso Wave is er duidelijk over: “QR Code requires a four-module wide margin at all sides of a symbol.” Een module is een van de kleine vierkantjes. Het is verleidelijk om die marge af te snijden om een layout netjes te maken, of de code op een patroonachtergrond te zetten. Beide tasten het vrije kader aan dat de standaard vraagt, dus doe geen van beide.
Onze generator begint met een marge van vier modules en waarschuwt als je eronder gaat.
De geprinte grootte berekenen
Een QR-code komt in 40 rastergroottes die versies heten. Versie 1 is 21 bij 21 modules en elke versie voegt 4 per zijde toe, tot 177 bij 177 bij versie 40. De generator toont welke versie je link nodig heeft. De rekensom voor de printgrootte is dan simpel:
geprinte breedte = (modules + 8) × modulegrootte
De 8 is de marge van vier modules aan elke kant. Het eigen voorbeeld van Denso Wave gebruikt een module van 0,254 mm: een versie 3-code is 29 modules, dus 7,366 mm, en 9,398 mm met de marge.
Een uitgewerkt voorbeeld voor een flyer: je getagde link past in versie 4, wat 21 + 3 × 4 = 33 modules is. Je wilt dat elke module 0,6 mm is. Dat is (33 + 8) × 0,6 = 24,6 mm, dus reken op een vierkant van ongeveer 25 mm. Als de link in plaats daarvan versie 6 nodig heeft (41 modules), hebben dezelfde modules van 0,6 mm (41 + 8) × 0,6 = 29,4 mm nodig. Daarom doen korte links ertoe: elke versie die je toevoegt maakt het vierkant groter, of maakt de modules kleiner als de ruimte vast is.
Er is geen enkele juiste modulegrootte, want het hangt af van hoe ver mensen staan en van hun telefoons. De eerlijke methode staat in de volgende sectie.
Test het zoals een klant
- Scan het bestand op het scherm met twee of drie verschillende telefoons, ook een oudere.
- Print een proef op ware grootte, op het echte papier als dat kan, en scan hem vanaf de afstand waarop mensen staan.
- Controleer de landingspagina op een telefoon. Daar komt elke scan terecht, dus hij moet snel laden en logisch zijn voor iemand die net bij een poster is komen staan.
- Controleer dat de tags zijn aangekomen. Open je realtime-weergave in analytics, scan één keer en zoek naar je campagnenaam.
Gebruik de SVG-download voor print. Het is een vector, dus die blijft scherp op elke grootte, en het is wat een drukker of ontwerptool wil.
Kleuren en branding
Een code in je merkkleuren is prima zolang de modules duidelijk donkerder blijven dan de achtergrond. Lichtgrijs op wit, of een lichte code op een donkere doos, is waar scans beginnen te falen. De generator meet het contrast tussen je twee kleuren en waarschuwt als het laag is of omgekeerd. Vertrouw toch de proefprint boven de preview.
Statisch of dynamisch?
Een statische code bevat je link direct. Hij werkt zolang die pagina bestaat, zonder account, zonder abonnement en zonder vervaldatum. Een dynamische code bevat een korte link naar een redirectdienst, waarmee je de bestemming later kunt wijzigen en scans aan hun kant kunt tellen, maar de code stopt met werken als die dienst verdwijnt.
Voor de meeste geprinte campagnes is een statische code met UTM-tags genoeg: de scans worden geteld in je eigen analytics, waar de rest van je verkeer al staat. Als een bestemming na het drukken zou kunnen veranderen, richt de code dan op een pagina op je eigen site die je beheert, en wijzig die pagina.
Een checklist voor de drukgang
- Eén gelabelde code per plaatsing, met source, medium en campagne ingevuld, allemaal in kleine letters.
- Foutcorrectie op M voor schone oppervlakken, Q of H voor alles wat wordt aangeraakt of buiten staat.
- Een witte marge van vier modules, onaangeroerd door het ontwerp.
- Geprinte grootte berekend uit de versie en de modulegrootte.
- Een proef op ware grootte, gescand op meerdere telefoons, en het bezoek te zien in analytics.
Klaar om ze te maken? Open de QR-codegenerator, vink Add UTM tags aan en download een SVG voor elke plaatsing.
Waar Hermoso past
Hermoso is een AI-marketingagent. Het zoekt uit welke advertenties in jouw markt al werken, maakt merkeigen beeld- en videoadvertenties, plaatst en plant posts op je eigen socialmediaaccounts, en draait betaalde campagnes op je eigen advertentieaccounts. Het werkt in de webapp, of binnen Claude, ChatGPT en Cursor via zijn MCP-server. De QR-codes blijven een gratis tool, zonder aanmelding.
Veelgestelde vragen
Hoe volg ik scans van een geprinte QR-code?
Voeg UTM-tags aan de link toe voordat je de code maakt: minimaal utm_source, utm_medium en utm_campaign, en utm_content om plaatsingen uit elkaar te houden. Elke scan komt dan met die labels in Google Analytics aan. Zonder tags verschijnt een scan meestal als Direct-verkeer.
Welk foutcorrectieniveau moet ik voor verpakkingen gebruiken?
Q of H. Denso Wave, het bedrijf achter de QR Code, zegt dat die geschikt zijn voor plekken waar codes vuil worden, en verpakkingen worden aangeraakt. Gebruik M voor schone oppervlakken zoals flyers en menu's.
Hoe breed moet de witte rand rond een QR-code zijn?
Vier modules aan elke kant. Denso Wave stelt dat QR Code een marge van vier modules aan alle kanten van een symbool vereist.
Waar verschijnen QR-codebezoeken in GA4?
GA4 heeft geen printkanaal. Met een medium als qr en een neutrale source- en campagnenaam komen de bezoeken in Unassigned terecht, waar ze apart en volledig gelabeld blijven. Filter op campagne of op source en medium om elke plaatsing te zien. Een campagnenaam met shop erin stuurt ze in plaats daarvan naar Organic Shopping.
Verlopen statische QR-codes?
Nee. Een statische code bevat de link zelf, dus hij werkt zolang de pagina waarnaar hij verwijst bestaat. Alleen dynamische codes, die via een redirectdienst lopen, zijn afhankelijk van dat die dienst blijft draaien.