What is recorded for each scan
When a phone opens the short link in a dynamic code, the scan service sends the phone on and records one row for the scan. That row holds:
- The date and time of the scan.
- Country, region and city, worked out from the network address at that moment.
- Device type: phone, tablet or desktop.
- Operating system, such as iOS or Android.
- Browser, such as Safari or Chrome.
A scan means one person opening the code. Link previews in chat apps, search crawlers and other bots are recognized and skipped, so a code shared in a group chat does not jump by twenty.
What is not recorded
Tracking here is about counting, not about people. There are no names, no email addresses and no cookies that follow a scanner around the web.
The network address is never stored as it arrived. It is turned into a one-way hash that changes every day, which is enough to tell one scanner from another on the same day and nothing more. That is where the unique scanner count comes from.
Reading the dashboard
- Total scans and unique scanners for the period you pick.
- Trend against the previous period of the same length, so a slow week shows as a slow week.
- Scans by day, as a line, to spot the day a poster went up or came down.
- Time of day, to see when people actually look at the code.
- Top countries and cities.
- Devices, operating systems and browsers.
Switch between 7, 30 and 90 days, look at one code or all of them together, and export the rows as a CSV file for a spreadsheet or a report.
Tracking a campaign
A code can only tell you about itself. To compare placements, give each placement its own code, even when they all lead to the same page.
- 1
One code per placement
A separate code for the window poster, the flyer and the receipt. Duplicate the first one so the design matches.
- 2
Name them for the report
"Spring sale - window" reads better in a chart than "My website 3".
- 3
Group them in a folder
Put a campaign's codes in one folder and compare them side by side.
Adding UTM tags for your own analytics
If your site runs Google Analytics or a similar tool, add UTM parameters to the destination address, for example ?utm_source=qr&utm_medium=print&utm_campaign=spring. The code then shows up as its own source in your analytics, next to the scan counts here.
Because the code is dynamic, you can add or change the tags after printing. The two sets of numbers measure different moments, so expect them to differ a little:
- When it counts
- Tracked by the code
- The moment the code is opened
- Tracked by your analytics
- When your page finishes loading
- Scans that never load the page
- Tracked by the code
- Counted
- Tracked by your analytics
- Missed
- Visitors who block analytics
- Tracked by the code
- Counted
- Tracked by your analytics
- Often missed
- What happens after the visit
- Tracked by the code
- Not seen
- Tracked by your analytics
- Pages, sign-ups, sales
- Works for PDFs and hosted pages
- Tracked by the code
- Yes
- Tracked by your analytics
- Only on your own site
| Tracked by the code | Tracked by your analytics | |
|---|---|---|
| When it counts | The moment the code is opened | When your page finishes loading |
| Scans that never load the page | Counted | Missed |
| Visitors who block analytics | Counted | Often missed |
| What happens after the visit | Not seen | Pages, sign-ups, sales |
| Works for PDFs and hosted pages | Yes | Only on your own site |