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

Elena Rostova(Engineering Director)
••12 min read
To track a QR code in Google Analytics, add UTM parameters to the destination URL (for example `utm_source=flyer&utm_medium=qr_code&utm_campaign=spring_sale`), put that tagged link in your QR code, and view the visits in GA4 under the Traffic acquisition report filtered by session medium. GA4 sees the visit, not the scan itself.
Free QR Code Generator

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

Keep your UTM parameters intact with dynamic QR codes and compare scans with Google Analytics 4 visits.

Open Tool

1. How QR Code Tracking with Google Analytics Works

There are two separate things you can measure, and they come from two different tools:

  • The scan: Happens on the phone, before your website loads. Google Analytics never sees it. Only the QR code's own service can count scans - which means you need a dynamic QR code, because static codes open your URL directly with no tracking step in between.
  • The website visit: Happens when the visitor's browser loads your page and your GA4 tag runs. UTM parameters in the URL tell GA4 that the visit came from a QR code and which campaign it belongs to.
  • What you do with each: Use scan analytics to see how many people engaged with the printed piece, where and on what device. Use GA4 to see what they did on your site - pages viewed, engagement time, sign-ups and purchases.

2. Step 1: Build a UTM Link for Your QR Code

Start with the page you want people to land on, then add UTM parameters. Google's free Campaign URL Builder can assemble the link for you, or you can type it by hand. A consistent naming scheme matters more than the exact values:

ParameterWhat It Tells GA4QR ConventionExample
utm_sourceWhere the code was placedThe physical placementflyer, table_tent, packaging, billboard
utm_mediumThe channelAlways the same for QR codesqr_code
utm_campaignThe promotionCampaign or offer namespring_sale_2026
utm_contentWhich variationSize, design or location of the piecea5_blue, window_left
utm_term (optional)Extra detailStore, branch or segmentstore_soho
Example tracking URL: `https://example.com/spring?utm_source=flyer&utm_medium=qr_code&utm_campaign=spring_sale_2026`. Keep every value lowercase with underscores. UTM values are case-sensitive in reports, so 'QR_Code' and 'qr_code' would show up as two different mediums.
TryQRMint Studio

Create Your Custom QR Code

Generate static and dynamic QR codes tailored for your brand, with custom colors, embedded logos, and mobile-friendly microsites.

✓ Free static QR creation available✓ Dynamic QR tools available with eligible trial/paid access✓ Custom QR styling

3. Step 2: Create the QR Code (Static or Dynamic)

Both static and dynamic QR codes can carry a UTM link, and GA4 will record the visits either way. The difference is what else you get:

Static QR Code with UTMsDynamic QR Code with UTMs
GA4 visit trackingYesYes
Scan counts, location, deviceNoYes - in your TryQRMint dashboard
Fix a wrong UTM after printingNo - reprint neededYes - edit the destination
Pattern density with a long URLHigher - long UTM links make dense codesLow - the code holds a short link
Cost on TryQRMintFree account, up to 10 static codes7-day trial (2 codes), then Pro or Business
  • In the TryQRMint Studio: Pick the Website URL type, choose Static or Dynamic with the switch at the top, and paste your full UTM link into the URL field.
  • Design and save: Customize colors, logo and frame, preview, then sign in to save. Name the code after its placement (e.g. 'Spring flyer') so TryQRMint's analytics and your GA4 utm_source match.
  • One code per placement: If you want to compare a flyer with a poster, create separate codes with different utm_source or utm_content values. One shared code can't tell placements apart.
  • Build it now: The Dynamic QR Code Generator is the quickest route if you want scan counts as well as GA4 data. If you only need GA4, a static website URL QR code works too.

4. Step 3: Test Your Tracking Before Printing

A five-minute test prevents a whole campaign of untracked visits:

  • Scan the code with your phone and open your site. With a TryQRMint dynamic Website URL code, scanners first see a short page with your link and a 'Visit Website' button - tap it to continue.
  • Check the address bar on your site: the utm_ parameters should still be in the URL. If they're gone, your site is dropping them during a redirect (see section 7).
  • Open GA4's Realtime report. Within a minute or so your visit should appear, and the source, medium or campaign cards should show your UTM values.
  • For dynamic codes, confirm the scan shows up in your TryQRMint dashboard too.

5. Step 4: Find QR Code Traffic in GA4 Reports

