You printed a QR code on a flyer, a table tent, a yard sign - or all three - and now you want to know whether anyone actually scanned it, and which placement worked best. This guide walks through the two practical ways to track QR code scans with Google Analytics (UTM parameters in your destination URL, and dynamic QR codes that count scans on the redirect), plus the GA4 reports that actually show you what's working.
You don't need a paid analytics tool to start. Google Analytics 4 (GA4) is free, and the most common QR-code tracking setup costs nothing to implement once you've added the GA4 tag to your destination site.
Looking for just the setup steps? Jump to the dedicated step-by-step GA4 setup guide - this article covers the broader why and what; that one covers the exact configuration with troubleshooting.
QR code analytics let you see how your QR codes are performing. Think of it as a report card for your QR campaign. With dynamic QR codes (codes that can be edited after creation), you can track data like:
This data helps you understand your audience better and make informed decisions for future campaigns.
Tracking QR code analytics isn’t just a nice-to-have; it’s essential. Here’s why:
Google Analytics doesn't "see" a QR code directly - it sees the URL the QR code resolves to. So tracking QR scans is really about making each QR's destination URL distinguishable, then reading the right GA4 report. Here are the two patterns that actually work.
Best when you control the destination page and have a small number of QR placements you want to compare.
utm_source, utm_medium, and utm_campaign for each placement. Example: https://yoursite.com/landing?utm_source=table-tent&utm_medium=qr&utm_campaign=summer-menu.gtag.js snippet for your GA4 property ID must be installed on every page the QR can land on, or scans won't be counted.Downside: a static QR's UTM tags are baked in. To change the source name later, you'd need to reprint.
Best when you want both scan counting at the QR level and destination-side attribution in GA4.
utm_source, utm_medium, utm_campaign. The dynamic short link passes the UTM parameters through on redirect.Bonus: with a dynamic QR you can change the destination URL after printing - useful when campaigns rotate or a typo'd link needs fixing.
If you don't have GA4 installed on the destination site, a dynamic QR generator's own dashboard is the simplest path. whew.cc's dynamic-link analytics surface scans, devices, geographies, and time-of-day patterns in one view, with no setup beyond creating the link.
If you already have GA4 on the destination site, the only real configuration on the GA4 side is making sure your session source/medium reports cleanly separate the QR traffic from everything else. Three small habits prevent most attribution mistakes:
QR and qr as separate mediums. Pick one and stick to it (we recommend qr as the medium for all QR placements).summer-menu-2026 beats Summer Menu because lowercase + hyphens never collide and never get truncated by analytics tools that strip spaces.A complete QR analytics setup answers three categories of question:
The first two answer "did the QR get seen?" The third answers "did it move the needle?" - which is what matters for justifying the print spend.
QR on Monday and qr on Friday creates two separate sources in GA4. Reports look like ghost-traffic from two different campaigns.QR codes are most effective when:
Creating dynamic QR codes with built-in analytics is easy and effective with our platform. Here’s why you’ll love it:
utm_source, utm_medium, and utm_campaign parameters; encode that URL as a QR code; and make sure the destination page has the GA4 tag installed. In GA4, open Reports - Acquisition - Traffic acquisition and filter Session source / medium by the values you used in the URL. Each unique QR placement will show as its own row.utm_source value. In GA4 Traffic acquisition reports, each one becomes a distinct row so you can compare which printed placement drove the most sessions and conversions.?utm_source=table-tent&utm_medium=qr&utm_campaign=summer-menu) that tell Google Analytics where a click came from. For QR codes, the convention is utm_medium=qr, utm_source=the specific physical placement, and utm_campaign=the marketing campaign name. Build them in 30 seconds using the UTM builder.Tracking QR code analytics doesn’t have to be complicated. With the right tools and strategies, you can gain valuable insights and elevate your marketing game. Ready to see the difference? Generate your dynamic QR code with analytics now and take the guesswork out of your campaigns.
Keep exploring QR codes and short links: