QR Code Marketing & Strategy

How to Track QR Code Scans: Analytics and Measurement Guide

Data flow from a scanned poster into a dashboard used to track QR code scans

You printed the poster, added a code to the flyer, and stamped one on the packaging — and now the obvious question: which one actually worked? To track QR code scans is to answer exactly that, and the widely repeated claim that you need a pricey dynamic-code subscription to do it simply isn’t true. There are two honest methods. One is free and works with any static code you already have. The other costs a subscription but adds scanner-level detail. This guide walks through both, starting with the free UTM method most guides skip past because it doesn’t sell software. By the end you’ll have a zero-dollar measurement stack: a tagged link, a code, and a report that tells you which surface earns its visits. One caveat up front: no method counts every scan. A phone can decode a code without anyone opening the link, so what you can measure is the visits (or redirect requests) that follow a scan.

Why Track QR Code Scans at All?

Without measurement, a QR campaign is a guess wearing a suit. You spent money on print, design, and placement — but if you can’t see which code drove visits or sales, you can’t repeat the wins or cut the duds.

Consider a bakery running three codes at once: one on the shop window, one on delivery boxes, and one in a local magazine ad. All three point to the same online-ordering page. Without tracking, the owner knows total orders went up but has no idea which placement did the work. With tracking — to use a hypothetical result — she might see that the delivery-box code accounts for most of the tagged visits and orders, so she doubles down there and drops the magazine.

That’s the whole point of QR code analytics: turning a vague “it seemed to help” into a clear “this surface earns its ink.” Scan measurement closes the loop between an offline touchpoint and an online result, which is the exact capability print marketing lacked for a century. If you want the strategy that sits above measurement — which campaigns to run in the first place — our QR code marketing strategy guide covers it.

The Two Ways to Track QR Code Scans

Here’s the myth worth killing first: “static codes can’t be tracked.” Not true. You can measure the results of any code — static or dynamic — because measurement happens where the scan leads (a redirect or your website), not inside the pattern.

There are two methods of QR code tracking, and they answer slightly different questions.

Method 1: UTM + staticMethod 2: Dynamic code
What it measuresRecorded visits, sources, key eventsRedirect requests (link opens), device, location
CostFree foreverMonthly subscription
SetupTag a URL, generate codeAccount with a provider
ReliabilityNothing to lapseCode dies if plan ends
Best forMost campaignsScanner-level detail

Method 1 tags your destination URL so the visits that scans produce show up in your normal web analytics — free, and the star of this guide. Method 2 routes the code through a provider’s redirect server that logs each request to the redirect before your page loads. Most teams need only Method 1. Let’s build it.

Method 1 — Track QR Code Scans Free with UTM Parameters

UTM parameters are short tags added to the end of a URL that tell your analytics where a visitor came from. They’re the same tags email and social campaigns have used for years — and they work perfectly with QR codes. This is how you measure QR code scans without paying a cent.

Step 1 — Build the Tagged URL

Start with your destination and append three tags. A spring-sale poster might use:

yoursite.com/sale?utm_source=flyer&utm_medium=qr&utm_campaign=spring-sale

Each tag has a job: utm_source names the placement (flyer), utm_medium names the channel (qr), and utm_campaign names the promotion (spring-sale). Don’t hand-type these — use a free UTM link builder to assemble the link cleanly and avoid typos that split your data into duplicate rows.

Step 2 — Generate the Code from the Tagged URL

Copy the full tagged URL, then paste it into a free QR code generator as a standard URL code. QRocket encodes the entire link, tags and all, into a static pattern. The tags ride along invisibly — the scanner just lands on your page, while your analytics quietly record where they came from.

Because everything lives in the destination URL, a plain static code does the job. There’s no redirect and nothing to renew. New to the basics? Our guide on how to create a QR code for free covers generating a URL code start to finish.

Step 3 — Read the Results in Google Analytics

This only works if analytics is installed on the destination page and you can see its reports — so the destination should be a site you control. Open Google Analytics 4 and go to Reports → Acquisition → Traffic acquisition. Set the dimension to “Session source / medium,” and the tagged visits appear as flyer / qr — separated from your other traffic. These are sessions GA4 recorded, not scans: someone who scans twice may count once or twice, and visitors who decline analytics cookies or block tracking may not be counted in full. To measure outcomes, not just visits, mark your goal (a purchase, a signup) as a key event in GA4 (the actions you treat as conversions). Now you see not only how many tagged visits arrived, but how many did what you wanted.

One Code per Placement: The Attribution Trick

Here’s the move that unlocks real insight: give each placement its own uniquely tagged code. Change one tag — usually utm_content — per surface: utm_content=window on the shop window, utm_content=box on packaging, utm_content=magazine in the ad.

Same destination, three different tagged codes. In GA4, utm_content fills the Manual ad content dimension (Google’s traffic-source dimension reference), not “Session source / medium” — so to see the split, build an Exploration (Explore → Free form) with Session manual ad content as the rows and Sessions and Key events as the values, or add it as a secondary dimension where your reports offer it. Each placement then shows up as its own line you can rank by visits and key events. That habit answers the question that stumps most marketers: which poster, flyer, or box actually drives traffic?

Tag your URL, then make the code — free static codes carry UTMs perfectly. — Create Your Free QR Code

