UTM parameters
Query-string tags that let analytics attribute a visit to a campaign.
UTM parameters are name/value pairs appended to a URL —
utm_source, utm_medium, utm_campaign,
utm_term and utm_content — which analytics tools read to
attribute a visit.
The QR-specific problem. UTMs are long. Adding a full set can add 80 to 150 characters, which on a static code can push it several versions higher and make it materially harder to scan.
The fix. Put UTMs on a dynamic code's destination rather than inside the encoded data. The pattern encodes only the short address; the parameters live on the redirect target, where length costs nothing. You can also change them later without reprinting.
Sensible convention for QR. utm_medium=qr with
utm_source naming the physical placement —
table-tent, window-decal, flyer-march — so
you can tell which piece of printed material is doing the work.
In practice
A gym puts codes on three poster designs. Each points at the same signup page but carries
utm_source=poster-a, poster-b and poster-c. Their
web analytics then shows which design actually drove signups, not just which was scanned.
Crucially, the parameters live on the destination of each dynamic code, not inside the encoded pattern. The three printed codes stay at version 3, and the gym can change the campaign names next quarter without reprinting a single poster.
Questions
Do I need UTMs if the platform already counts scans?
They answer different questions. Scan counts tell you the code was scanned; UTMs tell you what happened on your website afterwards — whether anyone signed up or bought.
What should utm_medium be for a QR code?
qr is the common convention. Put the physical placement in
utm_source — table-tent, van-rear — so reports read
as locations rather than abstractions.