QR code analytics

Know when and how your QR code gets scanned

Every scan of a 123QR dynamic code is logged with a timestamp, a coarse location, device type, browser, operating system and referrer. IP addresses are hashed before storage, never kept raw.

What is recorded

  • Timestamp — the exact time of the scan.
  • Coarse location — country and city, derived from the hashed IP, not precise GPS coordinates.
  • Device type — phone, tablet or desktop.
  • Browser and operating system.
  • Referrer, when the scan happened from a link rather than a camera (for example, shared in a chat app).
  • A hashed version of the IP address, used only to deduplicate scans and estimate location.

What is not recorded

  • No raw IP addresses. The hash cannot be reversed to recover the original address.
  • No precise GPS location. Location is city-level at best, based on the IP, not the device's actual position.
  • No personal identity of the person scanning — no name, email or account tied to a scanner.
  • No content of the destination page itself. 123QR logs the redirect, not what happens after someone lands.

Unique scans vs total scans

Total scans count every redirect, including the same phone scanning the same code twice. Unique scans deduplicate using the hashed IP and a time window, giving a closer estimate of how many distinct people scanned.

Total scans matter for raw reach — how many times a code fired. Unique scans matter for audience size — roughly how many different people it reached. Use total scans to judge a code's overall traffic and unique scans when comparing placements fairly.

Reading time-of-day and day-of-week patterns

A code on a restaurant table tent will usually show a clear lunch and dinner pattern. A code on a flyer handed out at a Saturday market will spike on the day it was distributed and taper off over the following week.

These patterns are most useful for deciding when to refresh a destination — for example, swapping a menu code's target before the next service — and for spotting placements that get ignored entirely, which is a sign to move or replace them.

Running campaigns with multiple codes

Create one code per physical placement rather than one code for an entire campaign. A single code shared across ten posters tells you the total, but not which poster worked.

Name codes for where they live, not what they say — "Poster — Main St window" rather than "Campaign A" — so the scan data is legible months later when you are comparing placements.

Exporting your data

Scan data for any code can be exported as CSV, so you can pull it into a spreadsheet or another analytics tool alongside other campaign numbers.

Our privacy posture

The goal is enough signal to know whether a placement is working, without collecting anything that identifies the person scanning. IPs are hashed on arrival and the raw value is never stored. Location resolution is deliberately coarse.

If you delete a code, its associated scan history is removed along with it.

Common questions

Does 123QR store my visitors' IP addresses?
No. IP addresses are hashed immediately and only the hash is stored, used for deduplication and coarse location. The original IP is never kept.
Can I tell exactly where a scan happened?
Only at country and city level, based on the hashed IP. This is not precise GPS location and can be inaccurate for mobile networks.
What's the difference between total and unique scans?
Total scans count every redirect, including repeats from the same person. Unique scans estimate distinct scanners using the hashed IP and a time window.
Can I export my scan data?
Yes, as a CSV file per code, which you can open in a spreadsheet or import elsewhere.
Is scan tracking free?
Yes, scan analytics is included on every code at no cost.

Keep reading

Print once. Change the destination anytime.

Create a free account, generate your code and edit where it points whenever you need to.