tracking, decided
Static vs dynamic QR: do I actually need tracking?
Being upsold a dynamic QR code with 'analytics'? What scan tracking really shows, when it's worth it, and how to count scans for free without it.
If you’ve priced up a QR code lately, you’ve been offered “dynamic” codes with analytics — scan counts, locations, devices — usually for a monthly fee. Sometimes that’s genuinely useful. Often it’s a subscription for a dashboard you’ll never open, sold by making the free option sound blind. Here’s what the tracking really shows, when it’s worth paying for, and how to answer “did anyone actually scan it?” for free.
What scan tracking actually shows
A dynamic code doesn’t hold your URL — it holds a short link to the vendor’s redirect server, which every scan passes through on its way to your real page. That detour is the whole trick: in that split second, the server logs the scan. So the tracking is a side-effect of the redirect, not magic in the code.
What it can honestly capture is a count, a timestamp, a rough location, and the device type (from the browser’s user-agent). That’s the real list — and the limits are worth knowing, because they’re routinely oversold:
- Location is approximate, from the IP address — city or region at best, never GPS, coordinates or a street address. And it’s fuzzier than the dashboard’s neat map suggests: IP-to-city guesses are right maybe two-thirds of the time within ~50 km, and worse for small towns, mobile networks and VPNs.
- It’s anonymous. You get device-and-area metadata, not who scanned — no name, email or phone number. A vendor implying you’ll “know your customers” from scans alone is overstating it.
When it’s genuinely worth it
Go dynamic when you’ll actually use what it gives you:
- You’ll act on the numbers. Running the same offer on two posters and keeping the one that gets more scans is a real reason. If you’ll compare and decide, tracking earns its keep.
- The destination has to change after printing. This is the big one — and it’s not really about tracking at all. A static code’s URL is fixed forever; a dynamic one you can re-aim on the vendor’s server without reprinting. If a menu URL or campaign page will move, that alone can justify going dynamic.
- You need campaign attribution — telling which poster, flyer or pack a visit came from, rather than one blurred total. (Though the middle path below often delivers this without a subscription.)
When you don’t need it
- One-offs and fixed destinations. A menu, a WiFi code, a contact card, a link that isn’t moving — a plain static code is the right tool, and dynamic just buys a dependency for no gain.
- WiFi and contact codes can’t be tracked anyway. They carry the network or contact details in the pattern — there’s no URL and no server to route through, so there’s nothing to count. Anyone selling “tracking” on those is quietly proposing to turn them into a link through their server, which changes what the code does.
- You won’t look at the dashboard. Data you never act on has no value. Paying monthly for numbers you won’t open is the most common wasted spend here.
The real costs of renting tracking
- A recurring subscription. Entry tiers run roughly $5–10 a month, and the analytics is usually behind the paid plan.
- The “expiry” failure mode. Because the code points at the vendor’s redirect, if the subscription lapses the code stops working immediately — printed materials and all — until you pay again. (More on that in do QR codes expire?.)
- A permanent third party in the scan path. A static code needs nobody; a dynamic one needs that vendor to stay in business, keep the service up, and keep your account live — indefinitely.
- A privacy cost you impose on others. Every scan routes your visitors’ IP, device and timing through a tracking company that logs it — a hand-off they didn’t choose. A static code goes straight to the destination with nothing in between.
The middle path: count scans without a dynamic product
Here’s the reassuring bit most upsells skip. The common real question — “is this poster doing anything?” — you can answer with tools you already have, no dynamic-QR subscription:
- Front a static code with a short link you control and read its click count. One caveat worth getting right: the obvious name, Bitly, no longer shows click stats on its free plan — you’d need its paid tier. Free shorteners that do show a basic count include TinyURL and is.gd.
- Or point the code at your own page and use the analytics you already run (GA4, Plausible, whatever). The catch: phone-camera scans usually arrive with no referrer, so without a label they land in “Direct” and you can’t tell they came from the poster. Add a UTM tag — e.g.
?utm_source=posteron the end of the URL — and those visits show up tagged. That quietly gives you campaign attribution for free, too.
Two honest caveats: this gets you page-visit counts, not a per-scan device-and-location breakdown; and a long UTM-laden URL makes the code denser, so keep the tag short or hide it behind a short link. But for “did anyone scan it, and roughly how many”, it’s plenty — with no third party permanently in the path, and no expiry risk.
Make a static code at dottr
dottr makes static, no-account codes right in your browser — it never sees or counts your scans, because there’s no server of ours in the way. If you want numbers, you bolt on one of the options above yourself, keeping control (and the privacy trade-off) in your own hands. It’s free, and nothing you paste ever leaves your device.