linkutm Logo

QR Code Tracking: How to Track QR Codes in Google Analytics

Bhargav Dhameliya
Bhargav Dhameliya
May 1, 2026
5 min read
qr code tracking featured

A few months back, my team ran a print campaign for a client. Big magazine spread, slick design, a QR code in the corner. The post-campaign report read: “Strong reach, positive sentiment.” That was it. No scans, no clicks, no revenue numbers. Nothing.

Look, I have run hundreds of campaigns across digital channels. Every one of them gave me click data, conversion data, and ROI inside 24 hours. The print campaign gave me vibes.

That gap is exactly why QR code tracking matters. A QR code is not just a black-and-white square. Done right, it is the bridge between a magazine ad, a billboard, an event booth, a restaurant table tent, and your Google Analytics 4 dashboard.

In this guide, I will walk you through the same QR code tracking setup I use for every offline-to-online campaign now. You will learn what QR code tracking actually is, how to set it up step by step, how to feed the data into Google Analytics, and the mistakes I made early on so you do not have to repeat them.

Three-layer QR code tracking architecture showing QR code, redirect server logging scan data, destination URL with UTM parameters, and Google Analytics 4 capturing session and conversion data

What is QR Code Tracking?

QR code tracking is the process of recording and analyzing data every time someone scans a QR code, including scan count, location, device type, and timestamp. Trackable QR codes route through a short redirect URL and pass scan data to an analytics platform, turning offline interactions into measurable digital touchpoints.

Here is the thing. A QR code by itself is just a 2D barcode that encodes a URL. Scan it, and your phone opens that URL. There is nothing inherently “trackable” about the act of scanning.

What makes a QR code trackable is what happens between the scan and the destination. If the QR code points to a redirect URL (like link.yourbrand.com/expo-2026), that redirect server logs the scan before forwarding the user. If the destination URL also includes UTM parameters, Google Analytics 4 captures the source, medium, and campaign data once the user lands.

Two layers of data, one scan. That is the whole game.

The honest limitation: you cannot track who scanned the code. You can see the city, the device, the time, and (with paid tools) the operating system. You cannot see “Sarah from accounting.” Personal identity only enters the picture if the user submits a form, signs in, or makes a purchase on the destination page.

Can You Track QR Code Scans?

Yes, you can track QR code scans, but only if the QR code is dynamic and routes through a redirect URL or its destination link includes UTM parameters. Static QR codes that encode a final URL directly cannot be tracked at the QR layer.

Here is what you can track on a properly set up QR code:

  • Total scans (how many times the code was scanned)
  • Unique scans (how many distinct devices)
  • Scan location (city, region, country)
  • Device type (iPhone, Android, etc.) and operating system
  • Browser used to open the destination
  • Date and time of each scan
  • Referring placement (if you use unique codes per location)

What you cannot track:

  • The personal identity of the scanner
  • Phone number, email, or any contact data (without a form)
  • What the user did on their phone before scanning
  • Whether the user actually saw the printed material before scanning

Privacy compliance is straightforward. The scan itself does not collect personal data, so it is GDPR and CCPA compliant. The destination page is where compliance gets serious. If your landing page sets cookies, runs GA4, or captures emails, that page must comply with privacy law in the user’s region. The QR code is innocent; the page is where the legal lines live.

Static vs Dynamic QR Codes

The single most important decision in QR code tracking is choosing between static and dynamic codes. Static codes cannot be tracked or edited. Dynamic codes can.

FeatureStatic QR CodeDynamic QR Code
Destination URLEncoded directly into the codeRoutes through a short redirect URL
Editable after printingNoYes
Scan trackingOnly via UTMs at destinationAt the QR layer plus the destination
CostAlmost always freeFree tiers exist (linkutm offers 25/month free); paid plans for advanced features
Typical use caseWi-Fi credentials, vCards, plain linksMarketing campaigns, print ads, event signage
Code densityHigher (longer URL = denser code)Lower (shorter redirect URL)
Reprint cost if URL changesHigh (must reprint everything)Zero (update destination in dashboard)

