How to track QR code scans
Published on
A QR code is a picture with text inside. It has no memory, connects to nothing, and can't count how many times it was read. When a service offers you scan statistics, what it actually does is put its own address in the middle, count visits to that address, and then redirect you to the final destination.
That's the whole trick, and it can be replicated without a monthly fee. What gets measured, in both cases, isn't scans but visits to the destination page, which in practice is nearly the same thing.
The simplest way: parameters in the address
If the code leads to a web page of yours with any analytics tool, you already have the data: visits to that page include everyone who scanned. The problem is telling them apart from the rest of your traffic and knowing which sign they came from.
That's solved by adding parameters to the address. The most widely used are UTMs, a set of tags that most analytics tools recognise without configuration. Pointing at yoursite.com/menu with a source tag reading table-card makes those visits appear grouped and separate from search or social traffic.
The advantage is that you can use a different tag per medium: one for the table card, another for the entrance banner, another for the flyer. That tells you not just how many people scan but which of your signs works, which is the question that actually matters.
The cleaner alternative: one address per sign
UTM parameters have an aesthetic drawback: they make the address long and ugly, and that long address is visible in the browser bar of whoever scanned. They also lengthen the code's content, making it slightly denser.
The alternative is creating short addresses of your own that redirect to the destination. For example yoursite.com/m1 for the table card and yoursite.com/m2 for the window one, both redirecting to the menu. Each is logged separately by your server or analytics, and the code comes out simpler.
This method has an important bonus: if the destination changes tomorrow, you edit the redirect and every printed code keeps working. It's the same advantage paid dynamic QRs sell, achieved with a redirect on your own domain.
What can't be measured at all
Codes that don't lead to a web page can't be measured, and no service can change that. A WiFi QR connects the phone to the network without touching the internet. A text one shows content on screen. A contact one adds a card to the address book. An event one writes to the calendar. In all of those no server is involved, so there's nothing to count.
Nor can you know who scanned. What gets logged is an anonymous visit with the usual data of any web visit. Any service promising to identify the person who scanned is measuring something else, or asking that person to identify themselves on the next page.
And a limitation worth keeping in mind when reading the numbers: the same person scanning twice counts as two visits, and someone who scans and closes before the page loads may count as none. The numbers are for comparing signs against each other and watching trends, not for an exact count.
When paying for a dynamic code does make sense
If you have no domain of your own and no way to create redirects, a dynamic QR service gives you that ready-made. It's a legitimate service and for some cases worth what it costs.
It also makes sense when you need to change the destination frequently from a simple interface, when you want the destination to depend on country or device, or when you manage hundreds of codes and need them all in one dashboard.
What to understand before signing up is the dependency it creates. If you stop paying, the printed codes stop working, because the address inside them belongs to the provider and not to you. With a redirect on your own domain, control is never lost. For signs that will hang for years, that difference weighs more than the convenience of a dashboard.