QR codes that carry UTM tags into your analytics, grouped by campaign so print sits beside your digital channels in the same report.
Scans arrive in your web analytics tagged like any other channel, so print stops being the untracked line in the budget.
Two codes in two magazines answer which magazine actually worked.
A CTA frame states the offer, which matters far more to scan rates than the pattern in the middle.
The value of UTM tags collapses if every campaign invents its own scheme. A convention that survives: source is the specific placement (metro-station-mg-road), medium is the format (print, billboard, flyer, packaging), campaign is the initiative everything rolls up to (diwali-2026). Keep everything lowercase and hyphenated, because analytics tools treat Print and print as two different channels and you will not notice until the report is already wrong.
A single code across an entire campaign answers only whether the campaign worked. A code per placement answers which magazine, which station, which flyer batch — which is the question that decides next quarter’s budget. The codes cost nothing extra and the artwork change is trivial; the difference in what you learn is the whole point of tracking print at all.
Your scan count will always exceed the sessions your web analytics reports, and the gap is not an error. A scan is recorded at the redirect, before the destination has loaded. A session is recorded only after the page loads and its script runs. Between those two moments sit slow connections, abandoned loads, blocked scripts and privacy settings. Use scans to compare placements against each other, and analytics sessions to measure what happened after arrival.
Scan rates are driven almost entirely by whether people know what they get. "Scan for 20% off your first order" outperforms a bare code by a wide margin, and no amount of styling closes that gap. Give the code a reason, a frame, and enough surrounding white space that it reads as an invitation rather than as a printer’s mark.
Yes. The tags are appended to the destination URL, so whatever analytics that page runs receives them.
Yours win. An existing parameter on the destination is never overwritten by the code.
Say what happens when they scan. A short call to action next to the code does more than any styling choice.
Create a campaign, add your codes and measure every placement.