Track Print Marketing in GA4: UTM Links for QR Codes

Track Print Marketing in GA4: UTM Links for QR Codes

Connect postcards, counter cards, and signs to measurable website actions with consistent UTM links, placement-specific QR codes, and a practical GA4 reporting plan.

A postcard can send someone to your website, but a website visit alone does not tell you which postcard worked. The useful connection is a campaign-tagged URL: a destination with consistent UTM parameters, encoded in a QR code that belongs to a specific print placement.

For a small business, a practical setup is straightforward: choose one outcome, give each placement its own tagged link, verify the website event, and review the results in Google Analytics 4 (GA4). This guide focuses on that measurement workflow, from naming links to deciding what to reprint.

Separate scans, sessions, and outcomes

Keep three measurements separate:

  • A QR interaction happens when a person points a camera at the code. Simply recognizing the code does not necessarily open the website.
  • A measured website session depends on someone opening the destination and your analytics implementation recording the visit. GA4 is not a raw QR scanner counter.
  • A business outcome is a completed action, such as a valid inquiry or purchase. GA4 can record important website actions as key events when they are correctly implemented.

A QR service’s “scan” total may represent requests to its redirect rather than unique people. Check that service’s definition before comparing it with GA4. Repeated visits, link previews, consent choices, and measurement blocking can produce different totals. Do not promise a one-to-one match.

Write a one-sentence objective: “Compare which print placement brings useful inquiries for our open house.” Choose one primary action and give the campaign a defined review period.

Make the landing page match the printed promise. If the card says “Request the open-house schedule,” send people to that request, rather than making them navigate from the homepage. Keep the same landing page and offer across placements when your question is about placement performance.

Record each placement’s distribution dates, quantity, creative version, and cost in a campaign log. A mailed postcard and a counter card have different exposure patterns. That context matters when you compare their response, especially if one has been available longer.

Use a naming plan that survives the print run

Google’s campaign-tagging guidance recommends including source, medium, and campaign parameters. Its documentation also stresses consistent naming and case: changing capitalization can split one campaign into separate values.

For this fictional open-house example, use:

  • utm_source = local_print: Identifies this print distribution program.
  • utm_medium = print: Keeps the channel label consistent.
  • utm_campaign = fall_open_house_2026: Groups all placements in the promotion.
  • utm_content = postcard_a: Distinguishes the placement and creative.

These values are an editorial naming convention, not mandatory Google labels. Keep source, medium, and campaign identical across the three placements below. Change content for each QR code. If your organization already has a UTM standard, use that standard instead.

Postcard:

https://example.com/open-house?utm_source=local_print&utm_medium=print&utm_campaign=fall_open_house_2026&utm_content=postcard_a

Counter card:

https://example.com/open-house?utm_source=local_print&utm_medium=print&utm_campaign=fall_open_house_2026&utm_content=counter_card_a

Window sign:

https://example.com/open-house?utm_source=local_print&utm_medium=print&utm_campaign=fall_open_house_2026&utm_content=window_sign_a

These are illustrative URLs on example.com, not working campaign destinations. Replace the domain, page, and values before production. Reusing one QR across every piece removes the placement distinction you are trying to measure.

Diagram of three print placements sharing campaign values while using distinct content values.
Diagram of three print placements sharing campaign values while using distinct content values.

Original TopClassDesigns illustration. Example campaign; no measured results.

Build the URLs and preserve them through redirects

Use the Campaign URL Builder linked from Google’s documentation to assemble the destination, or build it from your approved naming log. The builder creates a tagged URL; it does not install analytics or configure a key event.

Encode the final URL in the relevant QR code. If you use a short link or a dynamic QR service, verify that its redirect delivers the full tagged destination. Record both the printed short link and its final URL. Check who controls the redirect, whether it expires, and what happens if a paid plan ends.

Open every code from the actual print proof, including the counter card and sign versions. Confirm the page, offer, and UTM values after all redirects. A correct destination with a missing content value can look fine to a customer while silently merging your placement results. Use our print-ready artwork checklist to check the file itself before approving that proof.

