{"id":1170,"date":"2026-10-16T18:44:58","date_gmt":"2026-10-16T18:44:58","guid":{"rendered":"https:\/\/qrstar.com\/blog\/?p=1170"},"modified":"2026-10-16T18:44:58","modified_gmt":"2026-10-16T18:44:58","slug":"how-to-track-qr-code-traffic-in-google-analytics","status":"publish","type":"post","link":"https:\/\/qrstar.com\/blog\/2026\/10\/16\/how-to-track-qr-code-traffic-in-google-analytics\/","title":{"rendered":"How to Track QR Code Traffic in Google Analytics"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Did you know you can track QR code traffic in Google Analytics by adding UTM parameters to your destination URL, using that tagged URL in your QR code, and reviewing the resulting traffic in GA4? <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A QR code on a flyer, counter sign, or trade show banner can send people to your website. But which placement brought visitors who actually took action? Combining QR Star\u2019s scan analytics with Google Analytics helps answer that question. Here\u2019s how to set it up.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What is the difference between a QR scan and a website conversion?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">These measurements describe different stages of the customer journey.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Measurement<\/th><th>What it tells you<\/th><\/tr><\/thead><tbody><tr><td>QR scan<\/td><td>Someone accessed the QR code\u2019s redirect link, as recorded by your QR platform.<\/td><\/tr><tr><td>Web session<\/td><td>GA4 recorded a visit to your website.<\/td><\/tr><tr><td>Key event<\/td><td>GA4 recorded an important action you configured, such as a completed lead form.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">QR Star reports scans and unique users. GA4 helps you understand the activity on your website after people arrive. The counts won\u2019t necessarily match. Repeat scans, existing sessions, consent settings, blockers, and pages closed before analytics loads can all affect the comparison.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 1: Check your website tracking<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Before creating your code, make sure GA4 is installed and collecting data on the destination website. You\u2019ll also need access to the correct Analytics property. This method works for pages you can measure. Adding UTMs to a Google review link, for example, won\u2019t give your GA4 property access to customer activity inside Google\u2019s review interface. Choose a mobile-friendly page that matches the promise on your printed material, such as a signup page or a specific product offer.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 2: Add UTM parameters to your destination URL<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">UTM parameters are labels added to a link so Analytics can identify the campaign that brought a visitor. For a simple QR campaign, use this consistent naming convention:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Parameter<\/th><th>Example<\/th><th>Purpose<\/th><\/tr><\/thead><tbody><tr><td><code>utm_source<\/code><\/td><td><code>front_desk<\/code><\/td><td>Identifies the source or placement of the QR Code.<\/td><\/tr><tr><td><code>utm_medium<\/code><\/td><td><code>qr<\/code><\/td><td>Groups your QR campaign traffic.<\/td><\/tr><tr><td><code>utm_campaign<\/code><\/td><td><code>autumn_offer<\/code><\/td><td>Identifies the promotion.<\/td><\/tr><tr><td><code>utm_content<\/code><\/td><td><code>counter_sign<\/code><\/td><td>Distinguishes the material or creative.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Here\u2019s a complete example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;example.com\/offer?utm_source=front_desk&amp;utm_medium=qr&amp;utm_campaign=autumn_offer&amp;utm_content=counter_sign<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Replace the example domain with your own landing page. You can assemble the link manually or use Google\u2019s <a href=\"https:\/\/ga-dev-tools.google\/campaign-url-builder\/\">Campaign URL Builder<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Keep values lowercase and consistent: Google treats different capitalization as different values. If your URL already contains a question mark, append additional parameters with an ampersand.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The medium <strong>\u201cqr\u201d is a naming choice<\/strong>, not a built-in Google channel. It may appear as <strong>Unassigned<\/strong> in default channel reports; use source and medium dimensions to identify it. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"683\" src=\"https:\/\/qrstar.com\/public\/blog\/wp-content\/uploads\/2026\/10\/a11b771d-2a52-4558-9b54-86db8713e648-1024x683.png\" alt=\"\" class=\"wp-image-1172\" style=\"aspect-ratio:1.4992888417882142\" srcset=\"https:\/\/qrstar.com\/public\/blog\/wp-content\/uploads\/2026\/10\/a11b771d-2a52-4558-9b54-86db8713e648-1024x683.png 1024w, https:\/\/qrstar.com\/public\/blog\/wp-content\/uploads\/2026\/10\/a11b771d-2a52-4558-9b54-86db8713e648-300x200.png 300w, https:\/\/qrstar.com\/public\/blog\/wp-content\/uploads\/2026\/10\/a11b771d-2a52-4558-9b54-86db8713e648-768x512.png 768w, https:\/\/qrstar.com\/public\/blog\/wp-content\/uploads\/2026\/10\/a11b771d-2a52-4558-9b54-86db8713e648.png 1536w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Step 3: Use the tagged link in QR Star<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Create a link code in QR Star and paste the entire tagged URL into the destination field. Customize the design and download your code. Create a separate code and tagged destination for each placement you want to compare. For example, change the source to <code>receipt<\/code> for receipt traffic and keep the same campaign name. Separate codes help you compare scans in QR Star as well as visits in GA4. If you reuse one code everywhere, those scans won\u2019t identify which physical placement someone used.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 4: Test before printing<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Scan your code and check that the landing page opens correctly. Confirm the UTM parameters survive the redirect and reach the destination. Use a fresh browser session for a cleaner acquisition test: encountering a new campaign link during an existing GA4 session does not start a new session or replace its session source. Check that a visit appears in GA4 Realtime, allowing for your consent settings and tracking configuration. Standard acquisition reports need processing time, so don\u2019t expect them to update instantly.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 5: Find QR traffic in GA4<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Open <strong>Reports \u2192 Acquisition \u2192 Traffic acquisition<\/strong>. Navigation can vary depending on your property\u2019s report collection.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Switch the table\u2019s primary dimension to <strong>Session source \/ medium<\/strong> and find your chosen values, such as <code>front_desk \/ qr<\/code>. Use a report filter or comparison to isolate the relevant source or medium.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To compare promotions, use <strong>Session campaign<\/strong>. For creative-level detail, the Manual campaigns report supports <strong>Session manual ad content<\/strong>, populated by <code>utm_content<\/code>. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Review sessions and engagement alongside your business outcomes. Use Traffic acquisition for session-level analysis rather than relying on the User acquisition report, which focuses on how users were first acquired.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"683\" src=\"https:\/\/qrstar.com\/public\/blog\/wp-content\/uploads\/2026\/10\/QR-campaign-journey-in-three-stages-1024x683.png\" alt=\"\" class=\"wp-image-1176\" style=\"aspect-ratio:1.4992888417882142\" srcset=\"https:\/\/qrstar.com\/public\/blog\/wp-content\/uploads\/2026\/10\/QR-campaign-journey-in-three-stages-1024x683.png 1024w, https:\/\/qrstar.com\/public\/blog\/wp-content\/uploads\/2026\/10\/QR-campaign-journey-in-three-stages-300x200.png 300w, https:\/\/qrstar.com\/public\/blog\/wp-content\/uploads\/2026\/10\/QR-campaign-journey-in-three-stages-768x512.png 768w, https:\/\/qrstar.com\/public\/blog\/wp-content\/uploads\/2026\/10\/QR-campaign-journey-in-three-stages.png 1200w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Step 6: Measure the actions that matter<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">UTM tags identify campaign traffic; they don\u2019t automatically track form completions or sales. Configure an event that measures the successful action, then mark it as a key event where appropriate. For example, a lead event should represent a successful submission, rather than simply a click on the Submit button. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Compare the relevant key event across QR placements. <strong>Session key event rate<\/strong> shows the proportion of sessions with a key event. Select the specific event you want to evaluate where the report allows it.  A sign with fewer visits may still produce more qualified inquiries. That\u2019s why scans alone don\u2019t tell the whole story.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Start with one measurable campaign<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Choose a landing page, build a tagged URL, and <a href=\"https:\/\/qrstar.com\/signup\" target=\"_blank\" rel=\"noopener\">create your code with QR Star today<\/a>!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Did you know you can track QR code traffic in Google Analytics by adding UTM parameters to your destination URL, using that tagged URL in your QR code, and reviewing the resulting traffic in GA4?<\/p>\n","protected":false},"author":2,"featured_media":1171,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10],"tags":[],"class_list":["post-1170","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-marketing-strategies"],"_links":{"self":[{"href":"https:\/\/qrstar.com\/blog\/wp-json\/wp\/v2\/posts\/1170","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/qrstar.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/qrstar.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/qrstar.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/qrstar.com\/blog\/wp-json\/wp\/v2\/comments?post=1170"}],"version-history":[{"count":6,"href":"https:\/\/qrstar.com\/blog\/wp-json\/wp\/v2\/posts\/1170\/revisions"}],"predecessor-version":[{"id":1179,"href":"https:\/\/qrstar.com\/blog\/wp-json\/wp\/v2\/posts\/1170\/revisions\/1179"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/qrstar.com\/blog\/wp-json\/wp\/v2\/media\/1171"}],"wp:attachment":[{"href":"https:\/\/qrstar.com\/blog\/wp-json\/wp\/v2\/media?parent=1170"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/qrstar.com\/blog\/wp-json\/wp\/v2\/categories?post=1170"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/qrstar.com\/blog\/wp-json\/wp\/v2\/tags?post=1170"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}