How to Track QR Code Scans The Complete Guide 2026

QR Codes are everywhere. Restaurant tables, product packaging, event badges, shop windows, business cards, magazine pages, billboards, exhibition stands. They are the primary bridge between physical materials and digital destinations. And in most cases, the organisation that deployed them has no idea how many times they have been scanned, by whom, where or when.

This is the complete guide to QR Code scan tracking — how it works technically, what data it captures, how to set it up for free, and how to use scan analytics to understand which placements perform, which audiences scan, and what happens after the scan.


QR Code Tracking
April 26, 2026
How to Track QR Code Scans — Complete Guide 2026

What This Guide Covers

  • Why QR Code tracking matters — and why most codes are untracked
  • The fundamental answer: static vs dynamic QR Codes
  • How dynamic QR Code tracking works technically
  • What data every scan captures
  • How to set up tracked QR Codes for free — step by step
  • Per-placement tracking strategy
  • UTM parameters for QR Codes — connecting scans to GA4
  • QR Code scan analytics by channel and format
  • iOS vs Android scan split — what it tells you
  • Scan timing intelligence
  • Geographic scan data
  • Updating QR Code destinations without reprinting
  • Common QR Code tracking mistakes
  • Measuring QR Code campaign ROI

Why QR Code Tracking Matters — and Why Most Codes Are Untracked

A QR Code is a physical call to action. It is deployed on a surface — printed, displayed, engraved, embossed — and it asks someone to take a specific action: scan, arrive, engage. Whether that call to action is working — whether anyone is scanning, from which placements, at what times, on which devices — is information that determines whether the QR Code investment is justified and how to optimise it.

Without tracking, QR Code deployment is a guess. A restaurant that puts QR Codes on every table does not know if the table codes are being scanned or ignored. A retailer that puts QR Codes on product packaging does not know which products generate the most post-purchase digital engagement. A conference that puts QR Codes on name badges does not know how many attendees scanned each other's codes. An outdoor advertiser that puts a QR Code on a billboard does not know if the billboard placement is generating any digital response at all.

Most QR Codes are untracked because most QR Codes are static — generated by free online tools that produce a code encoding the destination URL directly, with no tracking infrastructure. The code works. The scans happen. Nothing is recorded.

The Fundamental Answer: Static vs Dynamic QR Codes

The entire question of QR Code tracking resolves to a single distinction: static vs dynamic.

PropertyStatic QR CodeDynamic QR Code
What is encodedFinal destination URL directlyShort link URL
Scan trackingNone — impossibleFull — every scan recorded
Device data per scanNoYes
Country data per scanNoYes
Scan timing dataNoYes
Destination updatableNo — reprint requiredYes — dashboard update
Code changes when destination changesYes — entirely new codeNo — same code, new destination
Generated byAny free QR generator toolURL shortener with tracking (Cuttly)

The reason static QR Codes cannot be tracked is architectural: when a device scans a static code, it reads the encoded URL and navigates directly to the destination. There is no intermediate server involved — no point at which any system can intercept and record the scan event. The device-to-destination path is direct.

A dynamic QR Code encodes a short link URL — for example go.brand.com/product. When a device scans the code, it navigates to that short link URL. The short link platform's server receives the request, records the scan event with all available metadata, and then redirects the device to the final destination. The tracking happens at the server level, invisibly and instantaneously. The scanner's experience is identical to scanning a static code — they arrive at the destination in the same moment. The difference is that the server has recorded everything about that scan.

How Dynamic QR Code Tracking Works Technically