Real talk: I will not use a static QR code for any campaign that needs measurement. The reprint risk alone makes it a bad call. If I print 50,000 magazines with a static QR pointing to yourbrand.com/spring-2026, and then we change the campaign URL the week after publication, those magazines are dead weight. With a dynamic QR, I update the destination once and every printed code redirects to the new page.

The trade-off with dynamic codes is that they require a service to host the redirect. That service is a dependency. If it goes down, every dynamic QR you have ever printed stops working until it comes back up. Pick a vendor with a track record (99.9% uptime SLA at minimum) and a clear migration path.

How QR Code Tracking Works (Three Layers)

QR code tracking runs on three stacked layers. Each layer captures a different piece of the picture.

Layer 1: The QR code itself. The QR generator encodes a URL into the 2D matrix pattern. For dynamic codes, the encoded URL is short (link.yourbrand.com/abc123), which keeps the code dense-but-scannable. For static codes, the encoded URL is the full destination, which can make the code visually busy.

Layer 2: The redirect server. When a user scans a dynamic QR code, their phone hits a redirect URL hosted by your QR provider. That server logs the scan (timestamp, IP-derived location, device user-agent) and then forwards the user to the actual destination page. This is where scan-level analytics live.

Layer 3: The destination URL with UTMs. The redirect forwards to a URL like yourbrand.com/spring?utm_source=poster&utm_medium=qr&utm_campaign=spring_2026. Google Analytics 4 captures these UTM parameters and attributes the session to the QR campaign. This is where post-scan behavior lives: pages viewed, conversions, revenue.

You need all three layers to do this well. Skip layer 2 (use a static code) and you lose scan-level data. Skip the UTMs in layer 3 and the user shows up in GA4 as “(direct) / (none)” with no campaign attribution.

linkutm handles layers 1 and 2 in a single step: every QR code generated through the platform is automatically dynamic, with built-in scan analytics and a trackable QR code generator that bakes UTM parameters into the destination link.

Static versus dynamic QR code comparison showing static encodes full URL with no tracking while dynamic encodes short redirect URL with editable destination and built-in scan analytics

How to Track QR Code Scans Step-by-Step

Here is the exact five-step workflow I run for every offline-to-online campaign. It takes about 10 minutes for the first campaign and under 3 minutes once you have a template.

Step 1: Build the destination URL with UTM parameters

Start with the page you want users to land on after scanning. Then layer UTM parameters on top so GA4 can attribute the traffic.

Example for an event booth at a conference:

https://yourbrand.com/demo?utm_source=conference&utm_medium=qr&utm_campaign=expo_2026&utm_content=booth_a4

A quick breakdown of what each parameter does:

  • utm_source=conference (where the scan came from)
  • utm_medium=qr (the channel type)
  • utm_campaign=expo_2026 (the specific campaign)
  • utm_content=booth_a4 (which booth or placement, useful when running multiple QRs at the same event)

Always use lowercase with no spaces. GA4 treats Conference and conference as two different sources, which fragments your reporting fast.

Step 2: Generate a dynamic QR code

Plug that full URL into a dynamic QR generator. The generator creates a short redirect URL (link.yourbrand.com/expo-2026) and returns a QR image that encodes the redirect, not the full URL.

Use a generator that supports custom domains and saves the destination on the backend. linkutm’s QR code UTM builder does both in one step and stores the campaign UTMs alongside the QR code so you can edit either later.

Step 3: Place the QR code where it will be scanned

Print size matters. A QR code smaller than 0.8 inches by 0.8 inches will not scan reliably from arm’s length. For posters and signage 4 to 6 feet from the viewer, use 1.5 inches minimum. For magazine inserts and table tents, 1 inch is usually enough.

Contrast also matters. Dark code on a light background scans the fastest. Inverted codes (light code on dark background) work but are 30 to 40 percent slower to scan in most testing.

Step 4: Read the scan data in your QR platform

Once the campaign is live, the redirect server starts logging scans. Most QR platforms show:

  • Total and unique scans
  • Scan trend over time
  • Top cities and countries
  • Top device types and operating systems

Check this dashboard daily during active campaigns. If scan counts are zero on day three, something is wrong; do not wait until the campaign ends to find out.

