QR code analytics are recorded when you use a dynamic QR that redirects through a measurement URL. Static codes point straight at your content and record nothing. If you need scan data, create dynamic codes, append UTM parameters before printing, and assign one unique code per placement so every location, ad, or package reports its own results.


TL;DR:

  • Creating unique dynamic QR codes with UTM parameters is essential for accurate measurement and campaign attribution at each physical placement.
  • Most QR scans are recorded when users hit the redirect URL, which logs data like timestamp, IP address, and device details, but not precise location or personal info.
  • Scan counts differ from GA4 session data due to network delays and user behavior, making vendor logs the primary source for the total number of scans.
  • Testing the entire scan-to-landing workflow on multiple devices before printing ensures proper redirection and reliable analytics collection.
  • Keeping landing pages up to date and using platforms that allow quick content swaps maximizes the value and accuracy of QR campaign data.

Yonderly
Keep Linked Content Up To Date
Yonderly helps teams manage interactive presentations with automatic file updates, advanced search, and real-time engagement tracking.

Table of Contents

What Is QR Code Analytics and How Does Tracking Work?

Dynamic and static QR codes look identical to a scanner, but only one of them can be measured. A static code encodes your final URL directly into the pixel pattern. Scan it, and the phone jumps straight to that page. Nobody logs the event, because there’s no middle step to log it at.

A dynamic code encodes a short redirect URL instead. When someone scans it, their phone hits that redirect first, gets logged, and then bounces to your real destination in a fraction of a second. That redirect is the entire measurement point for QR code analytics. It typically captures a timestamp, an IP-derived location, and device or browser data pulled from the user agent string. It does not capture personal information or GPS coordinates. Location data is a city-level estimate based on IP address, not a precise pin.

Static and dynamic QR tracking flow

One catch worth flagging before you order print runs: converting an already-printed static code into a trackable one generally means reprinting. The code itself is a different image once it points to a redirect, so retrofitting analytics onto posters already on the wall isn’t usually an option.

Which QR Code Metrics Actually Matter?

Most dashboards throw a wall of numbers at you. A handful of them drive real decisions.

  • Total scans vs. unique scans. Total scans include repeat visits from the same device; unique scans tell you how many distinct people engaged. A poster with 500 total scans but only 80 unique scans usually means a handful of people are scanning repeatedly, not that you reached 500 people.
  • Timing patterns. Scan spikes by hour or day of week show when your placement gets attention, which matters for anything tied to foot traffic or business hours.
  • Device and OS splits. If 90% of scans come from iOS, your landing page better render cleanly in Safari, not just Chrome.
  • Referrer and landing-page behavior. Where scanners go after landing, and how long they stay, tells you whether the page matched what the code promised.
  • Location. Country-level data is reliable. City-level data is useful in aggregate across many scans, but treat any single scan’s city as a rough estimate rather than a precise fact.

The mistake to avoid: treating a scan as a conversion. A scan is intent, not action. Practitioner guidance on QR tracking recommends tying scans to what happens next, whether that’s a completed form, an added-to-cart event, or a finished purchase.

How to Set Up Trackable QR Codes Step by Step

Getting this right takes about ten minutes per placement, and it has to happen before anything goes to print.

  1. Generate a dynamic QR code through a vendor or your own short-link domain, so the code encodes a redirect rather than a fixed URL.
  2. Build the destination URL with UTM parameters before you generate the code. At minimum, set utm_source, utm_medium, and utm_campaign. Google Analytics’ URL builder guidance also recommends utm_id and utm_content when you’re running several creative variants or need to tie campaigns to a specific ad platform ID.
  3. Assign one unique code per physical placement. A single generic code slapped on every flyer, shelf-talker, and truck wrap collapses all your data into one bucket. You lose the ability to say which placement actually worked.
  4. Test the full path on at least one iPhone and one Android device before printing, confirming the redirect fires and lands on the tagged URL.

Once traffic reaches Google Analytics 4, it maps campaign fields from the UTM parameters in the URL. Skip the tagging step, and GA4 usually files that traffic under direct or unassigned instead of crediting your QR campaign, because GA4’s traffic-source documentation relies on manual tagging or auto-tagging to classify sessions correctly. A code with no UTMs is basically invisible in your reports, even if it’s getting scanned constantly.

Pro Tip: Build your UTM-tagged URLs in a shared spreadsheet before you touch a QR generator. It forces consistent naming across every placement and stops “flyer_v2” from becoming three different utm_campaign values by accident.

How to Set Up Trackable QR Codes Step by Step, overview diagram

Best Practices for Campaign Design and Security

Print quality determines scan rate before analytics ever enter the picture. Keep codes at least an inch square for close-range materials, use high contrast (dark code on light background), and test the scan angle you expect in the field, since a code on a shelf gets scanned at a steeper angle than one on a wall poster.

For flows where a failed scan means a lost sale, some marketers keep a static fallback code as backup. That trade-off is real: a static fallback works even if your redirect service has an outage, but you lose all measurement on whichever scans hit it.