Understanding the technical process clarifies what tracking can and cannot capture:

  1. Device scans the QR Code. The device's camera reads the encoded pattern and decodes the short link URL.
  2. Device sends an HTTP request to the short link server. The device's browser (or system-level scanner on iOS/Android) makes a GET request to the short link URL — in this case, Cuttly's server.
  3. Cuttly's server receives the request and records metadata. From the HTTP request headers, Cuttly extracts: User-Agent string (device type, OS, browser, version), Accept-Language (browser language setting), and performs a geo-IP lookup on the IP address to determine country. The IP address itself is not stored — only the derived country is retained, maintaining GDPR compliance.
  4. The scan is recorded in analytics. The metadata is written to the link's analytics record — incremented click count, device breakdown, country tally, hourly timestamp.
  5. The device is redirected to the destination URL. Cuttly returns an HTTP 301 redirect response pointing to the destination. The device navigates to the destination. From the scanner's perspective, the entire process is instantaneous — the scan and destination arrival feel simultaneous.

The entire process — request receipt, metadata recording, redirect response — typically completes in under 100 milliseconds. The scanner never perceives any delay relative to scanning a static code.

What Data Every Scan Captures

Every scan of a dynamic Cuttly QR Code records the following data automatically — no setup, no tags on the destination page, no JavaScript required:

Data pointWhat it showsHow it is derived
Total scansCumulative scan countEvery HTTP request to the short link
Device typeMobile / Desktop / TabletUser-Agent string parsing
Operating systemiOS / Android / other (with version)User-Agent string parsing
Device brand and modeliPhone 15, Samsung Galaxy S24, etc.User-Agent string parsing
BrowserSafari, Chrome, Samsung Internet (with version)User-Agent string parsing
CountryCountry of origin from IP geo-lookupGeo-IP database; IP discarded after
LanguageDevice browser language settingAccept-Language header
ReferrerReferring platform (typically "direct" for QR scans)HTTP Referer header
TimestampDate and hour of each scanServer-side timestamp at request receipt

A Note on QR Code Referrer Data

QR Code scans almost universally produce "direct" as the referrer value — because the scan is initiated by the device's native camera app or a system-level QR scanner, not by a web page. There is no referring webpage to pass a referrer header. This is expected behaviour, not a tracking failure. The referrer dimension is more useful for link click tracking from web sources than for QR Code scan analysis.

What QR Tracking Cannot Capture

