QR Codes · 8 min read · Updated July 25, 2026
How to Track QR Code Scans (Counts, Locations, and Devices)
Print five thousand flyers with a QR code on them and the first question anyone asks is the one the code itself cannot answer: how many people actually scanned it? A QR code is just a pattern of modules encoding some text. It has no memory, no network connection, and no way to phone home when a camera reads it.
The fix is architectural, not magical: put a URL you control inside the code, and count the traffic that URL receives. This guide explains exactly how scan tracking works, how to set it up in a few minutes, what the analytics can and cannot tell you, and the naming habits that keep a multi-placement campaign readable.
Why a bare QR code cannot be tracked
When a phone scans a QR code, everything happens on the device: the camera finds the pattern, decodes the text, and opens the URL. No server is involved until the browser requests that URL. If the code contains your page address directly, the visit lands in your web analytics mixed in with every other visitor, and you have no way to attribute it to the code, let alone to a specific poster or flyer.
So the tracking has to live at the destination end. If the URL inside the code is one you can observe, every scan becomes a measurable request before the visitor continues to the real page. That observable middle stop is exactly what a short link is.
Static vs dynamic QR codes, in plain terms
QR vendors sell this distinction hard, so it is worth demystifying. A static code encodes the final URL directly: nothing to pay for, nothing that can break, and nothing you can measure or change. A dynamic code encodes a redirect URL owned by some service; the service logs each scan and lets you repoint the destination later. That is the entire difference. Dynamic is not a different kind of barcode, it is a static code whose contents happen to be a redirect link.
The one real trade-off is dependency: the redirect service must stay up for the code to work. That argues for keeping the link on a provider you trust, or better, on a custom domain you own, so the printed URL is yours even if you switch tools later.
Set up scan tracking in four steps
- Shorten the destination. Create a short link for the landing page. In ReSlug every link, free or Pro, automatically gets a print-ready QR code, so this step and the next are one action.
- Add UTM parameters to the destination URL first, so your web analytics can also attribute the traffic. Something like
utm_source=qr&utm_medium=offline&utm_campaign=summer-launchworks; a UTM builder keeps the format straight. - Download the QR code and place it in the design. Export large (1000 px or vector) for print, keep the quiet zone, and test a scan from a printed proof, not just your screen.
- Watch the link analytics. Each scan is a click on the short link: you get the running total, the timeline, and country plus device breakdowns from the first scan.
That is the whole system. The QR code is permanent ink; the short link behind it is the moving part you measure and edit.
One code per placement, or you learn nothing
A single code reused across a poster, a flyer, and a table tent tells you the campaign total and nothing else. The interesting decisions, which placement earns its cost, live one level deeper. Give every physical placement its own short link and its own code:
| Placement | Short link slug | utm_content |
|---|---|---|
| Poster, storefront | summer-poster-store | poster-store |
| Poster, event booth | summer-poster-booth | poster-booth |
| Flyer insert | summer-flyer | flyer |
| Table tent | summer-table | table-tent |
| Packaging sticker | summer-pack | packaging |
All five can point at the same landing page. The slug tells you the placement in the link dashboard; the utm_content value carries the same split into your web analytics. When the campaign ends, the comparison writes the next media plan for you.
What scan analytics can and cannot tell you
Because tracking rides on an HTTP request, you get what a request reveals and no more. Expect: scan counts over time, country and city level location (from the IP address), device type and operating system (from the user agent), and referrer where one exists. In ReSlug this is per-link, retained for 30 days on the free plan and 365 days on Pro, with bot filtering so link-preview crawlers from chat apps do not inflate the numbers.
What no vendor can honestly give you: the identity of the person scanning, precise GPS location, or scans that never happened as requests (someone photographing the poster for later). Location is also approximate by design, since it is derived from the carrier or Wi-Fi network IP. Treat city-level patterns as directional, not forensic.
Print details that protect your data
- Short URLs make better codes. Fewer characters means a lower QR version, larger modules at the same print size, and more reliable scans. This is a side benefit of encoding the short link rather than a long UTM-laden URL.
- Test the printed code, not the screen. Colors, contrast, and size behave differently on paper. Scan a proof at the real distance before the print run.
- Keep the destination fast and mobile-first. Nearly every scan is a phone on a cell connection. A slow landing page quietly eats the conversion your analytics will blame on the placement.
- Decode before you reprint. If numbers look wrong, read the code back with a QR code reader to confirm what it actually contains. Unreadable pattern and broken destination are different failures with different fixes.
When a paid dynamic-QR product is worth it
If you need branded code styling with a logo at scale, bulk generation for hundreds of SKUs, or scan analytics wired into a larger link program with an API, a link platform with QR support built in earns its keep. ReSlug includes the automatic code with every link on every plan and adds color and logo customization on Pro. What you should not pay for is the redirect trick by itself: as this guide shows, that part is a short link and five minutes of setup.
Frequently asked questions
Can you track a QR code after it has been printed?
Only if the code already contains a trackable URL. If it encodes a short link, tracking and destination edits keep working forever, since the printed pattern never changes. If it encodes the final page directly, the print cannot be upgraded: the best you can do is measure that page in web analytics without knowing which visits came from the code.
How do I see how many people scanned my QR code?
Put a short link inside the code and read the link analytics. Every scan opens the short URL, so the click count is the scan count. ReSlug shows the total, a timeline, and country and device breakdowns for each link, with 30 days of history free and 365 days on Pro.
Do I need a dynamic QR code subscription to track scans?
No. A dynamic QR code is a static code that encodes a redirect URL. Any short link gives you the same two features vendors charge for, scan logging and an editable destination, so a free short link inside a free static code is functionally a dynamic QR code.
Can QR code tracking show exactly where someone scanned?
No. Location comes from the IP address of the network the phone used, which resolves to a city or region at best, and sometimes only a country. Precise placement attribution comes from using a separate code per placement, not from more precise geolocation.
Do QR code scans show up in Google Analytics?
Scans arrive as direct traffic unless you tag the destination. Add UTM parameters to the URL behind the short link, for example utm_source=qr and utm_medium=offline plus a per-placement utm_content, and your web analytics will attribute the sessions while the short link counts the scans themselves.
Related tools
Keep reading
How Do QR Codes Work? The Complete Technical Guide
What a QR code encodes, how finder patterns and Reed-Solomon error correction work, static vs dynamic codes, and print rules that keep them scannable.
Marketing · 9 min readUTM Naming Conventions: a Practical Style Guide for Clean Analytics
A practical UTM naming convention: casing, delimiters, and a fixed vocabulary for source, medium, and campaign, plus the mistakes that split your data.
Branding · 8 min readHow to Set Up a Custom Domain for Your Short Links
Set up branded short links on your own domain: choosing the subdomain, the CNAME record, verification and auto-SSL, plus why branded links earn more clicks.