How to Track QR Codes in Google Analytics 4 (GA4): Complete UTM Setup Guide

ER
Elena Rostova(Engineering Director)
August 20, 202612 min read
To track QR code scans in Google Analytics 4 (GA4), append standardized UTM campaign parameters (`utm_source`, `utm_medium=qr_code`, and `utm_campaign`) to your destination URL, generate a dynamic QR code in TryQRMint to keep the barcode matrix clean, and review incoming traffic under Reports > Acquisition > Traffic acquisition in your GA4 dashboard. This guide explains how to structure UTM parameters, configure GA4 channel reporting, reconcile physical scans with digital sessions, and troubleshoot common attribution pitfalls.
Official Generator Tool

Looking to build this now? Try our Dynamic QR Codes with UTM Tracking

Preserve Google Analytics 4 UTM parameters through ultra-fast sub-50ms cloud redirects.

Open Tool

1. Standardized UTM Parameters for Offline QR Code Campaigns

Google Analytics 4 relies on UTM query strings to categorize inbound traffic. When deploying physical QR codes on print collateral, use this standardized UTM taxonomy:

UTM ParameterFunction in GA4Recommended QR ConventionReal-World Print Example
utm_sourceIdentifies specific physical placementSpecific print touchpoint or locationdirect_mail, table_tent, packaging_box, billboard_hwy101
utm_mediumHigh-level marketing channelStandardize organization-wide to qr_codeqr_code (always lowercase)
utm_campaignMarketing promotion or initiativeCampaign or seasonal offer namespring_sale_2026, loyalty_onboarding, q3_catalog
utm_contentCreative variation or placement formatDifferentiates material sizes or variantsblue_flyer_a5, counter_stand_pos1, menu_card_v2
utm_termBranch location or cohort tagStore branch code or customer segmentnyc_soho_store, chicago_loop, vip_tier1
Naming Consistency Rule: Always use lowercase alphanumeric characters with underscores or hyphens (e.g., utm_medium=qr_code). Google Analytics 4 is strictly case-sensitive; using 'QR_Code' and 'qr_code' splits your data into separate rows.

2. How to Build Your Trackable QR Destination URL

Construct your destination link with your website address and UTM parameters before creating your QR code in TryQRMint:

  • Illustrative Tracking Link: `https://example.com/promo?utm_source=direct_mail&utm_medium=qr_code&utm_campaign=spring_sale`
  • Base Webpage URL (`https://example.com/promo`): The landing page on your website where scanners will arrive.
  • Placement Parameter (`utm_source=direct_mail`): Tells GA4 exactly which physical collateral generated the visit.
  • Medium Parameter (`utm_medium=qr_code`): Enables your analytics team to filter and aggregate all QR campaigns into a unified channel.
  • Campaign Identifier (`utm_campaign=spring_sale`): Attributes revenue, leads, and engagement time to your seasonal initiative.
  • Why Dynamic QR Codes Are Critical for UTMs: A URL containing multiple UTM tags easily exceeds 120 characters. In a static QR code, this creates a dense, complex dot matrix that is difficult for cameras to focus on from a distance. A Dynamic QR Code encodes a short redirect link (keeping the matrix clean and fast-scanning) while forwarding the complete UTM query string intact to your destination site (compare options in our Static vs Dynamic QR Code guide).
TryQRMint Studio

Create Your Custom QR Code in Seconds

Generate high-resolution dynamic & static QR codes with your custom brand colors, center logos, and sub-50ms global edge redirection.

✓ 100% Free Forever Tier✓ High-Resolution Vector SVG✓ Instant Live Analytics

3. Reconciling Differences: QR Redirect Scans vs. GA4 Sessions

A frequent source of confusion for marketing teams is discovering that their TryQRMint QR scan count is higher than the recorded session count in Google Analytics 4. These measure three distinct layers of user interaction:

  • Layer 1 — Physical QR Scan / Redirect: Recorded on TryQRMint's cloud servers the instant a phone camera detects the code and requests the short redirect URL. This represents raw physical engagement.
  • Layer 2 — Web Server Pageview: Recorded when the user's mobile browser completes the HTTP redirect and requests your website's HTML document.
  • Layer 3 — GA4 Session: Recorded client-side only after your webpage loads, parses Google Tag Manager or `gtag.js`, and executes analytics tracking.
  • Why Scan and Session Counts Differ: (1) Bounce before load: users scanning on slow cellular networks may close their browser before your site loads; (2) Ad-blockers & privacy browsers: privacy-focused browsers like Brave or iOS content blockers may block Google Analytics scripts while still loading your page; (3) Cookie consent banners: in EU/GDPR jurisdictions, users who decline analytics cookies are not counted in GA4; (4) Link re-sharing: users who bookmark the page or share the link via WhatsApp generate additional GA4 sessions without scanning the physical code.