Measure the completed action

Before distributing the pieces, confirm that your website sends data to the intended GA4 property. Then implement the action you want to measure. Google’s recommended events include generate_lead for an inquiry and purchase for a completed purchase; those recommended events require implementation and are not automatically created by a QR code.

For a form campaign, trigger the lead event after a successful submission. A click on “Submit” can occur even when validation fails. Test success, failure, and repeated submissions so you understand what your event counts.

Mark the relevant event as a key event and verify it using Realtime or DebugView. Keep test activity out of your performance assessment. A recorded lead event still needs a separate business check for spam, duplicates, and qualification; an event count is not automatically a count of sales-ready customers.

Find the campaign in GA4

Start with the Traffic acquisition report, commonly under Reports → Acquisition. Navigation can vary with the property’s report collection and customization.

Set the campaign date range. Inspect Session source / medium for local_print / print, and use Session campaign to isolate fall_open_house_2026. Compare sessions and the selected key event rather than treating all recorded events as inquiries.

For placement detail, use Session manual ad content in an exploration or a report that exposes it. Google’s manual-tagging reference maps utm_content to that dimension. This is where postcard_a, counter_card_a, and window_sign_a become useful.

Official Google help-center screenshot showing a Traffic acquisition table filtered by Session source / medium.
Official Google help-center screenshot showing a Traffic acquisition table filtered by Session source / medium.

Google’s published Traffic acquisition example shows the source/medium filter. Its figures are Google’s documentation example, not this print campaign’s results. Source: Google Analytics Help. Google and Google Analytics are trademarks of Google LLC. This independent guide is not endorsed by or affiliated with Google.

Expect a custom medium such as print to appear as Unassigned in the default channel grouping when it matches no built-in rule. That alone does not mean the UTM values were lost. Inspect source, medium, and campaign directly; a custom channel group can organize print separately. See Google’s default channel definitions.

Keep reporting scope consistent. First user dimensions describe original acquisition; Session dimensions describe session acquisition. Event-scoped attribution can assign key-event credit differently. Google’s scope documentation explains why these reports need not show matching totals. Label which view you use before comparing campaigns.

Build a small scorecard before drawing conclusions

For each placement, record the reporting period, campaign cost, measured sessions, sessions containing the selected key event, and verified qualified leads. Keep any QR-provider request count in a separate column with the provider’s definition.

Two calculations are useful:

  • Session key-event rate: sessions containing the selected key event divided by all sessions in that same reporting slice.
  • Cost per qualified lead: the placement’s allocated campaign cost divided by its verified qualified leads.

Use “not available” when qualification or cost data is missing. With zero qualified leads, do not report a zero cost per lead. Explain that no qualified leads were recorded in the period.

Measurement worksheet linking campaign cost, measured sessions, and qualified leads to clearly defined calculations.
Measurement worksheet linking campaign cost, measured sessions, and qualified leads to clearly defined calculations.

Original TopClassDesigns measurement worksheet. No customer data or performance claims.

Resist picking a winner from a handful of responses. Compare equivalent periods, check whether placements had comparable distribution, and review the inquiries themselves. A placement with fewer visits might generate better-fit leads. The scorecard should guide the next test, not certify that print alone caused every sale.

Check the gaps before the next run

If a placement has no sessions, scan the proof again and check the final URL, redirects, tag, and consent behavior. If sessions appear without leads, test the form before rewriting the offer. If the same placement appears in several rows, check spelling and capitalization.

Keep names, email addresses, and other personal information out of UTM values. URLs can be copied and logged. Google prohibits sending personally identifiable information to Analytics. Have whoever manages your website review its notices, consent configuration, and measurement choices for your circumstances.

Finally, recognize the offline gap: someone may see a sign, remember the business, and return later through search or a phone call. QR-linked sessions show one observable response path. Combine them with verified inquiries and sales records, while keeping attribution assumptions explicit. Save the naming log with the print files so the next run starts with a tested measurement plan.

Author

CATEGORIES
TAGS
Share This

COMMENTS

Wordpress (0)