DEV Community

Cover image for UTM Parameters vs QR Code Tracking: What’s the Difference?
Rabb Young
Rabb Young

Posted on

UTM Parameters vs QR Code Tracking: What’s the Difference?

UTM Parameters vs QR Code Tracking: What’s the Difference?

Key Takeaways

UTM parameters label a URL so tools like GA4 can attribute web sessions to a campaign.

QR code tracking measures scans of a specific code in a specific physical placement (and what scanners do after they land).

The overlap is simple: a QR code can open a URL that includes UTM parameters. Just don’t confuse “scan tracking” with “campaign tagging.”

If you’ve ever asked, “Are UTMs enough to track my QR code campaign?” you’re already thinking correctly: these two ideas overlap, but they solve different problems. UTMs are labels on URLs; QR tracking measures scans from offline placements. Most campaigns use both: QR tracking to compare placements, Uand TMs, so GA4 can attribute what happens after the scan.

This post uses primary sources for campaign tagging (Google Analytics Help on GA4 URL builders and traffic-source dimensions), web behavior (MDN HTTP redirection and IETF HTTP semantics), and QR codes as a standard (DENSO WAVE QR Code documentation and the ISO/IEC QR code listing). Links are in the Sources section.

black android smartphone displaying qr code

Image source: Unsplash

What’s the difference between UTM parameters and QR code tracking? (quick answer)

UTM parameters are campaign query parameters added to a URL so GA4 can attribute a website session to a source, medium, and campaign. QR code tracking is a measurement layer that tells you which physical QR code was scanned, when it was scanned, and the destination requested.

UTMs vs QR Tracking (side-by-side)

Question

UTM parameters (GA4)

QR code tracking

What is it?

Query parameters like utm_source, utm_medium, and utm_campaign are added to a URL.

Scan measurement tied to a specific QR code (often via a tracking URL or redirect layer).

What does it measure?

Attribution labels for sessions/events on your website or app.

Scans (requests) of the QR destination URL, plus optional device/location/time details.

Where does the data live?

In GA4, traffic-source and campaign dimensions.

In your QR tracking system (and, optionally, in GA4 after the landing page loads).

Can it compare offline placements?

Only indirectly, if every placement uses a distinct UTM-tagged URL (and your measurement fires).

Yes, by design (one code per placement/variant makes comparison clean).

Common failure mode

UTMs get dropped by redirects, or you look at a GA4 report dimension that hides query strings.

You see scans but can’t connect them to conversions because the landing page isn’t event-instrumented.

Rule of thumb: UTMs tag web traffic. QR tracking measures offline-to-online entry. Use both when you care about scan volume and what happens after the scan.

If you want examples of “offline placement comparison,” see how QR codes are commonly used on real-world physical assets like yard signs in QR codes for real estate agents.

What are UTM parameters (and what do they actually track)?

UTM parameters are standardized campaign parameters added to a URL so Google Analytics can collect “manual” campaign data. In GA4, the URL builder documentation describes supported parameters and how they map into campaign reporting, but the key is this: UTMs do not measure offline impressions—they label the online visit that occurs after someone loads the tagged URL.

GA4’s URL builder documentation is the cleanest definition of what counts as a UTM in GA4 and which reports/dimensions are affected. If you’re debugging a QR landing page, it also matters which GA4 “page URL” dimension you use, because not all of them include the query string.

The “core” UTMs most people use

  • utm_source: where the traffic came from (for offline, usually the placement channel)

  • utm_medium: the medium (for QR campaigns, something like QR)

  • utm_campaign: the campaign name you’ll report on

  • utm_content: the variant or placement label (optional, but very useful)

GA4 also documents additional parameters (like utm_id) and GA4-specific options in its URL builder documentation.

What UTMs can’t do by themselves?

  • They don’t measure offline impressions (who saw the printed code).

  • They don’t measure conversions unless your site/app sends conversion events.

In other words, UTM parameters are attribution metadata. Measurement still depends on your analytics implementation.

What is QR code tracking (and what does it measure)?

A QR code is a standardized way to encode data (often a URL). “QR code tracking” occurs when the URL request is measured—typically via a controlled tracking URL or a direct link that records the scan before sending the scanner to the final landing page. The QR code itself is not the tracker; the system behind the destination is.

DENSO WAVE’s QR documentation and ISO’s listing establish QR codes as an encoding standard. That’s why “tracking” is always downstream: you track the request that happens after decoding, not the printed symbol.

What you can usually measure with QR tracking

  • Scan counts by QR code (best if you use one code per placement/variant).

  • Time (scan timestamps).

  • Device/user agent (best-effort, depending on how you track).

  • Approximate location (often city/region via IP).

If location granularity matters, it’s worth reading QR code location tracking, because “where was this scanned?” is a deceptively tricky question.

QR tracking is still not the same as “impressions.” You typically measure scans (a request to a URL), not everyone who looked at the code.

Can you use UTM parameters to track QR codes?

Yes: a QR code can encode a URL that includes UTM parameters, and GA4 can use those UTM parametersto attribute the resulting session/events. But that only measures what happens after the landing page loads and your tags fire. If you need reliable scan counts by physical placement, you still need one code per placement or a tracking URL layer.

