Track QR Code Scans in GA4: UTM-Tagged QR Codes, Step by Step
Build UTM-tagged dynamic QR codes step by step, see scans as campaigns in GA4, and get free scan analytics broken down by country and device.
A QR code printed on a poster is a tracking black hole — unless you build it right. Point the code at a raw URL and the scan lands in Google Analytics 4 as unattributable "direct" traffic, forever. Point it at a short link carrying UTM parameters and every scan becomes a tracked event with a campaign name, a location, a device, and a timestamp. Here's the full build, step by step, so your next printed QR code shows up in GA4 as a real campaign.
📊 Quick Overview
The chain that makes QR codes trackable: destination URL + UTM parameters → short link → QR code generated from the short link. Every scan hits the short link first, so it gets counted and analyzed (country, city, device, browser, time) — then the UTM parameters ride the redirect into GA4, where the scan appears as a campaign session in the acquisition reports instead of anonymous direct traffic. On Sinkto.Link, every piece of that chain is free.
Why Static QR Codes Are a Black Hole
A QR code is just a URL rendered as an image. When someone scans it, their browser opens the URL directly — no referrer header, no source data, no context. In GA4, that session shows up under "direct" traffic, lumped in with every bookmark and typed URL. You'll see visits; you'll never know they came from the poster, the packaging, or the flyer.
And a static QR has a second, worse problem: once it's printed, the URL inside it is frozen. If the destination moves, the campaign ends, or the landing page URL changes — every printed code is dead weight. (More on that failure mode in our link permanence guide.)
The fix for both problems is the same: put a short link you control between the QR code and the destination. The QR encodes the short link; the short link redirects wherever you say; and because the destination URL carries UTMs, the scan is fully attributed — in your shortener's analytics and in GA4.
Step-by-Step: QR Code to GA4 Campaign
Step 1: Plan your campaign naming first
Attribution is only as good as your naming. Decide your conventions before creating anything: lowercase everything, no spaces (use hyphens), and a scheme like utm_campaign=expo-spring-2026 per campaign, utm_source=qr, utm_medium=print (or packaging, poster, flyer). Consistent names are what make GA4's reports groupable later. Build consistently tagged URLs with our free UTM builder.
Step 2: Add UTM parameters to your destination URL
Take your landing page URL and append all five UTM parameters — source, medium, campaign, content, and term. For a QR on a conference poster, that looks like:
https://yoursite.com/expo-offer?utm_source=qr&utm_medium=poster&utm_campaign=expo-spring-2026&utm_content=booth-banner&utm_term=visitor-pass
Use utm_content to distinguish physical placements (booth banner vs. handout vs. packaging) so one campaign can have many codes, each measurable separately. Any UTM builder tool works for composing these — what matters is that the parameters are on the destination before you shorten.
Step 3: Create the short link
In Sinkto.Link (free), paste that full UTM-tagged URL and create the link — optionally with a custom alias like stnk.to/expo-offer that's readable at poster distance and reinforces trust. Every click through the link is recorded with country and city, device, browser, referrer, and timestamp, and Sinkto captures all five UTM parameters on the redirect — so your shortener analytics and GA4 will agree on what the campaign was called.
Step 4: Generate the QR code from the short link
From the short link's panel, generate its QR code. Style it so people actually scan it: upload your logo for the center, set brand colors, pick a shape style, and export as PNG for digital use or SVG for print (SVG is vector — it stays crisp at billboard size). Because the code encodes the short link, not the destination, you can change where it redirects whenever you like. You can try the generator with no signup at our free QR code tool; more on pairing codes with short links in QR code + URL shortener tracking and the 2026 free shortener + QR guide.
Step 5: Test-scan before you print
This is the step everyone skips and regrets. Before anything goes to press: scan the code with two different phones (one iPhone, one Android), confirm the redirect lands on the right page with UTMs intact in the final URL, then check that the scan registered in your Sinkto analytics dashboard within seconds. A code that's misprinted or truncated is invisible until it's on 5,000 flyers.
Step 6: Read scan analytics in Sinkto
As scans come in, the link's dashboard fills in: which countries and cities the scans came from (the closest thing to knowing where your posters worked), what devices and browsers scanned, when scans happened over time (did the booth traffic spike during your demo slot?), all filterable per link.
Step 7: See it in GA4 as a campaign
Because every scan's redirect carries your UTM parameters, GA4 attributes the session correctly. Open Reports → Acquisition → Traffic acquisition and group by session source/medium — your qr / poster sessions appear as their own line, not direct traffic. Switch the dimension to Session campaign and expo-spring-2026 shows up as a named campaign with its conversions. Congratulations: a physical poster is now a measurable channel, alongside email and paid.
What Sinkto Shows vs. What GA4 Shows
You get two complementary views, not duplicates:
| Signal | Sinkto.Link dashboard | GA4 |
|---|---|---|
| Scan/click count | ✅ Every scan, per link | ✅ Sessions by campaign |
| Country & city | ✅ Per scan | ✅ Aggregated (if enabled) |
| Device & browser | ✅ Per scan | ✅ Per session |
| UTM breakdown (source/medium/campaign/content/term) | ✅ Captured on every redirect | ✅ Drives all acquisition reports |
| Time series | ✅ Scan timing per link | ✅ Session timing |
| What happens after the click | — | ✅ Conversions, engagement, revenue |
| Works without GA4 | ✅ Standalone | — |
The division of labor: Sinkto answers "did this specific code get scanned, where, and on what?" GA4 answers "what did those people do next?" You need both halves — one measures the physical placement, the other measures the outcome.
Details That Make or Break It
- Case sensitivity matters.
Expo-Springandexpo-springare different campaigns in GA4. Pick lowercase and never deviate. - One placement, one
utm_content. If the booth banner and the handout share a code, you've made them indistinguishable forever. - Never reuse a code across campaigns. Duplicate the short link with a new campaign parameter instead — retroactive attribution is impossible.
- Check contrast and quiet zone. Dark code on light background, clear margin around it, logo kept modest. Test-scan at realistic distance before print.
- Keep the destination editable. The whole architecture exists so the printed code never changes while the redirect can. Don't bypass it by encoding raw URLs.
Build your first trackable QR campaign free — unlimited links, unlimited codes, no credit card →
Frequently Asked Questions
Do QR code scans show up in GA4 automatically?
Which UTM parameters should a QR code destination have?
Can I tell where a QR code was scanned physically?
Can I change where a printed QR code points?
Should I export my QR code as PNG or SVG?
Updated: August 2026. Sinkto.Link behavior (UTM capture on redirect, country/city and device analytics, QR logo/colors/shapes, PNG + SVG export, free destination editing) reflects the current product. GA4 steps reflect standard Reports → Acquisition behavior. Contact us with feedback.
Related articles
QR Code URL Shortener: How to Combine Short Links with QR Tracking
Turn any URL into a trackable short link with a QR code. Learn how to use QR codes for offline marketing, events, and print — with free click analytics.
Read more →GuidesFree Link Shortener with QR Code Generator: Complete Guide for 2026
Looking for a free link shortener with QR code generator? This complete guide covers the best free URL shorteners with built-in QR code creation, how to generate QR codes from short links, and expert tips for 2026.
Read more →GuidesShort Link Generator: Free, Unlimited, With Click Analytics
A free short link generator should create unlimited links, give you a QR code, and show who clicked — without a trial or a card. Here's how the free generators compare, and how to use one properly.
Read more →Ready to optimize your links?
Join thousands of creators using Sinkto.Link — free forever
Get Started Free →