Security matters just as much as design, especially given how QR scams have evolved:

  • Print a recognizable brand name or short domain near the code so people can see roughly where it leads before scanning.
  • Favor QR reader apps that preview the destination URL rather than opening it instantly.
  • Never prompt customers to scan a code from an unsolicited message or an unexpected sticker placed over other signage.

The FTC has documented QR scams involving codes placed over parking meters and phishing messages disguised as delivery notices, and its 2026 follow-up alert repeats the same core advice: inspect the URL, keep device software current, and report suspicious codes at ReportFraud.ftc.gov. Before you downgrade or switch QR vendor plans, export your historical scan data to CSV. Losing scan history because a plan change wiped a dashboard is an avoidable, entirely self-inflicted problem.

Reconciling Scan Counts with Sessions and KPIs

Your QR vendor’s scan count and your GA4 session count will not match, and that’s normal. The vendor logs a scan the instant the redirect fires. GA4 only logs a session once the landing page finishes loading and fires its tracking tag. Slow networks, dropped connections, and users who bail before the page loads all create a gap between the two numbers. Treat the vendor’s redirect log as your canonical scan ledger and GA4 as your behavior-after-landing source.

Useful KPIs to report on:

  • Total and unique scans per placement
  • Scan-to-conversion rate (scans that led to a defined goal)
  • Time-to-convert after scanning
  • Lift versus a baseline period with no QR promotion running

Run reporting on a consistent cadence, weekly for active campaigns, monthly for evergreen placements, and always compare against a baseline rather than judging a single week in isolation. QR tracking data is far more useful as a trend line than a snapshot. Export raw scan data via CSV or vendor API into your BI tool with site analytics if you need to cross-reference against sales or CRM data that lives outside your analytics platform.

An Optimization Playbook for QR Campaigns

Scan data is only worth collecting if it changes what you do next. A few experiments worth running:

  1. A/B test placement and CTA language while holding the audience constant, swapping only the code position or the line above it (“Scan for 20% off” vs. “Scan to see the menu”).
  2. Use timing and geography signals to schedule promotions, launching a location-specific offer when scan volume from that region typically peaks.
  3. Test landing-page variants tied to each placement, then measure which version actually converts scanners rather than just holding their attention.
  4. Watch for repeat scans from the same unique visitors, since that pattern often signals a QR code being used as a reference tool (a menu, a manual) rather than a one-time acquisition channel, which should change how you judge its performance against a baseline.

Why Static Landing Pages Undermine QR Campaign Data

Marketers spend real effort building a trackable QR pipeline and then send scanners to a landing page that hasn’t been updated in months. That mismatch is the most overlooked way to waste good analytics.

If your team can’t update landing content fast when a promotion changes or a printed code needs to point somewhere new, you either eat the reprint cost or leave stale content live. Platforms built for real-time file updates and offline-ready deployment matter here because they let you swap what a scan leads to without touching the printed code itself. Yonderly’s approach to marketing teams centers on exactly that: engagement tracking paired with content that updates without a reprint cycle.

Paul

Turn Every Scan Into Content You Can Actually Update

This platform gives marketing teams a way to keep QR-linked content current without reordering print or rebuilding a landing page from scratch. Upload a replacement file, and connected devices swap to it quickly, even the offline tablets running your trade show booth or in-store display.

Yonderly

That matters because a QR campaign is only as good as what’s waiting on the other side of the scan. The platform pairs that update speed with engagement tracking built into the same system, so users do not need to stitch together a redirect tool, a landing-page CMS, and a separate analytics dashboard. Plans start at $29 per month for the Standard tier, with Plus and Max tiers scaling for larger teams needing more devices. If you’re running QR codes across multiple retail locations, sales reps, or trade show booths, see how Yonderly works for marketing teams and start a free trial to test it against your next placement.

Sources

FAQ

Can You Track Scans on a Static QR Code?

No. Static codes encode the final destination directly, so there’s no redirect step to log a scan event. Only dynamic QR codes, which route through a measurement URL before redirecting, generate trackable data.

What’s the Difference Between Total Scans and Unique Scans?

Total scans count every scan event, including repeats from the same device. Unique scans count distinct devices or visitors, which gives a more accurate picture of actual reach for a placement.

Why Does GA4 Show Fewer Sessions Than My QR Vendor’s Scan Count?

Vendor tools log a scan the moment the redirect fires, while GA4 only counts a session once the landing page fully loads and its tracking tag runs. Dropped connections and slow-loading pages widen that gap, so treat vendor scan counts as your baseline scan ledger and GA4 as your post-landing behavior source.

Do I Need UTM Parameters if I’m Already Using a Dynamic QR Code?

Yes. A dynamic code gets you a trackable scan event, but without UTM parameters on the destination URL, GA4 often classifies that traffic as direct instead of crediting your campaign.

How Much Does Yonderly Cost for Teams Running QR Campaigns?

Yonderly starts at $29 per month, including one admin and two devices. Plus includes two admins and 50 devices for $250 per month, and Max includes three admins and 250 devices for $750 per month. Additional devices can be added to any plan. Full details are on the pricing page.