GA4 Campaign Attribution Engine
UTM Campaign Builder + QR Code
Build clean Google Analytics UTM tracking parameters for your offline print marketing campaigns and download the QR code instantly.
Scan to test GA4 parameters
What is UTM tracking, and why pair it with a QR code?
Say you run a bakery and you've paid for two placements: flyers at the farmers market, and a QR code sticker on your window. Both point people to your online ordering form. When you check your analytics and see forty new visits, without UTM tags both appear as generic direct traffic. To Google Analytics, they are indistinguishable.
UTM parameters fix that by tagging the destination URL with campaign source, medium, and campaign name. The landing page remains identical for the user, but your analytics dashboard immediately attributes the visit to the exact physical asset. Our step-by-step guide shows how to track QR codes in Google Analytics (GA4), including where the visits appear in your reports.
Nobody wants to type a 120-character URL with tracking parameters by hand. The QR code carries that technical complexity effortlessly.
UTM parameter reference
What each field actually does, and a real example for each.
| Parameter | Required | What it means | Example |
|---|---|---|---|
| utm_source | Required | Where the traffic came from | flyer, billboard, instagram |
| utm_medium | Required | The marketing medium | print, qr, social, email |
| utm_campaign | Required | Which specific campaign | summer_sale_2026 |
| utm_content | Optional | Distinguishes similar content/links | hero_cta, footer_link |
| utm_term | Optional | Identifies paid search keywords | dynamic_qr (rarely used for print) |
How GA4 categorizes QR code traffic
One of the most frequent frustrations marketing teams encounter when tracking offline QR campaigns is seeing their scan traffic lumped into Google Analytics 4's "Unassigned" bucket. This happens because GA4 relies on rigid regex rules for its Default Channel Grouping.
1. Why utm_medium matters most
If you set utm_medium=qr or utm_medium=qr_code, GA4 does not know which default channel to assign it to, so it places all sessions under Unassigned. To maintain clean reporting, standardise on utm_medium=print or utm_medium=offline, or create a Custom Channel Group inside GA4 Admin specifically named "Physical QR Scans".
2. Enforce strict lowercase naming
Google Analytics is case-sensitive. If one print designer tags an ad with utm_campaign=Spring_Sale and another uses utm_campaign=spring_sale, GA4 records them as two unrelated campaigns. Establish a company-wide convention of all-lowercase parameter strings joined by underscores.
3. Dynamic QR codes vs static UTM URLs
A static QR code with 5 UTM parameters generates a dense, intricate pattern that requires high print resolution. By saving your tracked campaign inside ScanOrbit as a Dynamic QR Code, the printed graphic remains a simple, clean matrix pointing to a short redirect URL, while ScanOrbit attaches the complete UTM payload upon redirection.
Where this gets used
Print & magazine ads
Know exactly which publication and issue drove traffic, not just 'print' as a whole.
Billboards & outdoor
Separate a highway billboard from a bus-stop poster in the same city.
Product packaging
Measure how many people scan the box after buying, versus browsing online first.
Business cards & flyers
See if handed-out flyers at an event actually convert to website visits.
Restaurant table tents
Compare scan-through rates between table tents and window decals.
Multi-location campaigns
Use utm_content to tell two identical posters in different stores apart.
Frequently asked questions
UTM parameters are small tags added to the end of a URL (utm_source, utm_medium, utm_campaign, and the optional utm_term and utm_content) that tell Google Analytics where a visit came from. Without them, a scan from a printed flyer and a scan from a poster both show up as generic 'direct' traffic: indistinguishable in your reports.