Back to Blog
Analytics

QR Code Tracking 101: Every Number You'll See, Explained

May 9, 20265 min read
QR Code Tracking 101: Every Number You'll See, Explained

Tracking a QR code is just as nuanced as tracking a website. Here's a plain-English guide to every metric your dashboard will show, what it actually measures, and which ones to ignore.

Total Scans vs Unique Scans

Total scans is every single scan event, including the same person scanning four times to test it. Inflated by curiosity scans, debugging, and people trying to take a screenshot of the page after.

Unique scans is rough — usually deduplicated by IP + user-agent + a 24h window. It's an estimate of distinct human scanners. Use this number for almost every business decision.

Scans by Hour / Day

Worth more than people think. If your code is on a flyer near a coffee shop, you should see a morning spike. If your code is on a tradeshow banner, you should see Tuesday-Thursday spikes during conference hours. If you don't see the spike pattern you expected, your placement isn't being noticed.

Scans by Location

Almost always derived from IP geolocation, accurate to the city/region level — not the street. Useful for confirming the right audience is finding it (Tuscany printed the menu, scans came from Tuscany — good). Useless for "did this exact placement work?" — for that, use distinct codes per placement.

Scans by Device / OS

iOS vs Android matters because your landing page experience may differ. Heavy iOS skew on a code in a working-class neighborhood is a clue that demographics aren't matching expectations. Useful for landing-page optimization more than for QR strategy.

Scan-to-Conversion

The metric that actually matters and the one most QR dashboards don't show natively. You'll need to:

  1. Add a UTM-tagged URL as the QR's destination so Google Analytics or PostHog tracks it as a distinct source
  2. Define a conversion event on the destination page (signup, purchase, click)
  3. Compute scan-to-conversion = (conversions from QR source ÷ unique scans on that QR)

A 5% scan-to-conversion is good for most B2C use cases. Below 2%, your landing page is probably the problem, not the QR.

The metric that doesn't matter (but everyone obsesses over)

Total scan count, week over week. Especially for printed campaigns, scan count drops over time as the novelty wears off, materials get torn down, and people who already scanned don't re-scan. A declining total-scans line isn't a campaign failing — it's a campaign aging normally. What matters is whether scans-per-thousand-impressions stays steady when you re-print.

How to instrument it correctly

  1. Use a distinct dynamic QR code per placement. One code per flyer batch, one per location, one per channel. Otherwise you can't tell which placement worked.
  2. Use UTM parameters on the destination URL (?utm_source=flyer-batch-3&utm_medium=qr&utm_campaign=spring-sale) so your downstream analytics inherits the source.
  3. Don't use a URL shortener as the QR's destination. Adds an extra hop, can break referrer data, and one provider going down kills two layers instead of one.

→ Make a tracked dynamic QR

Ready to create beautiful QR codes?

Make your own in 30 seconds — no signup required to try.