QR Code Tracking in Google Analytics

Send every scan into your GA4 reports as a properly attributed campaign visit.

Quick Answer

Google Analytics does not read QR images directly. Instead, you add UTM parameters (utm_source, utm_medium=qr, utm_campaign) to the destination URL that the QR code points to. When someone scans and lands on your site, GA4 sees those parameters and attributes the visit to your QR campaign. Use a dynamic QR code so you can edit the UTMs later if needed.

Why do QR codes need UTM parameters?

Google Analytics tracks website visits. It does not know anything about the path a visitor took before they arrived, except what is visible in the HTTP request. If a scanner opens your landing page from a physical QR code on a poster, GA sees the visit but has no way to tell it came from a QR at all. To GA, it looks like direct traffic.

UTM parameters solve this. They are query string tags that you append to the destination URL, and GA automatically parses them into source, medium, and campaign fields. When you tag the QR destination URL with something like ?utm_source=poster&utm_medium=qr&utm_campaign=fall_launch, every scan that lands on your site is correctly labeled as a fall launch poster visit.

For full reference on how UTMs and campaign tagging work, see Google's own UTM documentation.

How do you build a tagged destination URL?

Start with your plain destination URL, for example https://example.com/fall. Append a question mark and then key-value pairs for each UTM field you want to set. The three required fields in most setups are source, medium, and campaign.

A good convention for QR codes is to set utm_medium=qr so all scan traffic groups together in GA4 under a single medium. Use utm_source to identify where the code was placed (poster, menu, package, badge) and utm_campaign to identify the marketing initiative. Optionally add utm_content when you run multiple variants, like version A versus version B of a flyer.

A finished URL might look like https://example.com/fall?utm_source=tradeshow&utm_medium=qr&utm_campaign=fall_launch&utm_content=booth_east. You can build URLs by hand or use Google's Campaign URL Builder tool, which is linked from the UTM documentation above.

How do you turn that URL into a QR code?

Once you have your tagged URL, paste it into a QR code generator. You have two choices. A static QR code encodes the full tagged URL directly, which works fine but means that editing the UTMs later requires printing a new code. A dynamic QR code encodes a short redirect that forwards to your tagged URL, which lets you change the UTMs, the campaign name, or even the whole destination without ever touching the printed image.

Dynamic codes also give you their own built-in scan analytics on top of whatever GA4 reports. This is the setup we recommend: use the dynamic QR code generator to create a code that redirects to your UTM-tagged URL. You end up with two layers of data: the built-in scan dashboard and Google Analytics acquisition reports.

For campaigns where scan reliability is especially important, take a look at dynamic QR code with tracking.

Where do scans appear in GA4?

Once your tagged code is live and people start scanning it, open GA4 and go to Reports, then Acquisition, then Traffic acquisition. In the default view, you will see rows labeled by session default channel group. Switch the primary dimension to Session source or Session medium and look for your medium value (if you used utm_medium=qr, filter by qr).

To dig deeper, use the secondary dimension selector to add Session campaign and Session source. You can also open Explore and build a free-form report with dimensions set to Session source, medium, and campaign, and a metric set to Sessions or Conversions. This gives you a spreadsheet-style view of every QR campaign you are running.

If you have set up Conversions in GA4 (such as a purchase event or a form submission), you can see how many sessions from each QR campaign converted, which turns scan data into business outcomes.

Should you use GA4 instead of a QR dashboard?

Use both. The two systems answer different questions. A QR code tracking dashboard counts raw scans, including people who scanned but bounced off the landing page before GA's tag loaded. Google Analytics counts sessions on your site and links them to on-site behavior like pageviews, scrolls, and conversions.

Subtracting GA sessions from raw scans is actually useful: it tells you how many scanners left before the page loaded, which may indicate a slow landing page, a broken redirect, or an impatient audience. For background on how analytics systems complement each other, see the Wikipedia article on web analytics.

And for context on what a QR code actually is, the QR code article is a good primer.

Frequently Asked Questions

Can Google Analytics track QR code scans directly?

Not directly. Google Analytics tracks website visits. To see QR scans in GA, you tag the destination URL with UTM parameters so GA attributes the visit to a QR campaign.

What UTM parameters should I use for a QR code?

At minimum use utm_source, utm_medium (set to qr), and utm_campaign. Add utm_content to distinguish different placements of the same campaign.

Do UTM parameters break my QR code?

No. UTMs are just query string parameters. They make the URL longer but work with both static and dynamic QR codes.

Should I use static or dynamic QR codes with UTMs?

Dynamic codes are better because you can edit the UTM later if your campaign naming changes, without reprinting.

Where do I see QR scans in GA4?

In GA4, go to Reports, Acquisition, Traffic acquisition, and filter by session medium equals qr.

Related Posts

Tag, generate, and track

Create a dynamic QR code with UTM-tagged destinations and feed Google Analytics in minutes.

Get Started