qr code analyticstrack qr code scansqr code trackingdynamic qr code

How to Track QR Code Scans: A Practical Guide

You can only track a QR code if it's dynamic. Here's how scan tracking actually works, what data you get, and how to read it without fooling yourself.

Sarkhan··7 min read

You printed 500 flyers with a QR code, stuck them up around town, and now your boss asks the obvious question: did anyone actually scan it? If you made the code with a free generator, the honest answer is you have no idea. The code works, people might be scanning it all day, and you are still completely blind. Tracking scans is not something you bolt on afterward. It has to be built into the code from the start, and most codes are not.

You can only track a dynamic QR code

This is the part people miss, so it's worth being blunt about. There are two kinds of QR codes, and only one of them can be tracked.

A static QR code has the destination address encoded directly into the black and white squares. When someone scans it, their phone reads the URL straight off the pattern and goes there. Nothing sits in between, which means there is no point where a scan could ever be counted. A static code is untrackable by design, not by accident.

A dynamic QR code encodes a short link instead of the real destination. The scan hits that short link first, gets counted, and then forwards the person to wherever the link points. That extra hop is the whole trick. Every scan passes through a checkpoint you control, so every scan can be measured. If you want numbers, you need a dynamic code, full stop. (If you are fuzzy on the difference, we wrote a whole piece on dynamic vs static QR codes.)

What the redirect actually records

When a scan passes through the short link, the redirect happens in a few milliseconds and the person never notices it. But in that moment, the link records a handful of things about the scan itself, not about the person:

  • The time it happened, so you can see scans build up day by day.
  • A rough location based on the network, usually down to the country.
  • The kind of device, since a scan is almost always a phone but the model and OS still tell you something.

None of this is personal. There is no name, no email, no tracking someone across the web. It's the same anonymous data you'd get from a web server log, which is to say useful in aggregate and meaningless about any one individual.

Scans and clicks are not the same number

Here's where it gets genuinely useful, and where a lot of tools quietly let you down. The same short link can be reached two ways: someone scans your printed code, or someone taps the same link online. If your analytics lumps those together, you can't tell your flyers apart from your Instagram bio.

Linxly splits them. Behind the scenes every visit is tagged with how it arrived, a scan or a click, and the dashboard shows them as separate totals. So you don't just see "1,200 visits." You see 1,200 visits made up of 840 link clicks and 360 QR scans. That second number is the one that answers your boss. It's the only honest measure of whether the physical thing you printed did anything at all.

info

A click and a scan can point at the exact same destination and still be worth tracking apart. The click came from someone already on their phone, online. The scan came from someone standing in front of your poster who chose to pull out their camera. Those are very different levels of intent.

What to do with the numbers

Counting scans is the easy part. Reading them is where the value is.

The most obvious use is comparing placements. Put a different short link behind the code on your window poster and the code on your table tents, and within a week you'll know which one people actually scan. I have seen a cafe discover that the code on their receipts outperformed the big one in the window by a wide margin, which is not where anyone would have bet.

The second use is timing. Because scans are stamped with a time, the daily chart shows you exactly when a campaign lands. A spike the morning after you handed out flyers at an event is your proof the flyers worked. A flat line for two weeks is also proof, just the kind nobody wants.

And the third use is the one static codes can never give you: fixing things after the fact. If the scans are coming in but nobody is converting on the landing page, the problem is the page, not the print. You repoint the link to a better page and every code already out in the world starts sending people there instead. The flyers don't change. Where they lead does.

How to set this up in Linxly

You don't generate a QR code as a separate task and wire up tracking by hand. It comes with the link.

  1. Create a short link for whatever you're promoting with the URL shortener. This is the dynamic part: the printed code will point here, and you can repoint it anytime.
  2. Its QR code is generated automatically from that link. Add your brand color and drop a logo in the middle so it doesn't look like a generic black square. (The logo and color options are part of the paid plans.)
  3. Download it as a PNG or SVG and send it to print.
  4. Open the link's analytics whenever you want. Scans, link clicks, the daily chart, and the country and device breakdowns are all there, with scans counted on their own.

The codes are built with the highest of the four error-correction levels defined by QR's inventor, Denso Wave, which can rebuild a code even when close to a third of it is obscured (Denso Wave). That's what lets you put a logo in the dead center without breaking the scan, and it's also why a slightly scuffed printed code still reads fine.

tip

If you're running more than one printed thing at once, give each its own short link instead of reusing one code everywhere. It costs you nothing and it turns "we got some scans" into "the table tents beat the window by three to one."

The bottom line

Tracking QR scans isn't a feature you turn on. It's a decision you make when you create the code, and the static codes that free generators hand you have already made it for you: no tracking, ever. A dynamic code routes every scan through a checkpoint you own, counts it separately from your online clicks, and stays editable long after it's printed. The market figured this out a while ago, which is why dynamic codes made up the majority of QR use in 2024 (Grand View Research). If a printed code is worth making, it's worth knowing whether anyone scanned it.

Create a trackable QR code

Start 7 day free trial. Cancel anytime.

Get started

Frequently Asked Questions

Can you track scans on a static QR code?

No. A static code has the destination baked into the pattern, so the scan goes straight there with nothing in between to count it. Only a dynamic code, which routes through a short link first, can record scans.

In Linxly, every visit to a link is tagged by how it arrived. The link's analytics shows total visits, link clicks, and QR scans as separate numbers, so you can tell printed traffic apart from people tapping the same link online.

What information does a QR scan record?

The time of the scan, a rough location down to the country, and the type of device. It's anonymous and aggregate, with no name, email, or cross-site tracking attached to any scan.

Do I need a separate tool to track scans?

No. Every short link, deep link, and bio link in Linxly comes with its own dynamic QR code and built-in scan tracking. You manage the code and its numbers in the same place as the link.

Is QR scan tracking free?

You can try Linxly free for 7 days with full access, including dynamic QR codes and scan analytics. After the trial, plans start at $0.99 a month, billed monthly, cancel anytime.

More articles

See all posts