Google’s GA4 docs make it clear that UTM parameters are campaign parameters in a URL. MDN’s redirect guidance explains why that URL matters end-to-end: if the query string is dropped during a redirect, the attribution labels disappear even though the QR scan still happened.

In practice, you’ll see three common setups:

For a real-world placement comparison example, see QR codes for real estate agents.

How do redirects drop UTMs (and how do you prevent it)?

Most QR campaigns use some form of short link or redirect. That’s fine, but it introduces a sharp edge: if your redirect rule fails to include the original query string, UTMs disappear. Redirects are implemented via HTTP 3xx responses and a Location header, so the safest approach is to explicitly preserve the full request URI (path + query) unless you intentionally rewrite it.

This shows up a lot in “scan a code → get a short link → hit the real page” flows, including hospitality use cases like contactless hotel service QR codes.

MDN’s redirect documentation describes the 3xx + Location mechanism and includes practical server examples. RFC 9110 provides a standards foundation for preserving URI components in HTTP handling, which is why “it worked in the browser” isn’t enough—your redirect configuration determines whether the query survives.

How to QA this in 60 seconds

  1. Scan the code.

  2. Watch the browser address bar on the landing page.

  3. Confirm the final URL still contains utm_source, utm_medium, and utm_campaign.

If the UTMs are missing, your redirect likely dropped them.

Why are UTMs “there” but not visible in GA4?

Sometimes the UTMs are present on the URL, but you check a GA4 report dimension that doesn’t show the query string and conclude “UTMs didn’t pass.” GA4’s URL builder documentation notes that some query-string-friendly dimensions differ from landing page dimensions. For QR debugging, use a dimension that includes the full URL (for example, Page location) and also validate traffic-source dimensions for manual campaign data.

What to check when debugging QR UTMs in GA4

  • Confirm that UTM parameters exist in the final URL after redirects.

  • Use URL dimensions that include query strings for debugging.

  • Check manual campaign source/medium/campaign dimensions for values (and watch for (not set) when parameters are incomplete).

How should you name UTMs for offline QR campaigns?

Offline QR campaigns get messy fast because “source” isn’t Facebook or Google—it’s a physical placement. A simple convention keeps reports readable: reserve utm_medium=qr for QR traffic, use utm_source for the placement channel (yard sign, flyer, table tent), and use utm_content for the variant label. GA4’s manual tagging documentation supports the idea that complete, consistent parameters reduce “(not set)” reporting.

Example: yard sign UTMs you can scale

  • utm_source=yard-sign

  • utm_medium=qr

  • utm_campaign=spring-open-house

  • utm_content=front-left

If you have multiple listings or locations, consider encoding that identifier in utm_campaign or utm_id, but only if you’ll keep it consistent across all assets.

black POS machine

Image source: Unsplash

How to connect QR scans to conversions (beyond UTMs)

UTMs attribute the session, but conversions require event tracking. The clean approach is: track the scan (via a tracking URL or a dedicated landing page hit), then track the conversion action on the landing page as an event (form submit, call click, “book now”). Google’s tag and dataLayer documentation describe the event model you’ll use when implementing conversions with gtag.js or Google Tag Manager.

A minimal conversion checklist

  • Make sure the landing page is tagged (GA4).

  • Track 1–2 actions as events (form submit, “book now”, call click).

  • Mark the right event as a conversion.

If you’re building location-aware experiences, pair this with the expectations in QR code location tracking so you don’t chase impossible precision.

A simple decision rule (UTMs-only vs QR tracking + UTMs)

If you have 1 or 2 placements and only care about on-site sessions/conversions, UTM parameters in the landing page URL can be enough. If you have multiple physical placements or variants and need scan comparisons, use QR tracking (one code or tracking URL per placement) and then add UTMs for GA4 attribution.

FAQ

Are UTMs enough to track QR codes?

UTMs can attribute the website session after a scan, but they don’t measure the scan itself unless your landing page reliably records the visit. If you need scan counts by placement, use one QR code per placement (or a tracking URL layer) and add UTM parameters for GA4 attribution.

Should I include UTM parameters in the QR code or add them later?

If you control the destination and don’t need a redirect, placing UTMs directly in the QR destination is simplest. If you need flexibility, use a short tracking URL and configure the redirect to preserve or append UTMs.

Do redirects or short links remove UTMs?

They can. Redirects rely on a Location header; if your redirect rule rewrites the destination without including the original query string, UTMs disappear. Always QA the final landing page URL after scanning.

Why don’t I see UTMs in my GA4 landing page report?

Sometimes UTMs are present, but the report dimension you’re using excludes query strings. Use URL dimensions that include the full URL (including query parameters) for debugging, and check manual traffic-source/campaign dimensions.

What’s the easiest way to track different posters or signs?

Use one QR code per placement (or one tracking URL per placement), and encode the placement/variant into utm_content a consistent naming system. That gives you apples-to-apples comparisons.

Sources (primary references used)

Top comments (0)