QRFree PRO FREEUnlimited • No Signup • 100% Private
Measurement

Tracking QR Campaigns with UTM Parameters and GA4 (No Dynamic Codes Needed)

You do not need expensive proprietary dynamic QR subscriptions to see which posters, flyers, or packaging inserts actually generate revenue. Here is how to track physical campaigns with UTM tags and GA4.

14 October 2026 11 min read Analytics

Commercial dynamic QR code providers charge between £15 and £80 every month, advertising “Advanced Scan Analytics”. When you log into their dashboards, what you typically see is a single vanity metric: a raw count of “Scans”.

In practice, raw scan counts are almost useless for commercial decision-making. That number includes staff testing the code, search bot crawlers, people who immediately hit their browser back button, and repeat scans from the same customer. More importantly, vendor scan counters cannot tell you what happened after the scan: did that flyer reader buy a ticket, fill out an inquiry form, or spend five minutes exploring your services?

By pairing permanent static QR codes with standard UTM parameters and your existing Google Analytics 4 (GA4) setup, you unlock complete conversion tracking across all physical placements—completely free of ongoing subscription costs.

The flaw in vendor scan counters vs GA4 sessions

When you measure QR campaigns inside your web analytics rather than a vendor dashboard, you shift from measuring superficial curiosity to measuring tangible commercial return:

Tracking methodWhat it measuresBot filteringConversion attributionOngoing cost
Third-party dynamic QR vendorRaw HTTP hits to vendor redirectMinimal (counts pre-fetch bots)None (stops at redirect)£180–£600 / year
Static QR code + UTM + GA4Actual mobile user sessions & key eventsFull Google bot filteringFull (orders, signups, revenue)£0 (Permanent)

A clean UTM naming convention for print

UTM (Urchin Tracking Module) tags are standard query parameters appended to web addresses. To prevent your GA4 data from becoming an unreadable mess, establish a strict lowercase naming structure before printing:

ParameterPurposeRecommended conventionExample value
utm_sourceThe specific physical placementIdentify the medium or venuewindow_poster, bill_insert, tube_ad
utm_mediumThe marketing channelAlways use qr or printqr
utm_campaignThe overall promotional initiativeName of seasonal push or projectautumn_sale_2026, brunch_launch
utm_contentDifferentiates variant placementsLocation, size, or design variationtable_14, front_counter_a5

Example fully tagged URL:
https://example.com/promo?utm_source=spring_flyer&utm_medium=qr&utm_campaign=march_remodel&utm_content=bath_branch

Fixing the 'Unassigned' traffic channel in GA4

If you tag a URL with utm_medium=qr, Google Analytics 4 will by default dump that traffic into the Unassigned channel group. This happens because Google’s default rule set only recognises standard digital channels like 'Organic Search', 'Paid Search', and 'Email'.

To give your QR campaigns a dedicated, beautiful top-level channel in your GA4 reports:

  1. Open your GA4 property and navigate to Admin (bottom left gear icon).
  2. Under Data display, click on Channel groups.
  3. Click Create new channel group (or edit your custom group).
  4. Click Add new channel and name it QR Code Print.
  5. Set the rule condition: Medium > exactly matches > qr.
  6. Drag your new channel rule above the 'Unassigned' bucket and save.

Within 24 hours, all visits originating from your printed materials will cleanly populate under their own dedicated reporting channel!

A destination URL with four UTM parameters can easily stretch to 160 characters. If you encode this long string directly into a QR code, the symbol increases to Version 8 or 9 (53 × 53 grid modules), requiring a larger print size to scan reliably.

The professional workflow: Set up a short, clean vanity URL on your own website (e.g. https://brand.co.uk/flyer) and configure a 302 redirect that forwards visitors to your full UTM-tagged URL. When visitors scan the simple code, their browser seamlessly forwards to the tagged destination, passing all tracking parameters straight into GA4.

Verify query parameter passthrough

Always test your redirect before sending artwork to print! Enter your short URL with a test parameter in your mobile browser and confirm that your final destination page maintains the complete query string intact.

Building your monthly QR conversion report

Once traffic begins arriving, stop looking at session totals and start calculating your Action Rate:

Key Events (Leads / Orders)÷Total QR Sessions=Print Action Rate

In GA4, go to Reports > Acquisition > Traffic acquisition. Filter by Session medium = qr, and set your secondary dimension to Session source. You can immediately see which physical locations (e.g. Camden Market flyer vs Soho shop window) generated actual enquiries, table bookings, or purchases.

Campaign tracking checklist

  • UTM parameters use consistent lowercase characters with underscores (no spaces).
  • utm_medium is set strictly to qr.
  • Custom GA4 Channel Group rule created for medium = qr.
  • Short vanity redirect forwards traffic without dropping query parameters.
  • Key Events (conversions) are marked active in GA4 Admin.
  • Internal staff test visits excluded via GA4 developer traffic filters.

Questions before you print

Will UTM parameters slow down page load times?

No. UTM tags are passive text strings read by your analytics script. They do not add any server rendering delay.

Do UK cookie banners block GA4 QR tracking?

If a user rejects analytics cookies on your website's cookie consent banner, GA4 will not log their full session data. However, Google Consent Mode v2 uses behavioural modeling to recover anonymous aggregate visit trends.

Why should I use utm_medium=qr instead of utm_medium=print?

Using qr specifically isolates digital scans from manual URL typists, giving you an exact measurement of physical QR engagement.

What is the difference between a 301 and 302 redirect for QR codes?

A 301 redirect is permanent and aggressively cached by phone browsers. A 302 (or 307) redirect is temporary, meaning phone browsers check your server every time—allowing you to update the destination URL whenever you want.

Can I track individual tables or posters separately?

Yes! Use utm_content=table_1, utm_content=table_2, etc. You can generate a distinct static QR code for each table without paying any software licensing fees.

Related: Read our foundational guide on UTM basics for offline marketing, build permanent codes with our static QR code generator, learn how to set up your own domain redirects, and explore choosing the right size for printed materials.

Build your trackable static QR code.

Encode your UTM-tagged destination URL into a clean, permanent vector file without middleman fees.

Create trackable QR code