ScanMosaic
QR code tracking and analytics

See who scans, where and when

Every dynamic QR code and short link counts its scans and clicks: by day, country, city, device, operating system, browser and language. No cookies, no IP addresses.

Free basic statsNo cookies13 months of history
1,284Scans
917Unique visitors
38Countries
  • Mobile82%
  • Desktop13%
  • Tablet5%
What you see

The numbers that matter

Scans and unique visitors

Total scans and clicks per day, and unique visitors counted with a key that changes every day.

Places

Countries and, on paid plans, cities, from the network the phone used. Never GPS.

Devices

Mobile, tablet or desktop, operating system, browser and language.

Compare periods

This month against last month, or any range against the one before it.

When people scan

An hour-by-weekday heatmap shows when your codes get used.

Rules and referrers

Which routing rule sent each visitor, and which sites sent clicks to your links.

Campaigns

Compare codes side by side

Put the codes and links of one campaign together: the spring flyer, the window poster and the Instagram link. See their totals in one chart, and which one did best.

Add UTM tags to the destinations, and the same visits show up as one campaign in Google Analytics too.

  • Group any codes and links
  • Totals, trends and the top performer
  • Works with smart-routing rules
Reports

Share results, export everything

Shared reports

A read-only link to a campaign's or code's stats, for clients and colleagues without an account. Revoke it any time.

CSV export

Every scan and click with its time, country, device, browser and rule, for your own spreadsheets.

API

Read stats from the REST API on the Business plan.

Integration

Send scans to Google Analytics 4

Connect your GA4 property in the dashboard and every scan arrives as a qr_scan event, and every click as link_click, with the code's name, campaign, country and device. Your scans sit next to your website traffic.

Add your measurement ID and a Measurement Protocol API secret under Integrations, then press Send test event to check it arrives in GA's DebugView.

Events are sent from our server after the visitor has been redirected, so nobody waits for Google. We never send IP addresses or cookies.

  • Pro and Business plans
  • Owners and admins set it up
  • Pause or disconnect any time
event: qr_scanitem_name: "Spring menu"campaign: "spring"country: "GB" · device: "mobile"

Set up Google AnalyticsBuild UTM links

Privacy

Counting, not following

We store the time, country, city, device type, operating system, browser and language of each scan. We don't store IP addresses or set cookies, and we can't tell who scanned.

Link-preview bots and crawlers aren't counted, and repeated hits from one network are capped so numbers can't be inflated. Scan records are kept for 13 months.

  • IP addressNever stored
  • CookiesNone
  • Visitor keyChanges every day
  • History13 months
FAQ

Questions people ask

Tracking

Which codes can be tracked?

Dynamic QR codes, hosted pages and short links. Static codes go straight to their content without passing through us, so they can't be counted.

What's the difference between scans and unique visitors?

Scans count every time the code is opened. Unique visitors count each phone once per day, using a key that changes daily.

Why are my numbers different from my website's?

We count the scan when it happens. Your website counts the visit after the page loads, so people who close the page early, or who block analytics, are missing there.

Can I see who scanned?

No. We don't collect anything that identifies a person. If you need names, link to a form.

What's included for free?

The last 30 days, with countries, devices, operating systems and browsers. Paid plans keep 365 days and add cities, referrers, rules, the heatmap, comparisons, campaigns, shared reports and exports.

Can I send scans to Google Analytics?

Yes, on Pro and Business. Add your GA4 measurement ID and API secret under Integrations in the dashboard.

Know which codes work

Create a dynamic code and the stats start with its first scan.