QR Code Tracking: recorded scans by device, place, and time.
Trackable QR codes with analytics that store derived signals, not raw IPs or tracking cookies. See device, location, and time data for recorded scans. No signup to start.
Add a styleTemplates · frames
What the data shows you
Six scan signals, stored as aggregates.
Every dynamic QR code on QRBliss records six dimensions of scan data as derived, aggregate signals. No raw IPs. No tracking cookies.
Total scans over time
A scan timeline shows whether a flyer run actually drove traffic. Spot spikes, decay, and the drop-off after a campaign ends.
Device class & OS family
Mobile vs desktop, and which OS family. If 94% of your scans come from iOS phones, that can decide whether the code should open an App Store listing or a mobile web page.
Country & city
Derived from Vercel geo headers. There is no IP lookup and no tracking pixel. Country and canonical city can show whether a London billboard is reaching Londoners, or mostly visitors from Manchester.
Time of day
Scans cluster. Restaurant lunch-menu QRs peak at noon. Event codes spike at badge pick-up. Poster codes peak on the weekend. Time-of-day data shows when people scan, which can inform the next campaign window.
Per-code breakdown
Every dynamic code gets its own analytics view. Run three variations of the same campaign poster, one per neighbourhood, and compare scan counts directly.
Scan counts are approximate
Analytics fire after the 302 redirect, not before. That keeps latency under 300ms. Scan counts may be approximate by ~0.x%. QRBliss shows that in the dashboard so you treat the numbers as approximate activity, not a census.
The 4-step flow
From generator to analytics dashboard in four steps.
No SDK to install, no webhook to configure. Make the code dynamic, print it, scan it, and read the data.
Make your code dynamic
In the QRBliss editor, turn on Make it dynamic in the Advanced tab. Dynamic codes route scans through a QRBliss short link, which is the layer that makes measurement possible. Static codes bake the destination in and cannot be tracked this way.
5 secondsDownload and share or print
Export as PNG, SVG, or print-ready PDF, same as any QRBliss code. Use it on a flyer, poster, business card, or packaging. The tracking layer is invisible to the person scanning.
30 secondsScans roll in automatically
Every scan hits the QRBliss redirect proxy, fires the 302 to your destination, then logs device class, OS family, country, city, and timestamp after the redirect, not before. No tracking cookie. No raw IP stored.
Instant, every scanRead the dashboard
Open My QRs, pick a code, and the analytics panel is there: scan timeline, device breakdown, top countries, time-of-day histogram. Free accounts get 30-day retention; Pro and Business get full history. Change the destination from the same view without reprinting.
Any timeFor device rules, time-of-day routing, and the KV-backed proxy, see Smart redirects: real examples.
Privacy by architecture
What is stored, and what is discarded.
Some QR tracking tools log every scanner's IP, set cross-site cookies, and sell that data to ad networks. QRBliss puts the limits in the redirect proxy: derived signals only, no raw IP write, no tracking cookie.
No raw IP addresses
Most QR tracking tools log every scanner's IP. QRBliss never stores a raw IP address. Country and city are derived from Vercel's geo headers at request time. The derivation discards the IP before any write hits Postgres.
No tracking cookies
The redirect proxy fires a 302 and stops there. No cookie is set on the scanner's device, no cross-site tracking, and no pixel. If your audience is GDPR-conscious or privacy-aware, that removes most of the cookie-consent work from scan measurement.
Derived signals only
What gets stored: device class (mobile/desktop/tablet), OS family (iOS/Android/Windows/etc.), country, canonical city, and timestamp. What does not get stored: the raw IP, the full User-Agent string, or any persistent scanner identifier. Those limits are in the redirect proxy, not only in a policy page.
Approximate by design
Analytics write fires after the redirect, not before. The redirect ships first so scan latency stays under 300ms. Scan counts may be off by ~0.x%. QRBliss shows that in the dashboard. These numbers are for campaign measurement, not financial audit.
What people track
Four ways people use scan counts.
Scan analytics help most when you have a decision to make and less information than you would like.
Campaign attribution
Three posters in three neighbourhoods, each with its own QR code. After a week the dashboard shows which location drove the most scans, without asking people how they heard about you.
Print vs digital comparison
Same campaign, one QR in a printed brochure and one in an email. The scan counts show how print compared with the email, which can inform whether the brochure budget is doing work.
A/B test of physical placements
Left side of the menu vs right side. Top of the poster vs bottom. Same destination, different placement: the one with more scans is the one that got more scans. You do not need a focus group for that comparison.
Retargeting-free measurement
You do not need retargeting to measure. QRBliss analytics report scan volume, device split, and geography without installing a pixel, setting a cookie, or collecting a personal identifier.
Mistakes we see most
Four QR tracking mistakes.
Most tracking disappointments come back to one of these. None of the fixes require reprinting.
Using a static code and expecting scan data
Static QR codes bake the destination directly into the pattern. There is no server in the loop, so there is nothing to count. If you print a static code and the analytics dashboard shows nothing, that is the reason. A dynamic code is what records scans.
Fix · Flip the “Make it dynamic” toggle before exporting. That takes about five seconds and cannot be added after printing.
Chasing vanity scan counts instead of actions
1,000 scans that bounce off your landing page in two seconds is not a win. Tracking tells you the volume. Pair it with landing page conversion data if you need to know whether scanners completed the action you wanted.
Fix · Set up a goal URL or conversion event on the destination page. QRBliss measures scan-to-landing. Your analytics tool measures landing-to-conversion.
One QR code for every placement
If you use the same dynamic code on a flyer, a poster, and an Instagram story, you will see aggregate scan counts and will not know which placement drove them.
Fix · Create one dynamic code per placement: same destination, different code. That takes about 30 seconds per variant. Per-code analytics then show which placement produced scans.
Ignoring privacy and consent obligations
Even aggregate analytics can have consent implications depending on your jurisdiction and use case. If you're collecting scan data on behalf of a client, or operating in a GDPR-regulated context, you need to understand what's being measured and disclose it appropriately.
Fix · QRBliss analytics are structurally privacy-first: no raw IPs, no cookies, derived signals only. That removes most of the cookie-consent work. Review our privacy stance and your local obligations to be sure.
Three trackable QR styles to start from
Brand
Teal, extra-rounded modules. Upload your logo and AI Brand Sync fills in the rest.
Apply this styleTracking FAQ
Common QR tracking questions.
Can you create a trackable QR code?
Can QR codes be used for tracking?
How do I get tracking data from a QR code?
Is there a free QR code generator with tracking and no expiration?
Do you track personal data or store my IP?
Do I need to reprint the code to keep tracking?
Campaign setup
One code per placement.
Use separate dynamic codes for a flyer, a counter card, and a product insert even when all three lead to the same page.
Compare the same date range and keep a record of where each code appears. Recorded scans are approximate activity counts, not unique customers or confirmed purchases. Measure bookings and payments on the destination page separately.
Follow the tracking guide and placement worksheetCreate a dynamic code, enable tracking, and test it before printing.
Create and manage a dynamic code in your account, enable tracking, and test it before printing. Free includes a 30-day analytics window; Pro and Business provide full recorded history.