How to Track QR Codes in Google Analytics (GA4) with UTM Parameters
ScanOrbit Team
The eternal frustration of print advertising is the attribution black hole. You spend money on a direct mail campaign, your website traffic spikes the following week, and you cannot definitively prove a connection. With QR codes and UTM parameters, that problem is solved. Every scan becomes a trackable click: attributable to a specific campaign, channel, and creative.
?utm_source=flyer&utm_medium=qr&utm_campaign=summer-sale; (2) print the code; (3) in GA4 open Reports → Acquisition → Traffic acquisition and set the dimension to Session source / medium. Your QR visits appear as flyer / qr. The rest of this guide covers naming, examples, and the mistakes that make QR traffic disappear.Why QR scans show up as "direct" traffic
Without tags, a visit from a QR code arrives with no referrer: the phone's camera opened the link, not another website. GA4 therefore files it under (direct) / (none), mixed in with people who typed your address or used a bookmark. That's why a print campaign can look like it did nothing in analytics. UTM tags are what separate those visits out.
What are UTM parameters?
UTM parameters (Urchin Tracking Module) are tags appended to a URL that tell analytics platforms like Google Analytics 4 exactly where a visitor came from. They look like this:
https://yoursite.com/summer-sale?utm_source=flyer&utm_medium=qr&utm_campaign=summer2026When a visitor arrives via this URL, GA4 records the session as coming from source "flyer", medium "qr", campaign "summer2026", providing clear attribution in your reports.
The five UTM fields explained
- utm_source: where specifically the traffic came from. For print campaigns:
flyer,poster,business-card,packaging. - utm_medium: the channel type. For QR codes, use
qrorprint. - utm_campaign: the campaign name: use something meaningful, like
summer-sale-2026orproduct-launch-q3. - utm_term: optional, used for paid search keyword tracking and rarely needed for QR campaigns.
- utm_content: optional, differentiates between multiple creatives in the same campaign, e.g.
red-bannervsblue-bannerfor A/B testing.
Setting up UTM in ScanOrbit
- Open a URL QR code in your ScanOrbit dashboard (or create a new one).
- Scroll to the UTM Parameters section (available on Pro and Business plans).
- Fill in utm_source, utm_medium, and utm_campaign at minimum.
- Save. ScanOrbit automatically appends the parameters to the destination URL on every scan: you don't need to modify the URL itself.
On the Free plan, you can get the same result by adding the tags to the link yourself: paste the full tagged URL (for example from the free UTM builder) as your QR code's destination. The built-in UTM fields simply save you building the URL by hand, and let you change the tags later without touching the link.
The help center has a full UTM setup guide with field-by-field instructions and naming convention recommendations.
Viewing QR traffic in GA4
In Google Analytics 4, navigate to Reports → Acquisition → Traffic Acquisition. Change the primary dimension to Session source / medium. Look for entries like flyer / qr or poster / print.
To see campaign-level data, add a secondary dimension for Session campaign or use Reports → Acquisition → Traffic Acquisition and filter by your campaign name.
For a deeper view, use Explore → Free Form exploration and combine session source, medium, campaign, and conversion events to build a full attribution report.
UTM naming conventions that don't break
The biggest UTM mistake marketers make is inconsistent naming. GA4 is case-sensitive, so QR, qr, and Qr create three separate entries in your reports. Establish these rules before your first campaign and document them:
- Always lowercase:
utm_medium=qr, neverutm_medium=QR - Use hyphens, not underscores or spaces:
summer-sale, notsummer_saleorsummer sale - Use dates in campaigns:
product-launch-2026-q3is searchable years later - Keep sources descriptive:
manchester-flyeris more useful than justprint
Common use case examples
| Placement | utm_source | utm_medium | utm_campaign |
|---|---|---|---|
| Restaurant table card | table-card | qr | menu-2026 |
| Direct mail flyer | summer-flyer | summer-sale-2026 | |
| Product packaging | packaging-sku123 | qr | product-launch |
| Window sticker | shop-window | qr | brand-awareness |
| Event badge | badge | qr | conference-2026 |
For marketing-specific QR code strategy including retargeting pixels and A/B testing, see the marketing campaigns use case guide. And the QR code analytics guide covers what the ScanOrbit dashboard shows you alongside your GA4 data.
Generate a Live Vector QR Code
Type any URL or text to test creating an instant dynamic QR code right now:
ScanOrbit Team
AuthorWritten by the team that builds ScanOrbit
We build the QR platform these guides describe, so the advice here comes from what we have had to get right in the product: print legibility, scan reliability, and what actually shows up in scan analytics.
Related articles
Related Guides & Knowledge Base
Master print optimization, real-time analytics telemetry, and campaign design best practices.
8 QR Code Design Mistakes That Hurt Scan Rates
Avoid contrast errors, margin clipping, and improper error correction before high-volume commercial print runs.
What Your QR Code Analytics Are Actually Telling You
Decode scan telemetry: turn city geolocations, device breakdowns, and time curves into actionable campaign ROI.
Dynamic vs Static QR Codes: Which One Do You Need?
Understand the core architecture: offline raw encoding vs cloud redirection with instant destination updating.
Help Center & Implementation Documentation
What is a QR Code?
Matrix symbology, Reed-Solomon error correction, and optical scanner mechanics.
How to Customize Your QR Code
Palette selection, custom logo insertion, frame badges, and vector export formats.
Choosing Error Correction Levels
Level L (7%) to Level H (30%): picking the right density for print durability.
Create Your Dynamic QR Code in Seconds
Experience full vector styling, editable destination routing, and real-time scan analytics: 3 dynamic codes free forever.
Scan to Test Studio
Scan with your phone camera to test instant redirection.