QR Code scan tracking at the server level cannot capture: the individual identity of the scanner (by design — GDPR compliance), what the scanner did after reaching the destination (this is GA4's domain via UTM attribution), or whether the scanner converted (again, GA4 with UTM parameters).

How to Set Up Tracked QR Codes for Free — Step by Step

Step 1: Create a Free Cuttly Account

Step 2: Create a Short Link for the Destination

Paste the destination URL — the page you want the QR Code to link to — into the shortener field in your dashboard and click Shorten. Every short link in Cuttly automatically generates a dynamic QR Code. There is no separate QR Code generation step — the QR Code exists the moment the short link is created.

Step 3: Open the Link and Customise the Alias

After shortening, open the link in your dashboard. Set a custom alias that is meaningful for this QR Code placement — for example /menu-table-3, /product-packaging-red, /poster-manchester. A descriptive alias makes the analytics readable without needing to click into each link to understand what it represents.

Step 4: Add UTM Parameters

Open the UTM builder in the link settings and add: utm_medium=qr, utm_source=[placement-description], utm_campaign=[campaign-name]. This connects QR Code scans to GA4 — so downstream conversions from QR scans can be attributed to the specific placement and campaign.

Step 5: Access and Customise the QR Code

From the link's analytics view, click the QR Code icon to open the QR Code panel. Here you can:

  • Set error correction level — always H if adding a logo (allows up to 30% code area coverage)
  • Customise foreground colour to match brand (dark colour on light background — never invert)
  • Add a logo to the centre (keep to maximum 25% of total code area, always with a light background shape)
  • Choose module shape (standard square or rounded)

Step 6: Download in the Correct Format

SVG for print — always. SVG is a vector format that scales to any size without pixelation — from a 2cm business card QR Code to a 2m billboard QR Code from the same file. PNG is for digital use only (website, email, presentation) where the display size is fixed and known. Never scale a PNG for print.

Step 7: Test Scan Before Deploying

Before any print production or physical deployment, test scan the QR Code on iOS (native camera app) and Android (native camera app) at the intended scanning distance. If customisation has been applied — especially logo embedding — test on multiple device models. Only proceed to production after confirmed successful scanning on both platforms.

Step 8: Deploy and Monitor

Deploy the QR Code. From the first scan, analytics are recorded in your Cuttly dashboard — accessible at any time, in real time. Check analytics in the first 24 hours after deployment to confirm scans are being recorded, validating that the code is working correctly in its deployed context.

Per-Placement Tracking Strategy

The most powerful QR Code tracking strategy — and the one that produces actionable intelligence rather than aggregate numbers — is a separate dynamic QR Code per physical placement. Not one code for an entire campaign, but one code per location, per material type, per context.

Why Per-Placement Matters

A restaurant that deploys one QR Code across all tables, the front entrance, the takeaway packaging and the window poster gets one aggregate scan total. It cannot answer: which surface drives the most scans? Is the table QR Code being used or ignored? Does the window poster generate any off-street engagement?

A restaurant that deploys separate QR Codes per placement — /menu-table, /menu-entrance, /menu-packaging, /menu-window — gets per-placement scan data that directly answers these questions. The analytics reveals that table codes generate 80% of total scans, entrance codes generate 15%, packaging codes generate 4% and window poster codes generate 1%. This data tells the restaurant where to invest future QR Code effort — and where not to.

Per-Placement Naming Convention

Use a consistent slug naming convention for per-placement QR Codes:

  • Format: /[content-type]-[placement-location]
  • Examples:
  • /menu-table-a — restaurant table section A
  • /product-packaging-v2 — product version 2 packaging
  • /poster-oxford-st — outdoor poster at Oxford Street
  • /badge-conference-london26 — conference badge at London 2026 event
  • /leaflet-jan26-mailing — January 2026 direct mail leaflet

All QR Codes for the same campaign should share the same campaign tag in Cuttly — so you can view total campaign scan volume across all placements alongside the per-placement breakdown.

UTM Parameters for QR Codes — Connecting Scans to GA4

QR Code scans produce no HTTP referrer headers — when a device scans a QR Code, the navigation is initiated by the camera app, not by a web page. Every QR Code scan arrives in GA4 as "direct" traffic without UTM parameters. UTM parameters on the destination URL are the only mechanism for attributing QR Code scans to campaigns in GA4.

Standard UTM convention for QR Codes:

ParameterQR Code valueExample
utm_mediumqrqr
utm_sourceSpecific placement or materialtable-menu, product-packaging, poster-oxford-st
utm_campaignCampaign name + yearsummer-menu-2026, product-launch-2026
utm_contentMaterial variant if A/B testingv1, v2

With these UTM parameters, GA4 can attribute sessions and conversions from QR Code scans to the specific placement and campaign. A product packaging QR Code with utm_source=product-packaging&utm_medium=qr&utm_campaign=product-launch-2026 enables GA4 to show: how many sessions came from packaging QR scans, how long those sessions lasted, which pages were visited, and how many converted — attributing post-scan behaviour to the specific physical material that drove the scan.

QR Code Scan Analytics by Channel and Format

Restaurant and Hospitality QR Codes

Table QR Code menus generate consistent daily scan volumes tied to opening hours and meal service patterns. Analytics shows peak scan times — lunch service, dinner service — and can reveal whether breakfast service generates significant menu engagement relative to other meal times. Per-table QR Codes (separate code per table or table section) reveal which seating areas use the digital menu most — information relevant to both service resource allocation and physical material maintenance priorities.

Retail and Product Packaging QR Codes

Retail QR Codes generate scan data that reveals which products or categories drive the most post-purchase digital engagement. Scan timing from product packaging QR Codes follows purchase behaviour — peaks immediately after purchase (at home, after unboxing) rather than at point of sale. This timing pattern confirms that the packaging QR Code reaches a post-purchase engaged audience — the highest-intent possible audience for loyalty, re-order and review CTAs.

Event and Conference QR Codes

Event QR Codes — on programmes, session materials, badge stands and sponsor materials — have a compressed scan lifecycle: almost all scans happen within the event duration, with a secondary tail from post-event material review. Per-session or per-speaker QR Codes reveal which sessions generate the most digital engagement from attendees. Sponsor QR Codes reveal which exhibitor placements generate the most scans — directly informing sponsorship package design and pricing.

Outdoor and Print Advertising QR Codes

Outdoor QR Code scans follow the traffic pattern of the placement location — morning and evening commute peaks for transport hub placements, lunchtime peaks for high street locations, weekend peaks for leisure and retail environments. Understanding the scan timing pattern for a specific outdoor placement validates or challenges assumptions about the audience composition — a billboard assumed to reach commuters may reveal weekend leisure audience scans if timing data shows Saturday/Sunday peaks.

Business Card QR Codes

Business card QR Code scans provide a metric that has historically been impossible to measure: how many physical card exchanges convert to digital engagement. A sales professional who hands out 200 business cards at an industry conference and sees 47 QR Code scans in the following 48 hours knows that 23.5% of card recipients took a digital action — a conversion rate metric for physical networking that was previously unmeasurable.

Business card QR scan timing typically shows a delayed pattern — scans accumulate over hours and days after the card exchange, as recipients consult the card when they are at their desk rather than scanning immediately during the conversation.

iOS vs Android Scan Split — What It Tells You

QR Code scan analytics provides OS-level data that is uniquely valuable for understanding your physical-world audience. The iOS vs Android split from QR Code scans is one of the most actionable dimensions in the data.

Platform Priority for App Development

For brands with mobile apps or planning app development, QR Code scan OS data reveals the platform composition of your physical-world audience — often more representative than digital channel audience data, which can be skewed by platform demographics. If 70% of QR Code scans on your product packaging come from iOS devices, iOS should be the primary development and optimisation priority for your app experience.

Geographic Platform Patterns

iOS and Android market share varies significantly by country — iOS dominates in the UK, US, Japan and Australia; Android dominates in most of Europe, Asia (outside Japan) and emerging markets globally. If your QR Code scan OS split changes significantly across different geographic deployments, it may reflect genuine geographic audience differences rather than audience preferences — a useful signal for international marketing strategy.

Scanner vs Typed URL Audience Comparison

If the same short link is used for both a QR Code and a typed URL on a print material — both tracked in the same analytics — the device split distinguishes the two engagement types. QR Code scans produce an almost entirely mobile device split. Typed URL visits produce a mixed device split. If your analytics shows 95% mobile for a QR-and-typed-URL placement, almost all engagement is coming from QR scanning rather than typed URL entry. If the mobile proportion is lower — say 75% — a meaningful proportion of engagement is coming from typed URL entry, validating the investment in including the typed URL alongside the QR Code.

Scan Timing Intelligence

Scan timing data from QR Code analytics reveals when your physical-world audience is engaging — by hour of day and day of week. This data answers questions that placement-level impression estimates cannot:

  • Is the QR Code being scanned during the intended moment? A restaurant table code deployed to reduce ordering queues should show scan peaks at meal service times. If it shows peaks in the mid-afternoon between services, the usage pattern differs from the intended one — worth investigating.
  • How quickly do scans arrive after physical deployment? For a direct mail campaign, do scans arrive the day the mailing lands (indicating immediate action) or over the following week (indicating delayed response)? This timing pattern informs the optimal follow-up sequence for the direct mail campaign.
  • What is the scan lifecycle? Does engagement peak immediately and decay quickly (like press ad QR Codes) or sustain steadily over time (like product packaging QR Codes that remain in use for months)? Understanding the lifecycle by placement type allows more accurate planning of campaign durations and QR Code refresh cycles.
  • When should campaign QR Codes be retired? Monitoring scan velocity — the rate at which new scans arrive per day — shows when a campaign QR Code has reached the natural end of its engagement lifecycle. When daily scans drop to near-zero consistently, the physical materials have likely been discarded or the campaign audience exhausted.

Geographic Scan Data

Country-level scan data from QR Code analytics provides geographic intelligence that is often more reliable than impression-based estimates for physical placements.

Validating Placement Audience Assumptions

A QR Code on a product sold internationally generates scans from the countries where the product is actually purchased and used — not from the countries the brand assumes it reaches. If 30% of packaging QR scans come from Germany and only 10% from France, despite similar estimated market sizes, the scan data reveals actual distribution and usage patterns that sales data alone may not surface as clearly.

Identifying Unexpected Markets

QR Code scan geography sometimes reveals markets the brand has not actively targeted. A UK-focused brand that discovers 20% of its product packaging QR scans originate from Australia has discovered an organic market signal worth investigating — are Australian consumers finding and purchasing the product through export or grey market channels? Is there an organic demand worth addressing with a direct market entry?

Local vs National Campaigns

For campaigns intended to target a specific geographic area — a regional poster campaign, a local event, a city-specific direct mail — the country data confirms whether the physical deployment reached the intended geographic audience. If a London-specific campaign generates significant scans from Birmingham and Manchester, it may indicate that digital amplification of the physical campaign is reaching a broader geographic audience — or that the physical materials are being circulated beyond the intended area.

Updating QR Code Destinations Without Reprinting

The ability to update a dynamic QR Code's destination without changing the printed code or reprinting any materials is one of the most practically valuable features of dynamic QR Codes — and it is entirely invisible to the scanner.

When to Update the Destination

  • Campaign page expires. A seasonal offer landing page becomes outdated. Update the destination to a current offer or the main product page.
  • Website migrates. A domain change or URL restructure breaks the destination. Update all affected short links in the Cuttly dashboard — all deployed QR Codes continue working.
  • Product is discontinued. A packaging QR Code pointing to a product that has been discontinued. Update to the nearest alternative product or a catalogue page.
  • Content is updated. A QR Code pointing to a PDF guide or resource document. When the document is updated, update the destination link — all distributed QR Codes point to the current version.
  • A/B testing the destination. Test two different landing pages for the same QR Code by updating the destination mid-campaign — comparing scan-to-conversion rates before and after the change.
  • Seasonal rotation. A permanent in-store QR Code that rotates through seasonal campaign destinations — summer offer, Christmas offer, spring promotion — without ever reprinting the in-store material.

How to Update in Cuttly

Open the link in your Cuttly dashboard, click Edit, change the destination URL, save. The update is live within seconds. Every QR Code that encodes this short link — on every physical material, across every deployment — immediately routes to the new destination. No material changes, no notification to material owners, no coordination required.

Common QR Code Tracking Mistakes

Using a static QR Code

The most fundamental mistake — and the most common. A static QR Code generated by a free online tool has zero tracking capability, by design. No scan is ever recorded, on any platform, by any means. If you have deployed static QR Codes and want tracking, the only solution is to replace them with dynamic Cuttly QR Codes — which requires reprinting any materials that carry the static code.

One code for all placements

A single dynamic QR Code deployed across multiple placements tracks total scans but cannot reveal which placement generated which scans. The intelligence that identifies high-performing and low-performing placements — the data that justifies or challenges print investment — is only available with per-placement unique codes.

No UTM parameters

Without UTM parameters, QR Code scan traffic arrives in GA4 as direct — indistinguishable from any other direct traffic. Cuttly analytics shows scan volume; GA4 shows nothing attributable to QR Codes. The downstream conversion and revenue picture is invisible. Always add UTM parameters to QR Code destination URLs using Cuttly's built-in UTM builder.

Downloading PNG for print

A PNG QR Code scaled for large format print pixelates and may not scan reliably. Always SVG for print. The SVG from Cuttly is production-ready at any print size.

Not testing before production

A QR Code that scans perfectly on screen may fail in print conditions — specific ink coverage on specific stock under specific ambient lighting. Test on iOS and Android native cameras at the intended scanning distance before approving any print run.

Never checking the analytics

Deploying tracked QR Codes and never reviewing the analytics produces no business value from the tracking investment. Build a review cadence — check scan analytics for active campaigns weekly and for permanent placements monthly. The data is only useful if someone looks at it and acts on it.

Measuring QR Code Campaign ROI

With dynamic QR Code tracking in place, QR Code campaign ROI becomes measurable — not perfectly, but meaningfully and actionably.

The QR Code ROI Measurement Framework

  1. Define the conversion. What action on the destination page constitutes a successful QR Code scan outcome? A purchase? A registration? A newsletter sign-up? A brochure download? Define this before deploying.
  2. Set up GA4 conversion tracking for the defined conversion event on the destination page.
  3. Deploy with UTM parameters identifying the QR Code placement and campaign.
  4. After the campaign period, check Cuttly analytics for total scans per placement and GA4 for conversions attributed to utm_medium=qr and utm_campaign=[campaign-name].
  5. Calculate scan-to-conversion rate — GA4 conversions divided by Cuttly total scans for the same campaign. This is your QR Code's conversion funnel efficiency metric.
  6. Calculate cost per conversion — total campaign cost (print production, media placement, QR Code setup) divided by total conversions attributed to QR Code traffic in GA4. Compare across campaigns and placements to identify the highest-ROI QR Code deployments.

This framework will not produce the pixel-level tracking precision of digital advertising. Print QR Codes cannot capture the full audience — only the segment that scans. But it produces measurably better ROI intelligence than the previous state of "we have no idea if anyone scanned the code."

Frequently Asked Questions

How do I track QR Code scans?

Use a dynamic QR Code from Cuttly — not a static one. Create a free account at cutt.ly/register, shorten the destination URL, open the link in your dashboard, access the QR Code panel, and download the dynamic QR Code. Every scan is automatically tracked from the first scan — device, OS, country and timing recorded in your dashboard with no setup required on the destination page.

What data can you see from QR Code scans?

Total scans, device type, operating system (iOS vs Android with version), device brand and model, browser, country (from geo-IP, IP discarded after use), language and timestamp. Hourly heat map available from the Single plan. None of this data is available from a static QR Code — static codes have zero tracking capability.

Can you track QR Code scans for free?

Yes. Cuttly's free plan includes dynamic QR Code generation with full scan tracking. Create a free account at cutt.ly/register (no credit card required), shorten your URL, and download the dynamic QR Code. Registration is required.

What is the difference between a static and dynamic QR Code for tracking?

Static QR Codes encode the destination URL directly — no server involved, zero tracking possible by any means. Dynamic QR Codes encode a short link URL — every scan passes through the short link server which records the scan event before redirecting to the destination. Dynamic codes are also updatable: the destination can be changed without reprinting the code.

URL Shortener

Cuttly simplifies link management by offering a user-friendly URL shortener that includes branded short links. Boost your brand’s growth with short, memorable, and engaging links, while seamlessly managing and tracking your links using Cuttly's versatile platform. Generate branded short links, create customizable QR codes, build link-in-bio pages, and run interactive surveys—all in one place.

Cuttly - Consistently Rated
Among Top URL Shorteners

Cuttly isn’t just another URL shortener. Our platform is trusted and recognized by top industry players like G2 and SaaSworthy. We're proud to be consistently rated as a High Performer in URL Shortening and Link Management, ensuring that our users get reliable, innovative, and high-performing tools.C