4. Step-by-Step: Viewing and Analyzing QR Campaign Traffic in GA4

Follow these verified steps inside your Google Analytics 4 property to review traffic and conversions generated by physical QR codes:

  • Step 1: Sign in to your Google Analytics 4 account and navigate to your active web property.
  • Step 2: In the left navigation menu, click Reports > Acquisition > Traffic acquisition.
  • Step 3: In the report data table, click the primary dimension dropdown and select 'Session source / medium' (or 'Session campaign').
  • Step 4: Type `qr_code` into the search bar directly above the table to filter for all QR-driven traffic.
  • Step 5: Review performance metrics: Users, Sessions, Engaged sessions, Average engagement time per session, Key events (conversions), and Total revenue.
  • Step 6: Add a secondary dimension (such as 'Device category' or 'Landing page') to evaluate mobile UX performance across scanner types.
Custom Channel Groupings: If you have Administrator or Editor permissions in GA4, you can create a custom channel group (Admin > Data display > Channel groups) defining a dedicated 'Print QR Codes' channel where Medium equals 'qr_code'.

5. Technical Troubleshooting & Common Data Loss Pitfalls

Avoid these technical configuration traps that strip UTM tracking parameters or distort analytics data:

  • Trailing Slash Redirect Stripping: Many web servers (WordPress, Shopify, Next.js) enforce URL normalization by 301-redirecting `example.com/promo` to `example.com/promo/`. Ensure your server preserves query strings during internal redirects; otherwise, all UTM parameters will be discarded upon landing.
  • iOS 17 Link Tracking Protection: Apple's Link Tracking Protection removes user-identifying tracking parameters in Safari Private Browsing and Mail, but standard marketing campaign UTMs (`utm_source`, `utm_medium`, `utm_campaign`) are fully preserved.
  • 24 to 48-Hour GA4 Processing Delay: While TryQRMint reports QR scans in real time on your live dashboard, standard GA4 Acquisition reports experience a 24 to 48-hour data processing window. For same-day validation, use GA4's Realtime report view.
  • Double-Redirect Chains: Avoid redirecting your dynamic QR code to a shortener or intermediate tracking service (e.g., bit.ly) before reaching your site, as multiple hops introduce mobile latency and risk parameter stripping.

Final Takeaway

Tracking QR code campaigns in Google Analytics 4 bridges the gap between physical marketing collateral and digital revenue attribution. By standardizing on `utm_medium=qr_code`, utilizing dynamic QR codes to maintain clean dot pitch, and inspecting traffic in GA4 acquisition reports, marketers can measure offline campaign engagement with confidence.

Got Questions?

Frequently Asked Questions

Find immediate answers regarding dynamic QR codes, analytics, formats, and commercial usage.

Add standard UTM parameters (`utm_source=direct_mail`, `utm_medium=qr_code`, `utm_campaign=spring_sale`) to your destination link, create a dynamic QR code in TryQRMint to keep the matrix clean, and review the resulting traffic under Reports > Acquisition > Traffic acquisition in GA4.

TryQRMint captures server-side redirect scans the instant a camera reads the code. GA4 sessions require the destination webpage to finish loading and execute client-side JavaScript. Discrepancies happen when users bounce during loading, use ad/privacy blockers, decline cookie consent banners, or revisit bookmarked links later.

Using a consistent medium like `utm_medium=qr_code` prevents data fragmentation and allows you to group all physical print scans across flyers, packaging, and table tents into a single reporting channel in GA4.

No. Any user with Viewer access can see QR traffic in GA4 by navigating to Reports > Acquisition > Traffic acquisition and selecting 'Session source / medium'. Administrator or Editor permissions are only required if you wish to create custom Channel Groups.

No. Attribution works through standard URL query parameters that your website's existing Google Analytics tag reads automatically. TryQRMint forwards the complete UTM parameter string during dynamic redirection.

A standard illustrative URL is: `https://example.com/promo?utm_source=direct_mail&utm_medium=qr_code&utm_campaign=spring_sale`. Each parameter identifies the placement, channel, and initiative for clean reporting in GA4.

Get Started in 30 Seconds

Ready to Supercharge Your QR Campaigns?

Join 10,000+ businesses and creators leveraging TryQRMint for dynamic redirects, custom brand designs, and real-time tracking.

No credit card requiredInstant PNG & SVG downloadUnlimited scans forever