If you want to know how to track QR code scans, the short answer is this: don't put your web address in the code. Put a short link in the code, then read the click report for that link. Every scan opens the short link first, gets counted, and then forwards the person to your page.
That is the whole trick. The rest of this guide shows you how to set it up with Freeurl, what the report will and won't tell you, and how to avoid the mistakes that make QR data useless.
Why a normal QR code can't be tracked
A QR code is just a picture of text. If that text is https://yourshop.com/spring-sale, the phone reads it and goes straight to your site. Nothing passes through a counter, so nobody records the scan. Your own website analytics might show a visit, but it can't tell you that the visit came from the poster in the front window.
Codes that hold the final address are often called static codes. They work forever and cost nothing, but you can't change where they point and you can't count scans. Codes that hold a redirect link are often called dynamic codes. The redirect is what makes both counting and later edits possible. Many QR platforms charge a monthly fee for this. With a short link you can get the same result for free.
How to track QR code scans with a Freeurl short link
You need a free Freeurl account for the analytics dashboard. Guests can shorten links, but the dashboard, editing and custom domains are for account holders.
- Create the short link first. Paste your destination page into Freeurl and shorten it. Give it a custom alias you will recognize later, such as window-poster or flyer-may. Aliases can use 3 to 30 letters, numbers, dashes or underscores.
- Make the QR code from the short link, not the long one. Open the Freeurl QR code generator, paste the short link, and pick your colors. Keep a dark code on a light background. Choose Medium error correction for most print jobs, or High if the code will sit on something that gets scuffed.
- Download it at the right size. Freeurl offers PNG or SVG, and sizes from 256 px to 2048 px. For print, use SVG or the 2048 px PNG so the edges stay sharp. Leave the blank border around the code. It helps phones find it.
- Scan it yourself before you print. Use two different phones if you can. A bad scan on day one is a waste of an entire print run.
- Read the report. Open the link's stats page in your dashboard. You can also use the analytics checker and paste the short link, or add a plus sign to the end of the short link in your browser to open its stats.
Clicks usually show up within about a minute, so you can test right away. Scan the code, wait a moment, and check that the count went up by one.
What the scan report shows
Freeurl's click report covers the numbers most small businesses actually use:
- Total clicks, with 7, 30 and 90 day views
- Clicks over time, plus the busiest hour of the day
- Top countries, devices and browsers
- Referrers, where the app passes one along
- A list of the latest clicks by city or country, device type and browser
Search engine crawlers and chat app link-preview bots are filtered out, so the numbers are closer to real people. The report does not show names, emails or full IP addresses.
Here is a worked example. A coffee shop prints a table-tent card with a QR code for its loyalty signup page. After two weeks, the report shows 140 clicks, mostly from phones, with a spike between 7 and 9 a.m. That tells the owner the card is working for the morning crowd. It also suggests that a "free pastry with signup" offer might work better at that hour. (The numbers here are made up to show how to read a report. They are not Freeurl benchmarks.)
Give every placement its own link
This is the step most guides skip, and it matters more than any dashboard feature. If you print the same QR code on a flyer, a poster and a business card, all the scans land in one pile. You will know the code works. You won't know which piece of paper did the work.
The fix is cheap. Make one short link per placement, all pointing to the same page, and build a separate QR code from each:
- yourbrand.link/flyer-may
- yourbrand.link/poster-window
- yourbrand.link/card-owner
Now each placement has its own count. After a month you can drop the one nobody scans and print more of the one that wins. If you want branded links like these, see how to use your own domain for short links.
Add UTM tags to see what happens after the scan
The short link report tells you who scanned. It doesn't tell you whether those people bought anything. For that, tag the destination with UTM parameters before you shorten it, so your website analytics can tie visits back to the QR code.
Use the UTM builder to add a source, a medium and a campaign name. A typical setup for a printed flyer looks like this: source flyer, medium qr, campaign may-promo. Then shorten the tagged address and make your QR code from that short link.
In Google Analytics 4, those tags show up in your traffic reports. Google explains how campaign parameters work in its Analytics Help page on custom campaign URLs. If the difference between the fields is fuzzy, read the difference between UTM source and UTM medium, and keep your naming consistent. "QR" and "qr-code" are counted as two different mediums.
What QR scan tracking can't tell you
Be careful about what you promise your boss or your client. Some limits are built into how the web works.
It counts link opens, not people. One person scanning three times looks like three clicks. Someone who scans and closes the page instantly still counts. Treat the totals as a trend, not a head count.
Location is rough. You get a city or country, not a street address. City data comes from the network the phone is on, and it can be off, especially on mobile data.
Referrers are often blank. Camera apps rarely send a referrer, so most QR scans will show up as direct traffic. That is normal. It is another reason to use a separate link per placement instead of relying on the referrer.
Only Freeurl links have Freeurl stats. If your QR code points to a link from another shortener, you will need to read its stats there. The Freeurl checker can't see them.
Links made as a guest are limited. Guest links can't be edited, and links made inside a free account keep their stats private unless you make them public. For anything you plan to print, make the link inside an account so you can edit it later.
One more trade-off: a QR code that depends on a short link depends on that link staying alive. Don't set an expiry on a link you've printed on 500 flyers. Freeurl expiry options run from 1 day to 90 days, or never. For print, pick never.
Common mistakes that ruin QR tracking
- Printing the long URL. Once it's on paper, you can't add tracking. Always test the short link first.
- Reusing one code everywhere. You lose the comparison between placements.
- Printing too small. Freeurl suggests a minimum width of about 2 cm (0.8 inch). Larger is safer for posters and signs viewed from a distance.
- Low contrast. A pale code on a busy photo may not scan. Stick to dark on light.
- Skipping the test. Scan the printed proof, not just the screen version.
- Sending people to a slow or desktop-only page. A person who scans is on a phone. If the page is awkward there, your scan count will look fine while your sales stay flat.
What if the destination changes?
This is the other benefit of putting a short link in the code. If your promo ends or the page moves, you can edit the short link's destination inside your account. The printed code stays the same and the stats keep adding up on the same link. A code made from the full address can't do that.
If you're building a link from scratch, the guide on creating a branded short link covers the setup. And if you hand out codes to customers, it helps to know the basics of whether short links are safe, since some people hesitate to scan anything unfamiliar. A branded domain that people recognize helps with that trust.
A simple tracking routine
You don't need a dashboard habit that eats your week. Try this:
- Before printing, create one tagged short link per placement.
- Scan each printed proof and confirm the count rises.
- Check the report after 7 days for a first read, then at 30 days.
- Compare placements. Keep the winners, rework or drop the rest.
- If your site analytics also records the UTM tags, look at what scanners did after they arrived.
Frequently asked questions
Can I track a QR code for free?
Yes. Make a free Freeurl account, shorten your link, and build the QR code from that short link. The click report in your dashboard counts every scan at no cost.
Can I track a QR code I already printed?
Only if the code already points to a short link you control. A code that holds the full web address can't be counted, so you would need to print a new one.
Does QR code tracking show who scanned?
No. You see counts, time, country or city, device type, browser and sometimes the referrer. Freeurl does not show names, emails or full IP addresses.
How do I know which flyer or poster got the scans?
Create a separate short link for each placement and make a separate QR code from each one. Each link then has its own count.
How fast do scans show up in the report?
Clicks usually appear within about a minute. Scan the code yourself to test it.