Step 5: Validate the data flow into GA4

Open GA4 and navigate to Reports > Acquisition > Traffic Acquisition. Filter or sort by Session source/medium and look for the source/medium combination you set in step 1 (conference / qr in the example).

If you see sessions listed under that source, the UTM data is flowing correctly. If you see “(not set)” or “(direct) / (none)” instead, the UTM parameters got stripped somewhere; usually a redirect chain or a campaign URL builder dropping query strings.

How to Track QR Codes with Google Analytics

To track a QR code in Google Analytics 4, encode a destination URL that includes UTM parameters into the QR code; GA4 then attributes scans to the campaign in the Traffic Acquisition report under Reports > Acquisition.

That is the whole answer. The QR code never talks to Google Analytics directly. Google Analytics only sees the user when they land on your page after scanning. UTMs are the carrier that tells GA4 which campaign produced that landing.

Here is the four-step setup inside GA4:

  1. Tag the destination URL with UTMs. Use the structure from step 1 above. Pick qr as your medium so QR campaigns are easy to filter in reports.
  2. Open the Traffic Acquisition report. Navigate to Reports > Acquisition > Traffic acquisition. Set the primary dimension to “Session source / medium.” You will see all UTM-tagged campaigns listed.
  3. Filter for QR-specific campaigns. In the search box, type qr to isolate scan-driven sessions. You can now see exactly how many people scanned the code, how long they stayed, and what they did.
  4. Connect to conversions. If you have GA4 conversions configured (purchase, sign-up, lead form), you can layer conversion data over the QR source to see revenue per scan and conversion rate per placement.
Google Analytics 4 Traffic Acquisition report mockup showing QR campaign source medium expo_2026 slash qr highlighted with 287 sessions and 41 conversions attributed to the QR code scan campaign

The connection between scan-level data (in your QR platform) and session-level data (in GA4) is what unlocks attribution. A scan tells you the offline placement worked. A GA4 session tells you the visit happened. A GA4 conversion tells you it generated revenue. You need all three to claim the campaign drove ROI.

For a deeper view of how UTM data feeds into broader marketing measurement, the campaign attribution guide covers the model side of attribution math.

QR Code Tracking Examples From Real Campaigns

Different placements need different UTM structures. Here are four patterns I use, with the actual UTM strings.

Event booth at a trade show. Goal: book demo calls.

https://yourbrand.com/demo?utm_source=expo_2026&utm_medium=qr&utm_campaign=lead_capture&utm_content=booth_3a

KPI: scan-to-demo-booked conversion rate. Benchmark from EventMB: 30 to 40 percent of attendees scan a well-placed booth QR; 5 to 10 percent of those convert to a booked demo.

Print magazine ad. Goal: drive e-commerce sales.

https://yourbrand.com/spring-sale?utm_source=vogue_print&utm_medium=qr&utm_campaign=spring_2026

KPI: revenue per 1,000 impressions printed. Print ads with QR codes generate 6.2x more conversions than print without (per Forbes 2023 reporting).

Restaurant table tent. Goal: loyalty program signups.

https://yourbrand.com/loyalty?utm_source=table_tent&utm_medium=qr&utm_campaign=loyalty_q2&utm_content=location_brooklyn

KPI: signups per 100 covers served. The utm_content value (location_brooklyn) lets you compare locations against each other.

Retail signage. Goal: drive online sales for an in-store sale.

https://yourbrand.com/sale?utm_source=storefront&utm_medium=qr&utm_campaign=summer_clearance&utm_content=window_decal

KPI: incremental online revenue from foot traffic that did not convert in-store. Pair with click-through rate reporting to compare scan engagement against digital ad CTR baselines.

Notice the pattern. The medium is always qr. The source describes where the scan happened. The campaign describes the marketing initiative. The content (optional) lets you slice by location, placement, or creative variant. Stick to that structure across every campaign and your GA4 reports stay clean for years.

Five-step QR code tracking workflow flowchart: build destination URL with UTM parameters, generate dynamic QR code, place code in physical location, read scan analytics dashboard, validate UTM data flow into Google Analytics 4

QR Code Tracking Mistakes I See All The Time