Method 2 — Dynamic QR Codes with Built-In Analytics

Sometimes you need data the destination page can’t see — and that’s where dynamic codes earn their subscription. A dynamic code routes through a provider’s redirect server, which logs each request as soon as someone opens the link, before your page loads.

That redirect hop captures things UTM tracking can’t: a count of requests to the redirect (the closest thing to a scan count), usually an estimate of unique scanners, coarse location (city or region), device and operating system, and timestamps. It also counts link opens that your page analytics misses — for example, when the visitor declines analytics cookies or leaves before the page finishes loading. It still can’t count a camera decode where nobody taps the link, and bots or link previews can add requests, so treat it as an approximation too.

The trade-offs are real. Dynamic codes cost a recurring subscription, and the code stops working if the plan lapses or the provider shuts down — the pattern is fine, but the redirect dies. For the full comparison of what you gain and give up, see our guide on static vs dynamic QR codes. The honest rule: reach for dynamic only when scanner-level detail genuinely drives a decision.

What Scan Data You Can (and Can’t) Collect

It helps to see exactly what QR code scan data each method reveals — and what neither one can, no matter what a sales page promises.

Data pointUTM + static (free)Dynamic code (paid)
Sessions and page viewsYesVia landing page
Source / placement splitYesYes
Conversions and goalsYes (GA4 events)Only if page loads
Redirect requests (approximate scan count)NoYes
Unique scannersNoEstimated
Device type and OSYes (GA4)Yes
Coarse location (city)Yes (GA4)Yes
Link opens that analytics doesn’t recordNoYes
Camera decodes where nobody opens the linkNoNo
Personal identity or precise GPSNoNo

That last row matters. Neither method identifies the individual scanning your code or pinpoints their exact location without their explicit consent. QR analytics measures behavior in aggregate, not people by name.

Which brings up privacy. If you track scans, disclose it on your landing page and honor the analytics consent banners that laws like GDPR require. Worth noting: QRocket doesn’t see or count scans of your codes — codes are generated in your browser and point straight at your URL, so there’s no QRocket redirect and no scan database on our side. Any tracking you do runs entirely through your own analytics, under your own privacy policy.

A Simple QR Reporting Setup

You don’t need a fancy dashboard to make this useful. A single spreadsheet with four columns — placement, week, tagged sessions, key events — turns raw analytics into a decision-making tool. Update it weekly and patterns jump out fast.

Want it prettier? Pipe your GA4 data into a free Looker Studio report and chart tagged sessions by campaign over time. Either way, the goal is the same: a view that ranks your placements so budget flows to what works.

Key takeaway: Start simple. One tagged code per placement plus a weekly spreadsheet beats an expensive dashboard nobody checks.

A deeper metrics guide can define every term — unique versus total scans, scan-to-conversion rate — but you don’t need that vocabulary to begin. Tag, generate, and read; the definitions make sense once you’ve watched real numbers move for a week.

Let the Numbers Pick Your Next Print Run

The reason to measure isn’t to admire charts — it’s to stop paying for placements that don’t pay you back. Once you can see that the packaging code drives three times the tagged visits of the magazine ad, every future print budget gets smarter on its own. Build one tagged QRocket code per placement this week, and by next week your analytics will tell you which surface earns its ink. That single loop — tag, print, read, adjust — is the entire discipline of QR measurement, and it costs nothing but a few minutes of setup.

Frequently Asked Questions

Can I track how many people scan my QR code?

Not exactly, but you can get close. Tag the destination URL with UTM parameters before generating the code, and the visits that follow a scan appear as sessions in your analytics, attributed to that campaign — free, as long as analytics runs on the destination. Sessions aren’t scans or people: visitors who decline analytics may not be counted, and one person can visit twice. A dynamic code with redirect logging counts requests to the redirect, which is closer to a scan count but costs a subscription. No method counts a scan where nobody opens the link.

Can static QR codes be tracked?

Yes, at the destination level. A UTM-tagged static code lets your analytics attribute sessions, traffic sources, and key events just like any other tagged link. Redirect-side data — a count of requests to the code’s link, device data captured before the page loads — requires a dynamic redirect service. For most campaigns, destination tracking is plenty.

What data can QR code analytics show?

UTM tracking shows recorded visits, traffic sources, campaign splits, and key events (conversions) through tools like Google Analytics. Dynamic-code dashboards add redirect request counts, estimated unique scanners, device types, coarse location, and timestamps captured at the redirect. Neither approach reveals a scanner’s identity or precise location without their explicit consent.

Do I need Google Analytics to track QR scans?

No, though it’s the common free choice. Any analytics tool that reads URL parameters can attribute UTM-tagged visits, so if you already run a different platform, it works too. Google Analytics 4 is popular simply because it’s capable and free, making it a natural fit for a zero-cost measurement setup.

How do I know which poster or flyer got scanned?

Give each placement its own uniquely tagged code, changing the utm_content value per surface — window, box, magazine. In GA4, utm_content appears in the Manual ad content dimension (for example, as rows in an Exploration), so each placement shows up as a separate line you can rank by visits and key events. That one habit shows which printed piece drives the most traffic.

Ready to make yours?

Create a free QR code with custom colors, your logo and print-ready downloads — no sign-up.

Create a free QR code →