Tracked QR code generator
A QR code is just a URL, which means it can carry campaign data like any other link. Almost nobody sets them up that way, and that is why booths, posters, and packaging land in the CRM as Direct traffic. Tag the link, then encode it.
Fixed to qr-code for every link built here, so all scans group as one channel in your reports and still split by placement.
Paid keyword. Usually only for search ads.
Which creative or placement, for A/B comparison.
Tagging a different kind of campaign? The tracking link builder has the full source list for online channels.
How to make a trackable QR code
The encoding is the easy part. These are the steps that decide whether the code scans in the field and whether you can attribute it afterwards.
- 01
Tag the URL first
A QR code is just a URL, so the campaign data has to be in the link before you encode it. Add utm_source for the placement, utm_medium=qr-code, and a campaign name. An untagged code lands every scan in your reports as Direct.
- 02
Give each placement its own code
One code per poster, booth, insert, or sign. A single code shared across a whole campaign tells you the campaign worked but never which placement earned it, which is the decision you actually have to make next year.
- 03
Choose an error correction level
Level M is a good default for clean print. Move up to Q or H for packaging, curved surfaces, outdoor signage, or if you are placing a logo over the centre. Higher correction means a denser code that has to be printed larger.
- 04
Keep the quiet zone
Leave a blank margin of at least four modules around the code. Scanners use it to find the edges, and cropping it away is the single most common reason a printed code fails to scan.
- 05
Download SVG for print
Use the SVG for anything going to a printer: it stays sharp at any size. PNG is fine for screens and slides. Size the printed code against the distance people will scan it from.
- 06
Test it before it goes to print
Scan the final artwork with more than one phone, in the lighting the code will actually live in, and confirm the landing page records the campaign. Testing the PDF is not the same as testing the printed piece.
How big should the code be?
The field rule is roughly ten to one: a code needs to be about a tenth as wide as the distance it will be scanned from. Round up if the URL is long or the correction level is high.
| Scan distance | Minimum size | Typical placement |
|---|---|---|
| 30 cm / 1 ft | 3 cm / 1.2 in | Business card, product label, menu |
| 1 m / 3 ft | 10 cm / 4 in | Flyer, table tent, packaging |
| 2 m / 6 ft | 20 cm / 8 in | Tradeshow booth panel, window decal |
| 5 m / 16 ft | 50 cm / 20 in | Banner, exhibition stand, wall graphic |
| 10 m / 33 ft | 1 m / 40 in | Billboard, building wrap, stage screen |
How to tag each placement
Keep utm_medium as qr-code across the board and vary the source by placement. That way every scan groups together as one channel and still splits by where it happened.
| Placement | utm_source | utm_medium | Worth knowing |
|---|---|---|---|
| Tradeshow booth | event | qr-code | One code per panel, not per booth. You will want to know which wall people actually scanned. |
| Printed flyer | flyer | qr-code | Put the code near a reason to scan. A code with no offer beside it gets ignored. |
| Poster or signage | poster | qr-code | Mind the height. A code above eye level is hard to scan and gets photographed at an angle. |
| Product packaging | packaging | qr-code | Curved surfaces distort the grid. Use level Q or H and keep the code on the flattest panel. |
| Vehicle wrap | vehicle | qr-code | Only scannable when parked. Size it for the distance people stand, not for the road. |
| Direct mail | direct-mail | qr-code | Use a distinct campaign per drop so you can compare list segments against each other. |
A tagged code still has to reach your CRM
Tagging the code gets the campaign into the address bar of the phone that scanned it. Whether it survives to the lead record is a separate problem, and on most sites it does not. The parameters are lost on the next page view, on a redirect, or at form submission, and the booth that produced the lead ends up filed as Direct anyway.
Offline campaigns feel this hardest, because there is no second signal to fall back on. There is no referrer and no click ID, so if the UTM is dropped, nothing remains to reconstruct the source from.
QR code questions, answered
Do QR codes expire?
A static QR code does not expire: it encodes a URL directly, so it works for as long as that URL does. What can break is the destination. If you delete or redirect the landing page, every printed code pointing at it breaks with it, so treat the URL behind a printed code as permanent.
How do I track scans of a QR code?
Put UTM parameters in the URL before you encode it, then read them in analytics like any other campaign traffic. There is no separate scan counter in the QR standard itself, so all tracking comes from what the link carries. Use a distinct URL or campaign value per placement to tell them apart.
What size should a printed QR code be?
Roughly one tenth of the distance it will be scanned from. A code scanned at one metre needs to be about ten centimetres wide; at five metres, about fifty. Denser codes, meaning longer URLs or higher error correction, need to be printed larger than the minimum.
Which error correction level should I use?
Level M for most print. Go to Q or H for packaging, curved surfaces, outdoor placements, or when a logo covers part of the code. Higher levels tolerate more damage but produce a denser grid that needs more physical size to stay scannable.
Why does my QR code not scan?
The usual causes are a missing quiet zone, printing it too small for the scan distance, low contrast between the code and its background, an inverted colour scheme, or a URL long enough to make the grid too dense. Test the printed piece rather than the file.
Can I use a shortened link in a QR code?
Yes, and it helps: a shorter URL produces a less dense code that scans more reliably at small sizes. The trade-off is that the redirect is another hop where campaign parameters can be dropped, so confirm the UTMs still arrive at the landing page.
Should the QR code point to my homepage?
No. Send scans to a page that matches the reason someone scanned, tagged with the campaign. A homepage gives you no signal about intent and makes the visit indistinguishable from anyone else who typed your address.