Five mistakes show up in nearly every audit I run.

Using a static QR you cannot update. This is the worst one. The campaign launches, the URL needs a tweak, and you cannot do anything about it without reprinting. Always go dynamic.

Skipping UTM parameters on the destination. Without UTMs, GA4 lumps all your QR traffic into “(direct) / (none).” You see scans in your QR dashboard but cannot connect them to GA4 sessions or conversions.

Inconsistent campaign naming. Spring2026, spring_2026, Spring-2026, and spring2026 are four different campaigns to GA4. Lock down naming before the first link goes out. The UTM parameters guide covers conventions in detail.

Not testing the code before printing. Print 10,000 flyers with a typo in the destination URL and you have lit the budget on fire. Always scan with three different phones (an old iPhone, a new Android, one with a strict browser like DuckDuckGo) before signing off on the print order.

Ignoring placement-level segmentation. If you run the same QR on a poster, a magazine ad, and a table tent, but use one UTM string across all three, you will never know which placement worked. Use utm_content to differentiate placements within the same campaign.

The cost of fixing these is usually zero before printing and very high after. Build a 5-minute pre-flight checklist and run it every time.

QR code analytics dashboard mockup with scan trend chart over 30 days, device type donut chart split between iOS and Android, world map showing top scan locations, and total scans counter showing 1247 scans with 342 unique users

QR Code Tracking FAQ

Can you tell who scanned a QR code?

No, you cannot identify the individual unless they sign in or submit a form on the destination page. QR scans collect aggregate device, city-level location, and timestamp data, not personal identity. If you need to tie scans to specific people, the destination page must capture that data through a form, an account login, or a purchase.

Are QR code scans GDPR compliant?

QR code scans on their own are GDPR compliant because they do not collect personal data. The destination page is where compliance gets serious. If the page sets cookies, runs GA4, or captures email addresses, the page must comply with GDPR for users in the EU and UK. Show a cookie banner and a privacy policy link on the destination, just as you would for any other landing page.

How do I add UTM parameters to a QR code?

Build the full URL with UTM parameters first, then encode that complete URL into the QR code. Most QR generators accept any valid URL, including ones with query strings. Tools like linkutm’s QR code UTM builder combine UTM construction and QR generation into a single step, which prevents the most common mistake of forgetting the parameters before generating the code.

What is the difference between a QR scan and a QR click?

A scan is the act of pointing a camera at the code. A click is when the user actually visits the destination URL. Some users scan and decide not to follow through; their phone opens a browser preview, but they tap away. The scan is logged in your QR platform; the click only registers if the destination URL is opened. Track both, but treat clicks as the more accurate engagement signal.

Can I track QR codes for free?

Yes, free QR generators with basic tracking exist. linkutm offers 25 free QR codes per month with full scan analytics. Paid plans typically add geographic heatmaps, device breakdowns, longer data retention, and bulk creation. Free is fine for one or two campaigns; paid pays for itself when you are running 10+ campaigns or need more than 30 days of data history.

Why is my QR code showing zero scans?

Common causes include encoding the wrong URL, the redirect server being down, the QR being printed too small (under 0.8 inches square), insufficient contrast between code and background, or the placement being in low-traffic areas. Test with three different phones and verify the redirect resolves before assuming the placement is the problem.

Stop Running Print Campaigns You Cannot Measure

The print campaign that started this article eventually got fixed. We swapped the static QR for a dynamic one, added UTM parameters, and re-ran the next issue. The follow-up campaign attributed 612 scans, 287 sessions in GA4, and 41 demo signups directly to the magazine spread. Same creative. Same magazine. Different tracking.

Real talk: the data was not the magic. The magic was knowing the campaign worked and being able to defend the budget at the next planning meeting. That is what QR code tracking buys you.

If you want a fast way to start, linkutm’s trackable QR code generator creates dynamic QR codes with built-in UTM tagging and scan analytics on the free tier. Print, scan, watch the data flow into GA4.

Bhargav Dhameliya

About Bhargav Dhameliya

Share this article

Ready to track your campaigns better?

Join thousands of marketers who use linkutm to build, track, and manage their marketing campaigns with ease.

Get Started for Free