Generate dynamic QR codes in seconds & track scans in real time.Generate dynamic QR codes in seconds & track scans in real time.Generate dynamic QR codes in seconds & track scans in real time.Generate dynamic QR codes in seconds & track scans in real time.Generate dynamic QR codes in seconds & track scans in real time.Generate dynamic QR codes in seconds & track scans in real time.
← All posts

How to Track QR Code Scans: Count, Location, Device & Time

Track every QR code scan in real time — total scans, location, device, and time. Learn why only dynamic QR codes are trackable, how to read the analytics, and how to add UTM campaign tracking.

Short answer: To track QR code scans, make a dynamic QR code. It routes every scan through a short, trackable link that logs the total number of scans, approximate location, device, operating system, browser, and time, then instantly forwards the visitor to your real destination. Open your dashboard to watch the scans arrive in real time. Static QR codes cannot be tracked at all. Create a trackable code free on Qre.gg.

Why only dynamic QR codes can be tracked

The single most important thing to understand: tracking depends on the type of QR code, not the tool. There are two kinds.

  • A static QR code encodes your destination — a URL, some text, a phone number — directly into the black-and-white pattern. When someone scans it, their phone reads that destination straight off the paper and goes there. Nothing ever touches a server you control, so there is no scan to count.
  • A dynamic QR code encodes a short link like qre.gg/aB3x9Kd instead. Every scan hits that link first, gets counted and described, and is then redirected — in well under a tenth of a second — to wherever you point it. That middle step is what makes analytics (and editability) possible.
Static QR codeDynamic QR code
Scans tracked❌ Never✅ Every scan
Location / device data
Editable after printing
Real-time dashboard
Works forever

If you have already printed a static code, there is no way to retrofit tracking onto it — the destination is baked into the pixels. That is one more reason to go dynamic from the start. (New to the distinction? Read static vs dynamic QR codes.)

What you can track — and what you can't

A dynamic QR code records everything a normal web request reveals, which is plenty for measuring a campaign, and nothing that identifies a person.

MetricTracked?What it tells you
Total scansOverall demand and reach
Unique vs. repeat scansNew people vs. the same people re-scanning
Scans over timeWhen your audience acts (day, hour, campaign spikes)
Country & cityWhere your printed piece is actually working
Device typePhone vs. tablet, and the split by model class
Operating systemiOS vs. Android — useful for app-download codes
BrowserWhich browsers your visitors land in
ReferrerWhether a scan came from a screen or print
Personal identityNever — no names, emails, or precise GPS
Raw IP addressNever stored (see the privacy section below)

That mix is deliberate: enough to prove ROI, not enough to be creepy or to fall foul of privacy rules.

How to track QR code scans, step by step

  1. Open the generator and choose your content type — URL, vCard, menu, PDF, anything — on Qre.gg.
  2. Set the code to Dynamic. This is the switch that turns on tracking. (On the Free plan you get up to five dynamic codes.)
  3. Design and download. Add your logo, colors, and a frame if you like, then export as SVG for print or PNG for screens.
  4. Publish or print it on your poster, packaging, menu, or business card.
  5. Open your dashboard and select the code. Scans appear in real time — the counter and charts update within seconds of each scan.
  6. Filter and compare. Break scans down by day, location, and device, and compare codes side by side to see which placement wins.

💡 Print the same dynamic code on different materials (poster vs. flyer vs. table tent) only if you don't need to tell them apart. To attribute scans to a specific placement, generate a separate dynamic code per placement — each one keeps its own analytics.

Reading your real-time analytics dashboard

Because the redirect is the fast path of the whole platform, scan events are logged the instant they happen. In your dashboard you'll see:

  • A live scan counter and a scans-over-time chart to spot the exact moment a campaign lands.
  • A map / country + city breakdown so you can see whether your Berlin flyers or your New York window display are pulling their weight.
  • A device and OS split — invaluable for app-download codes, where you want to know your iOS-to-Android ratio.
  • Per-code comparison, so a print run of ten posters becomes ten measurable channels instead of one guess.

Analytics depth scales with your plan: basic analytics are free, advanced analytics come with Pro, and CSV analytics export is included on Teams for feeding the raw numbers into your own reports.

Add UTM parameters for campaign and Google Analytics tracking

QR analytics tell you about the scan. To follow that person through to a purchase or sign-up on your website, add UTM parameters to the destination URL, exactly as you would for any link:

https://yoursite.com/spring-sale?utm_source=qr&utm_medium=poster&utm_campaign=spring2026

Point your dynamic code at that URL. Now the scan is counted in Qre.gg and the resulting website visit shows up in Google Analytics under your campaign. Because the code is dynamic, you can swap the UTM-tagged URL later — say, from spring2026 to summer2026 — without reprinting a thing. That is the whole promise of an editable QR code: the print stays, the tracking evolves.

Tracking at scale: bulk codes and the API

Running hundreds or thousands of codes — one per product, store, or event ticket? You don't want to click through them one at a time.

  • Bulk generation creates a batch of dynamic codes from a CSV in one pass, each with its own analytics.
  • The QR code API and webhooks let you generate codes programmatically and receive a real-time event every time one is scanned, so scans flow straight into your own data warehouse or CRM. (API and webhooks are part of the Teams plan.)

Privacy: track scans without tracking people

Here's the part most articles skip. Good QR analytics measure behavior in aggregate, not individuals — and that's also what keeps you on the right side of GDPR and similar rules.

Qre.gg is built privacy-first: we never store raw IP addresses. The IP is used only for the moment it takes to derive an approximate city, then it's hashed and discarded. Location is computed offline, so there are no third-party lookups leaking your visitors' data. You get country, city, device, and timing — the things that actually inform a marketing decision — without building a profile of any single scanner.

Which analytics come with which plan

FreeProTeams
Dynamic (trackable) codes5UnlimitedUnlimited
Total scans + over-time chart
Location & device breakdownBasicAdvancedAdvanced
Real-time updates
CSV analytics export
API & scan webhooks

Every plan tracks scans in real time. The paid tiers add depth, unlimited codes, and ways to get the raw data out. See the full breakdown on the pricing page.

Start tracking your QR code scans

If you can't measure it, you're printing in the dark. A dynamic QR code turns every poster, package, and business card into a channel you can actually read — total scans, where, on what, and when — and lets you change the destination later without losing the history.

Create a free trackable QR code →, or open the QR code generator to build one now. Printing it soon? Make sure it holds up with our guides on QR code size for printing and why QR codes stop scanning.

Make a QR code that never breaks.

Create a free dynamic QR code in seconds — editable after printing.

Create your first QR →

Keep reading