Skip to content
UseQR
ESC

Jump to

MOVEOPEN50 places

How-to guides

How to use Google Analytics with QR codes

Tag each code's URL with UTM parameters, then read scans in GA4 under Acquisition by filtering the session source and medium dimensions. Use the Realtime report to field-test a placement in seconds. GA cannot see scans that never loaded the page, and blockers make it undercount against server logs.

View as MarkdownPaste this page into any AI assistant. It is plain, portable Markdown.

The chain: scan → UTM → session attribution

Google Analytics never sees a scan. It sees a page load carrying parameters, and attributes the session from them. So QR tracking in GA4 is three links:

  1. The code encodes a URL tagged with UTM parameters: utm_medium=qr, utm_source per placement, built with the URL generator's UTM fields.
  2. The phone loads the page; the GA4 tag fires and records the session with that source and medium.
  3. You segment QR traffic in reports by those dimensions.

Anything that breaks a link in the chain (a stripped parameter, a consent-blocked tag) silently drops the scan from GA, worth remembering when the numbers look low.

Where the data appears in GA4

  • Reports → Acquisition → Traffic acquisition, then filter or search on the session source/medium dimensions, with the convention above, medium = qr shows every scan-originated session across all campaigns, and source splits them by placement.
  • utm_campaign appears in the session campaign dimension for cross-referencing with your other channels.
  • For conversion questions ("did scanners book?"), mark the relevant event as a key event and slice it by the same dimensions.

GA4's UI labels drift between versions, but the session source/medium/campaign dimensions are the stable ground truth. Anything you build (Explorations, dashboards) should sit on those.

The Realtime field test

The most practically useful GA4 feature for QR work: Reports → Realtime. Stand in front of the freshly hung poster, scan it, and watch the session appear within seconds, with its source and medium attached. That single test proves the whole chain (code, URL, tags, GA property), in under a minute, before anyone else scans. Do it once per placement on install day.

The landing-page-per-placement pattern

UTMs are the standard, but a parallel belt-and-braces approach is giving each placement its own path: /qr/window, /qr/counter, /qr/bag-insert, each redirecting (with UTMs) to the real destination. GA4's landing page dimension then separates placements even if parameters get lost, your server logs independently count every hit, and the codes stay short: the architecture is Option 2 in tracking scans without a paid tool.

What GA cannot tell you: honestly

  • Scans that never became page loads. Someone scans, sees the URL preview, doesn't tap: no signal exists anywhere. GA measures visits, not scans; treat every GA number as a floor.
  • Blocked and unconsented sessions. Ad blockers and declined consent banners stop the GA tag entirely, so GA undercounts relative to your server logs, if the gap matters, count at the redirect (server-side) and use GA for behaviour.
  • Who scanned, or repeat scanners. The code carries no identity; nothing downstream can conjure it.
  • A "good" scan rate. GA gives you numbers; for calibration on what to expect, see what scan rate is realistic and the scan rate definition.

Before printing, decode the artwork with the validator and check the UTM string character by character, a typo in utm_medium splits your data permanently.

FAQ

How do I see QR code scans in Google Analytics?

Encode URLs tagged with UTM parameters, then open GA4's Traffic acquisition report and filter session medium for your QR value. Each tagged placement appears under its own source.

Why does Google Analytics show fewer scans than expected?

GA only counts loads where its tag ran. Scans abandoned at the URL preview, visitors with ad blockers, and declined consent banners all vanish. Your server logs at a redirect count strictly more.

Can GA4 tell me which QR placement performs best?

Yes, if each placement gets distinct tags (utm_source or utm_content per asset), or its own landing path. Identically tagged codes are indistinguishable forever, so differentiate before printing.

Do I need Google Tag Manager for QR tracking?

No. UTM attribution works with a plain GA4 tag. Tag Manager helps only if you want extra events on the destination page, which is independent of how the visitor arrived.

Try it: free, no signup