Home/ Guides/ How to track QR code scans
Guide · QR codes & analytics
How to track QR code scans.
A printed QR code can't count its own scans — it's just an image, and there's no analytics baked into the dots. The fix is to put a short link behind the code, so every scan becomes a click you can measure. Here's how it works, how to tag a print campaign with UTMs, and how to read the numbers.
The short answer
Put a short link behind the QR. Every scan becomes a tracked click.
A QR code just encodes a URL — there's nothing inside it to count opens, and a printed sticker can't report back. So you don't track the code; you track what it points at. Encode a short link instead of the raw destination, and the redirect logs every scan with its country, device, browser and time. The scan total is the click total on that link.
Static — no analytics
- Encodes the destination URL directly
- No way to count opens — it's just an image
- Long URL = dense matrix, harder to scan
- Destination is frozen once it's printed
Tracked — every scan counts
- Encodes a short link that redirects on open
- Each scan = a click with geo, device and time
- Short URL = simpler matrix, scans from across the room
- Change where it points after the stickers are printed
Want to try it now? Make one with the free slsh.me QR code generator — encode a short link and you're tracking scans, no signup needed. Every short link you make on slsh.me ships with live click analytics built in.
Why a QR code can't count its own scans.
A QR code is a picture. The black-and-white pattern is just a URL encoded as a grid of dots — when a phone camera reads it, the phone opens that URL directly. Nothing in that loop touches a server you control, so there's nothing to record a "scan." The code has no memory and no way to phone home.
That's why the trick is to track the destination, not the code. If the QR encodes a normal page URL, the only thing that sees the visit is that page's own analytics — and it can't tell a QR scan apart from someone who typed the address or clicked a link. If the QR encodes a short link, every open hits the redirect first, and the redirect is a server you control. It logs the visit, then forwards the phone to the real page. The visitor notices nothing; you get a clean count.
So "tracking a QR code" really means "encoding a trackable link into the QR." Get that one decision right before you print and the rest is just reading numbers.
How to make a trackable QR code.
Four steps, and the order matters — the UTM tags go on before you shorten and encode.
Shorten the destination first
Take the URL you want the QR to open and turn it into a short link. This is the piece that records each visit, so the QR will point at the short link rather than the raw page. A short URL also keeps the QR's matrix simple, which matters for scannability.
Tag it with UTMs for the placement
Add campaign tags that name the physical surface, not just the campaign: utm_source=poster, utm_medium=qr, utm_campaign=spring-launch. Put them on the destination URL before shortening. Building the tagged URL by hand is fiddly — the UTM builder keeps the casing and spelling consistent so one campaign doesn't split across five rows later.
Generate the QR from the short link
Encode the short link into the QR with the QR code generator. Because the short URL is brief, the resulting code is low-density and stays readable even when it's small on a flyer or large on a banner. Export the SVG for print so it's crisp at any size.
Read the scans in the dashboard
Once the codes are out in the world, open the link's stats. Each scan shows up as a click with its country, city, device, browser and timestamp — so you can watch scan volume build over the campaign and see exactly where it's coming from.
Tell which placement drove the scans.
The single most useful habit with printed QR codes is one link per placement. If the same poster design goes up in three cities, give each city its own short link — even though they all open the identical page. Now the scan counts split cleanly: 412 in Berlin, 88 in Munich, 19 in Hamburg, instead of one undifferentiated "519 scans."
UTM tags do the same job inside your analytics tool. Naming the surface in utm_source — poster, flyer, table-tent, packaging — lets you compare formats: did the table tents or the window posters actually move people? Use both together for print: a distinct short link and descriptive UTMs, so the data is legible whether you're looking at the slsh.me stats page or GA4.
The reusable bonus: because the QR points at a short link, you can repoint that link after the stickers are printed. A sale ends, a landing page moves — change the destination once and every printed code follows, with the scan history intact.
Sorting out where each UTM value goes? The utm_source vs medium vs campaign guide has the one-line rule, and the UTM naming convention guide keeps your values tidy across a whole print run.
What a scan actually tells you.
A scan behind a short link isn't just a +1. Each one carries context you can act on.
| What you see | Why it's useful for a print campaign |
|---|---|
| Scan count over time | See the spike when posters went up, and how long the long tail of scans lasts after. |
| Country & city | Confirm the regional placements are working — and catch scans from somewhere you didn't print. |
| Device & browser | QR scans skew mobile; a wall of desktop hits usually means the link also got shared online. |
| Referrer | A scan from the camera app has no referrer — a handy way to separate real scans from web clicks on the same link. |
| utm_source / campaign | Compare placements and campaigns side by side in your analytics tool, attributed to the exact surface. |
Want to see what that looks like live? Tour the slsh.me analytics — the same dashboard every short link gets, free.
The pre-print checklist.
Run through these before the QR goes to the printer — fixing a printed code is expensive.
utm_medium=qr).Make a trackable QR, free.
Encode a short link, print the code, and every scan lands in your dashboard with the geo, device and time attached. No app, no signup to make the QR — and the analytics come with every link.
The free slsh.me QR code generator turns any link into a crisp SVG or PNG that scans from across the room — point it at a short link and the scans count themselves.
Make a QR code with the free toolWant the scan analytics too? Create a short link on slsh.me — real-time clicks on every link, free forever.
Every scan, counted.
Put a slsh.me short link behind your QR and each scan becomes a tracked click — country, device and time, live. Change the destination anytime. Free.
Create a link with slsh.meFree forever · see pricing