Guide · 2 min read
How to track QR code scans with UTM parameters
Short answer
Add UTM parameters to the link before you make the code, for example ?utm_source=flyer&utm_medium=print&utm_campaign=spring_open_day. Your analytics tool then reports those visits separately. You measure visits that load your page, not raw scans, and you need a separate tagged link for each placement you want to compare.
- UTM tags are just query parameters on your link: source, medium, campaign, plus optional content and term.
- Use one tagged link per placement you want to compare: flyer vs poster vs table tent.
- Lowercase, no spaces, a written naming scheme. Consistency matters more than cleverness.
- Tags make the code slightly denser; keep values short.
A printed QR code doesn't report anything by itself. If it points to your own website, though, you can find out how many visits it sends with the same campaign tags marketers use for email and ads. No paid QR service, no redirects through someone else's server.
What UTM parameters are
UTM parameters are labels added to the end of a link as query parameters. Analytics tools such as Google Analytics read them and group visits by them. The common ones:
| Parameter | What it describes | Example |
|---|---|---|
utm_source |
Where the visit came from | flyer, poster, menu |
utm_medium |
The type of channel | print, qr |
utm_campaign |
The campaign or event | spring_open_day |
utm_content |
Which version or placement | table_tent, window |
utm_term |
Mainly for paid search keywords | (rarely used for print) |
A tagged link looks like this:
https://yourcafe.com/menu?utm_source=table_tent&utm_medium=print&utm_campaign=autumn_menu
When someone scans the code and the page loads, your analytics records the visit with those labels.
Adding tags with the generator
In the QR code generator, choose Link, type your address, and open Add UTM tags. Fill in source, medium and campaign (content is optional). The generator lowercases the values, swaps spaces for underscores, keeps any existing query string and puts the tags before a # fragment if there is one. You can see the final link under "What's inside the code".
A naming scheme that stays readable
The most common UTM problem isn't technical: it's Flyer, flyer and flyers showing up as three different sources a month later. Before you print anything, write down a short scheme and stick to it:
- medium is always
printfor anything on paper. - source is the object:
flyer,poster,table_tent,business_card,packaging. - campaign is the event or season:
spring_open_day,autumn_menu_2026. - content separates variations you want to compare:
windowvscounter,version_avsversion_b.
Lowercase, underscores instead of spaces, no personal data. Keep values short, too: every character goes into the code, and a long tagged link can push a code up a size or two. The info line under the preview shows the version as you type.
Comparing placements
Tags only separate what you give separate links. If you want to know whether the window poster or the counter card works better, they need different codes:
- Poster:
?utm_source=poster&utm_medium=print&utm_campaign=open_day&utm_content=window - Counter card:
?utm_source=counter_card&utm_medium=print&utm_campaign=open_day
Run them for the same period and compare visits. Small numbers bounce around, so give it a few weeks before drawing conclusions.
What you're measuring, and what you're not
UTM tags count visits that load your page and run your analytics. They don't count people who scanned and closed the browser before it loaded, or visitors who block analytics. They also don't count anything if the code points to a page you don't control, such as a social profile.
That's usually fine: a visit is what you wanted. If you need raw scan counts, you'd need a redirect service, with the trade-offs explained in dynamic vs static QR codes.
Privacy
UTM tags describe the placement, not the person. Don't put names, emails or customer IDs in them: they show up in browser history, server logs and analytics. And if you add analytics to a site for the first time, check your local rules on cookie consent.
Sources
Questions
Do UTM tags slow down the page or break the link?
No. They're ordinary query parameters. Your server ignores them and analytics tools read them. Only a few unusual sites reject unknown parameters; test the tagged link before printing.
Can I see how many people scanned but didn't load the page?
No. UTM tags are only seen when the page loads and your analytics runs. That's usually the number you want: people who actually reached the page.
Which analytics tool do I need?
Any tool that reads campaign parameters. Google Analytics does, and so do most privacy-focused analytics products and many hosting dashboards.
More guides
- QR codes for print: size, contrast and the quiet zone
- QR codes for events: tickets, schedules, Wi-Fi and feedback
- QR code menus: what works for restaurants, cafés and bars
- QR codes for musicians, bands and artists
- Dynamic vs static QR codes: what's the difference?
- QR code security: how quishing works and how to stay safe
- Mobile landing pages for QR codes: what to put on them