← All posts

Analytics · 9 min read

QR Code Analytics: A Complete Guide to What You Can Track

July 12, 2026

QR analytics is the invisible half of every printed campaign. Done right, it tells you which flyer worked, which city cared, and whether the audience was who you thought it was. Done wrong, it tells you a number and nothing else.

Everything a dynamic QR scan captures

Time

The exact millisecond the redirect was requested. Aggregate by hour to find peak scan windows; aggregate by day to see campaign momentum.

Geography

Country, region, and city — inferred from the IP address that hit the redirect. Country is ~99% accurate. City is right most of the time on residential and business networks; less reliable on cellular, where the tower's IP might be hundreds of miles from the user.

Device

Mobile, tablet, or desktop, plus OS name and version. Useful for spotting audience skew — a code on outdoor signage should be almost entirely mobile; anything else suggests bots or manual URL-typing.

Browser

Browser name and version. Because most in-app scanners open the URL in the app's embedded browser (Instagram's, Facebook's, TikTok's), this field also tells you which social platform your scans are coming from.

Referrer

Where the scanner came from before hitting the link. For camera-app scans this is empty. For in-app scans it often includes the source app. Sparse but occasionally revealing.

Bot flag

Most analytics tools mark scans that look automated — link previewers, security scanners, uptime monitors. QR Lift filters these out of the primary count and shows them under a separate 'automated' tab.

What you cannot capture

  • The scanner's identity — no email, phone, or name.
  • Precise GPS location. Only IP-based geo.
  • Actions after the redirect. That's the destination page's job (see below).
  • The physical location of the printed code — unless you use different codes for different placements.

Combining QR analytics with Google Analytics

QR analytics ends at the redirect. Google Analytics starts at the landing page. To measure the full funnel, put UTM parameters on your dynamic code's destination URL.

Example destination: https://your-site.com/summer?utm_source=qr&utm_medium=poster&utm_campaign=summer&utm_content=coffee_shop_A. GA will now attribute every session and conversion from that scan to that campaign — and utm_content lets you compare placements even if they share a destination.

The one metric almost everyone misses

Scans-per-day-per-code is more useful than total scans. A code that averages 12 scans/day for 90 days beats a code that got 800 scans in week one and died. The former is a working evergreen placement; the latter is a launch spike. Track both.

Reporting patterns that work

  1. Weekly: total scans, unique-device scans, and top-3 countries.
  2. Monthly: scans-per-day trend, best and worst placement, device split.
  3. Per-campaign: cross-reference with the GA campaign report to compare scans to conversions.

Try QR Lift free

Three dynamic codes, no watermark, no expiring links. Set up in under two minutes.

Create your first code