The gap QR codes close
Offline marketing has always had the same weakness: you cannot tell what worked. A flyer, a poster, a conference banner, a printed invoice — all of them send people to a URL that looks identical to every other visit in your analytics. A QR code with a tagged destination closes that gap, because the tag travels with the scan.
The code itself is trivial to produce; the free QR code generator makes URL, WiFi, vCard, email, SMS, WhatsApp and phone codes in the browser, with custom colours and PNG or SVG download, no signup and no watermark. What decides whether the campaign is measurable is the URL you encode.
Tag the destination before you generate the code
Never encode a bare homepage URL. Encode a URL carrying UTM parameters, so every scan arrives labelled:
https://example.com/offer?utm_source=poster&utm_medium=qr&utm_campaign=spring_launch&utm_content=station_a
- utm_source — where the code physically lives:
poster,flyer,invoice,packaging,booth - utm_medium — always
qrfor scans, so you can isolate all offline traffic in one filter - utm_campaign — the campaign name, identical across every asset in it
- utm_content — the individual placement, which is what lets you compare location A against location B
Use lower case with underscores, consistently. Analytics treats Poster and poster as two different sources, and inconsistent tagging is the single most common reason offline reporting turns into noise.
Generate one code per placement, not one code for the whole campaign. The extra five minutes is what turns “we got some scans” into “the station poster outperformed the flyer four to one”.
Choose the right code type
| Type | Use it for | Note |
|---|---|---|
| URL | Campaigns, landing pages, menus | The only type that is trackable |
| WiFi | Cafés, offices, events, rentals | Encodes SSID and password; no app needed |
| vCard | Business cards, badges, email signatures | Saves straight to contacts |
| Email / SMS | Support, RSVPs, enquiry shortcuts | Pre-fills recipient and subject |
| WhatsApp / Phone | Local services, bookings | Highest intent, zero friction |
Only URL codes can be measured. If measurement matters for a business card or a menu, point the code at a page on your site rather than encoding the raw data.
Printing rules that prevent dead codes
Most failed QR campaigns fail physically, not digitally.
Size. Minimum 2 × 2 cm for a code scanned from arm’s length. For distance, the working rule is a width of about 1/10th of the scan distance: a poster read from 3 metres needs a code roughly 30 cm wide.
Quiet zone. Leave clear space around the code equal to four modules — roughly the width of one of the small squares. Designers routinely crop this away and the code stops scanning.
Contrast and polarity. Dark code on light background. Inverted codes fail on many older scanners, and low-contrast brand colours fail in poor light. Test in a dim room, not on your monitor.
Format. Download SVG for anything printed — it scales from a business card to a billboard without pixelation. PNG is for screens.
Test before the print run. Two phones, two operating systems, the actual printed proof. Testing on screen only is how 5,000 unscannable flyers happen.
Always give the code a reason
A code with no promise beside it gets ignored. “Scan for 15% off”, “Scan for the WiFi password”, “Scan for the setup guide” — the promise does more for scan rate than any design choice. And the destination must be mobile-first: every single scan is a phone, so a slow or desktop-shaped landing page wastes the scan you just earned.
Reading the results
Two weeks after launch, look for three things: total scans by utm_content (which placement works), the bounce rate of scanned traffic (whether the destination matches the promise), and conversions from utm_medium=qr (whether offline is worth repeating). Low scans is a placement or promise problem. High scans with high bounce is a landing-page problem. Those two failures need opposite fixes, which is exactly why the tagging matters.
Running this properly at scale
Once you are managing several campaigns, the manual URL building becomes the error source:
- LINKPULSE — Campaign URL, UTM & QR Suite Kit — $19, builds consistent tagged URLs and keeps a campaign register so your naming never drifts
- Brand Identity Kit Template — $19, colour and contrast standards that keep codes scannable and on brand
- Party & Birthday Invitation Kit — 12 Designs — $12, printables where an RSVP QR code replaces the reply card
Frequently asked questions
Do the codes expire?
No. These are static codes — the destination is encoded directly, so they work forever and depend on no third-party service. The trade-off is that you cannot change the destination after printing, so make sure the URL is final.
Are scans tracked by the generator?
No. The code is generated in your browser and nothing is logged. Tracking comes entirely from the UTM parameters in your own analytics.
Why is my code not scanning?
In order of likelihood: too small, quiet zone cropped, insufficient contrast, inverted colours, or a URL long enough to make the code too dense. Shorten the URL and enlarge the code.
Can I put a logo in the middle?
QR codes tolerate some obstruction thanks to error correction, but every logo reduces the margin. If you do it, test on several phones in poor light before printing.
Build the tagged URL first, generate one code per placement, download SVG, and test the printed proof on two phones. Everything else is decoration.