Standard GA4 reports usually take several hours to a day or two to fill in. Menu names change from time to time, but the path is typically:

  • Step 1: Open your GA4 property and go to Reports > Acquisition > Traffic acquisition.
  • Step 2: Change the table's main dimension to 'Session source / medium', or to 'Session campaign' to compare campaigns.
  • Step 3: Type `qr_code` in the table's search box to show only QR traffic.
  • Step 4: Review users, sessions, engaged sessions, engagement time and key events (conversions).
  • Step 5: Add a secondary dimension such as 'Session manual ad content' (your utm_content) or 'Landing page' to compare placements and pages.
  • Optional: In Explore, build a free-form report filtered to session medium = qr_code for a dashboard you can reuse. Admins and editors can also create a custom channel group (under Admin > Data display) so QR traffic gets its own channel.

6. Combining TryQRMint Scan Analytics with GA4

Used together, the two tools show the whole journey from printed code to sale. Think of it as a funnel:

  • Scans (TryQRMint): How many times the code was scanned, unique scanners, scans over time, and the country, city, device, OS and browser of each scan.
  • Visits (GA4): How many of those people reached your site and how engaged they were.
  • Conversions (GA4): How many signed up, booked or bought - set these up as key events in GA4.
  • Why scans are higher than GA4 sessions: Some people scan but don't tap through or close the page before it loads; visitors who decline analytics cookies or use tracking blockers aren't counted by GA4; and slow connections can drop visits before the tag fires. A gap of some size is normal.
  • Why GA4 can be higher: People bookmark or share the tagged link, so later visits carry the same UTMs without a new scan.
  • Reporting tip: Business plans can export TryQRMint scan data as CSV, so you can put scans next to GA4 sessions and conversions in one spreadsheet. Our QR code scan analytics guide explains each TryQRMint metric.

7. Troubleshooting: QR Visits Missing from Google Analytics

If scans are coming in but GA4 shows little or no QR traffic, check these causes in order:

  • UTMs stripped by a redirect: Some sites redirect `/page` to `/page/`, or http to https, and lose the query string on the way. Open the tagged URL in a browser and confirm the parameters survive.
  • Typos in parameter names: `utm-source` or `UTM_Source` won't be recognized. Parameter names must be exactly `utm_source`, `utm_medium` and `utm_campaign`.
  • GA4 tag not on the landing page: Landing pages built on a separate tool or subdomain may not have your GA4 tag installed.
  • Looking too early: Standard reports lag behind. Use Realtime for same-day checks.
  • Consent mode: Where cookie banners are required, visitors who decline analytics may be missing or modeled in reports.
  • Extra hops: Avoid chaining your QR code through another link shortener before your site. Each extra redirect adds delay and another chance to lose parameters.
  • Wrong code printed: If you used a dynamic code, you can fix a bad destination from your dashboard. A static code with a wrong link has to be reprinted.

Final Takeaway

Tracking QR codes in Google Analytics comes down to three habits: tag every destination with consistent UTM parameters, use one code per placement, and test the full path before printing. Add a dynamic QR code from the Dynamic QR Code Generator when you also want scan counts, locations and devices, and you'll see the full journey from printed piece to conversion. If your printed campaign also collects enquiries, see our guide to lead capture QR codes for flyers and direct mail.

Got Questions?

Frequently Asked Questions

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

Add UTM parameters to the URL in your QR code - for example `utm_source=flyer&utm_medium=qr_code&utm_campaign=spring_sale`. When people scan and visit, GA4 records the visit with those values. View it under Reports > Acquisition > Traffic acquisition with 'Session source / medium' as the dimension and filter for qr_code.

Not directly. GA4 only measures visits to your website after the page loads. To count scans, including people who never reach your site, use a dynamic QR code. TryQRMint's dynamic codes record total and unique scans, location, device, OS, browser and referrer.

No. A static QR code containing your UTM link works with GA4, and TryQRMint lets free accounts save up to 10 static codes. A dynamic code adds scan analytics, lets you fix the UTM link after printing, and keeps the pattern simple even when the URL is long.

Scans are counted as soon as the code is opened, while GA4 only counts visits where your page loads and the analytics tag runs. People who don't tap through, leave early, block trackers or decline cookies show up as scans but not as GA4 sessions.

Pick one value, such as `qr_code`, and use it on every QR code in every campaign. That way all QR traffic groups together in GA4 and you can compare placements with utm_source and utm_content.

No integration is needed. Your UTM parameters travel inside the destination URL, and your website's existing GA4 tag reads them. TryQRMint's own scan analytics sit alongside GA4 in your dashboard.

Get Started in 30 Seconds

Ready to Supercharge Your QR Campaigns?

Create a free account to design branded QR codes, launch dynamic redirects you can edit anytime, and track scans in real time.

No credit card requiredPNG & SVG downloadsUnlimited scans on every QR code