Enqre
Back to blog

Published on 7/31/2026

QR Code Analytics: What You Can Actually Measure

A printed QR code is the rare piece of offline marketing that reports back. But the numbers are easy to misread, and most articles on the subject quietly overstate what a QR code can see. This is a practical guide to the metrics that exist, what each one actually means, and where the ceiling is.

First: only dynamic codes are measurable

A static code encodes the destination directly — the phone goes straight there and nothing in between records it. A dynamic code encodes a short link that resolves on a server, and that resolution is the measurement. If tracking matters to you, the choice is made before you print anything. (See what a dynamic QR code is.)

Scans vs unique visitors

These two answer different questions and are routinely confused.

  • Scans count every resolution of the link. One person who scans the table tent on Monday and again on Friday counts twice. This is your volume metric — good for comparing placements and tracking a campaign over time.
  • Unique visitors estimate how many distinct people scanned. Enqre derives this from a truncated hash of the IP address — no cookies, no device identifier, nothing stored that identifies a person. It is an estimate, not a headcount: everyone on the same café Wi-Fi shares an IP and may collapse into one visitor, while a phone that switches from mobile data to Wi-Fi can count twice.

The ratio between them is the interesting part. Scans far above uniques means people return — typical of a menu or a Wi-Fi page. Scans roughly equal to uniques means one-and-done, which is what you expect from a flyer or a package insert.

Scans over time

A daily series over the last 7, 30 or 90 days is where campaigns become legible. What to look for:

  • The first-48-hours spike after a mailing or a poster goes up — and how fast it decays. A flyer that dies in two days and a package insert that trickles for months are different products.
  • Day-of-week rhythm. Restaurant codes peak Friday and Saturday evening; office-lobby codes are flat on weekends. If your rhythm looks wrong, the code is probably somewhere you did not intend.
  • The long tail. Printed material keeps circulating. Scans months after a campaign ended are real and worth a destination that is still valid.

Device, OS and browser

Every scan is parsed from the user-agent string into device type (mobile / tablet / desktop), operating system and browser. Three things this is genuinely good for:

  • Testing priority. If 70% of your scans are iOS Safari, that is the browser your landing page must be flawless in.
  • Spotting desktop traffic. Desktop scans usually mean someone opened the link from a screenshot or forwarded it — useful to know, and a hint your code is circulating digitally rather than being scanned off paper.
  • App decisions. An OS split tells you whether an App Store or a Play Store link deserves top billing.

Referrers

When a scan arrives from a browser rather than a camera, the referring page is recorded. In practice this separates true camera scans (no referrer) from clicks on the same link that ended up in a chat, an email or a web page. If your "QR" numbers are mostly referred clicks, your code is being shared as a link — which is fine, but it changes how you interpret the totals.

Bots do not count

Paste a short link into WhatsApp, Slack or LinkedIn and the platform fetches the page to build a preview. Crawlers do the same. Left alone these inflate a fresh campaign by dozens of phantom scans in the first minutes. Enqre filters known crawler and link-preview agents before recording, so a preview fetch never becomes a scan.

UTM tags: connect scans to what happened next

Scan analytics stop at the redirect. They tell you the visit happened, not whether the person bought anything. UTM parameters bridge that gap: add utm_source, utm_medium and utm_campaign to the destination and your web analytics attributes the session — and any resulting purchase or signup — to that exact code.

A convention that survives contact with reality: source = the physical medium (flyer, table-tent, package), medium = qr, campaign = the specific run (spring-menu-2026). One code per placement, distinct tags per code, and the comparison between placements finally means something.

CSV export

For anything beyond the built-in charts, export the raw scan log — date, device, OS, browser and referrer, one row per scan — and pivot it wherever you like. That is also how you keep a record when a code is retired, and how you join scan data with sales in a spreadsheet. Available on the Pro and Business plans.

What QR analytics cannot tell you

Worth stating plainly, because plenty of marketing implies otherwise:

  • Who scanned. No names, no identity. A truncated IP hash and a user-agent string, nothing more.
  • Whether they converted. Not without UTM tags and analytics on the destination.
  • Whether the scan was a real camera scan. A missing referrer strongly suggests it, but a direct link paste looks the same.
  • Enqre does not track location. No country, no city, no coordinates. If you need geographic reporting, that has to come from analytics on the destination page.

How to set up a campaign you can actually read

  1. One code per placement. Same offer on a poster and a flyer? Two codes. Merged numbers cannot be un-merged later.
  2. Name them for your future self — "Poster · Station · March", not "QR 4".
  3. Add UTM tags before printing, so no scan is ever unattributed.
  4. Note the print date so you can read the decay curve against it.
  5. Check at 48 hours, one week, one month. Anything more often is noise.
  6. Keep the destination alive. A dynamic code lets you repoint it when the campaign ends instead of stranding late scanners.

Enqre gives every dynamic code scans over 7/30/90 days, unique visitors, device, OS and browser breakdowns, bot filtering, UTM support and CSV export — cookie-free, with no location tracking.

Frequently asked questions

Can I track a static QR code?

No. Nothing sits between the phone and the destination. The only workaround is putting a tracked URL inside the static code — at which point you have the maintenance problems of a static code with the tracking of a dynamic one, and no way to change either.

Why are unique visitors lower than scans?

Because people scan more than once, and because visitors sharing one network can look like a single visitor. Both effects push uniques down. Treat the number as a floor, not a precise count.

Do QR analytics need a cookie banner?

Enqre's scan tracking sets no cookies and stores no identifiers — only a truncated IP hash, device, OS, browser and referrer. Your destination page is a separate matter: if it sets analytics or ad cookies, that page needs consent.

How long is scan data kept?

Scan history stays available for the life of the code, and you can export it to CSV at any time. Delete the code and its scan history goes with it.