UTM Parameters with QR Codes: How to Track Offline Scans in GA4
QR codes are amazing for offline-to-online marketing—but without tracking, you're basically guessing. According to Bitly's 2026 QR Code Statistics, campaigns with proper tracking parameters can see significantly higher engagement and conversion rates by enabling data-driven optimization. That's where UTM parameters with QR codes come in. UTMs are simple tags you add to a URL so that Google Analytics 4 (GA4) can tell you exactly where the traffic came from.
If you run posters, flyers, menus, business cards, packaging inserts, or event banners, UTMs let you answer questions like:
- Which poster location gets the most scans?
- Do flyers outperform table tents?
- Does packaging drive repeat traffic?
- Which event booth placement brings the best leads?
This guide shows you how to structure UTMs for QR campaigns, avoid common tracking mistakes, and set up clean offline attribution.
What are UTM parameters?
UTM parameters are short pieces of text you add to the end of a URL. They look like this:
?utm_source=poster&utm_medium=print&utm_campaign=brand_launch
The most important UTM fields are:
utm_source= where it came from (poster, flyer, packaging, event)utm_medium= the marketing medium (print, offline, qr)utm_campaign= the campaign name (winter_offer_2026)utm_content(optional) = variation (location_a vs location_b)utm_term(optional) = keyword (mostly for paid search, but can be used creatively)
When someone scans the QR code and lands on your site, GA4 captures those UTMs and attributes the session accordingly.
QR UTM naming templates by placement
Start with the physical placement, then keep the naming lowercase and consistent across every code in the campaign.
| Placement | utm_source | utm_medium | utm_content |
|---|---|---|---|
| Flyer | flyer |
print |
distribution_point |
| Poster | poster |
print |
location_name |
| Packaging insert | packaging |
offline |
product_line |
| Review card | table_card |
qr |
service_moment |
Why UTMs matter for QR codes
QR scan analytics from a QR tool can tell you scan counts. But UTMs let you track what happens after the scan:
- page views
- signups
- purchases
- form submissions
- time on site
- conversion rate
That means UTMs + GA4 is how you measure real ROI.
For the QR-side view, use QR code tracking. For placement interpretation and campaign reporting, use QR code analytics.
The best setup: Trackable QR code + UTM URL
Here's the cleanest, most scalable method:
- Create a landing page URL (destination)
- Add UTMs to that URL
- Put that full URL behind a dynamic/trackable QR code
- Monitor performance in GA4 + your QR dashboard
Internal link: Trackable QR Codes.
Why dynamic matters: if you ever change your campaign or page structure, you can update the destination later without reprinting.
Step-by-step: Add UTMs to a QR code
Step 1: Decide what you want to track
Before writing UTMs, define the campaign structure. For example:
- Channel: offline QR
- Assets: posters, flyers, menus
- Variations: 3 locations
Step 2: Create a UTM naming convention
Consistency is everything. Use lowercase and underscores.
Example convention:
utm_source= poster / flyer / menu / packaging / eventutm_medium= qr / offline / printutm_campaign= spring_promo_2026utm_content= location_cafe / location_gym / location_uni
Step 3: Build your URL
Base URL example:
https://yourdomain.com/offer
With UTMs:
https://yourdomain.com/offer?utm_source=poster&utm_medium=print&utm_campaign=spring_promo_2026&utm_content=location_cafe
Step 4: Generate the QR code using the UTM URL
Paste the full UTM URL into your QR generator (preferably dynamic + trackable).
Step 5: Test it
Scan with two devices and confirm:
- the page loads fast
- GA4 is tracking sessions
- UTMs appear in GA4
UTM templates for common QR campaigns
Use these as copy/paste templates:
Poster template
?utm_source=poster&utm_medium=print&utm_campaign=campaign_name&utm_content=location_name
Flyer template
?utm_source=flyer&utm_medium=print&utm_campaign=campaign_name&utm_content=distribution_point
Packaging insert
?utm_source=packaging&utm_medium=offline&utm_campaign=campaign_name&utm_content=product_line
Event booth
?utm_source=event&utm_medium=offline&utm_campaign=campaign_name&utm_content=booth_banner
How to view QR UTMs in GA4
In GA4, you typically check:
- Traffic acquisition → Sessions by source/medium
- User acquisition → New users by source/medium
- Campaigns reports (if enabled) → Campaign, source, medium
- Explorations → build a custom report including conversions
Pro tip: define a conversion event for your key action (signup, lead form, purchase). That way you can compare conversion rate per QR placement.
Internal link: QR code analytics.
Common mistakes (avoid these)
- Inconsistent naming ("Poster" vs "poster" vs "POSTER")
- Using spaces (use underscores)
- Forgetting to separate variations (no utm_content = no learning)
- Pointing to slow pages (QR traffic is impatient)
- Using static QR for campaigns that evolve
Advanced: Routing QR traffic through a campaign page
If you want deeper control, route all QR scans to a campaign landing page first. That page can:
- detect device language (DE/EN)
- offer multiple buttons (Spotify, WhatsApp, pricing, etc.)
- A/B test headlines
- improve conversion
Your QR stays the same, but you optimize the page over time.
Wrap-up
Using UTM parameters with QR codes is the fastest way to turn offline marketing into measurable performance. Combine UTMs with dynamic QR codes and GA4 conversions, and you can optimize QR placements like a real paid campaign.
