QR code campaign tracking with UTM
A QR code is just an encoded URL, so encoding a UTM-tagged link turns print, packaging, and signage into measurable offline-to-online traffic. This page shows the structure, a worked example, and the rule that no personal data goes in the encoded URL.
Encode a tagged URL
A QR code carries no analytics of its own — it simply encodes a URL. Put the UTM tags on that URL and every scan lands on a tagged page:
- Encode a destination like example.com/page?utm_source=qr&utm_medium=offline&utm_campaign=…
- utm_source=qr (or the specific placement)
- utm_medium=offline (or print)
- utm_content=<per-placement label, e.g. flyer vs poster>
Worked example
For a poster at an event linking to your signup page:
https://example.com/signup?utm_source=qr&utm_medium=offline&utm_campaign=summer-expo&utm_content=poster
Give each physical placement its own utm_content so you can see whether the poster, the flyer, or the table card actually drove scans. Because the URL is visible to any scanner, keep every value generic and free of personal data.
How it appears in analytics and logs
A visit from a scanned QR code carries whatever UTM you encoded — typically utm_source=qr — so offline placements become measurable. Different codes with different utm_content let you compare placements.
Diagnostic use case
Encode a UTM-tagged URL in a QR code on print, packaging, events, or signage so scans become attributable online visits.
What WebmasterID can help detect
WebmasterID reads the utm_* parameters from the scanned destination at ingest and attributes the visit to your offline campaign, so QR placements show up as a measured source.
Common mistakes
- Encoding an untagged URL so scans are indistinguishable from direct traffic.
- Using one identical code everywhere so you cannot tell placements apart.
- Putting a secret token or personal data into the encoded, fully public URL.
Privacy and accuracy notes
The URL inside a QR code is decoded in plain text by any scanner, so it is fully public. Encode only generic campaign labels — never a person's data or a secret token.
Related pages
- Podcast campaign tracking with UTM
Podcasts are read aloud, so listeners type a URL rather than click — which makes attribution inherently approximate. This page shows how vanity URLs that redirect to a UTM-tagged destination capture what you can, while being honest about the limits.
- UTM naming conventions that survive reporting
Most UTM data problems are naming problems. Because tools treat utm_source=Reddit and reddit as different values, inconsistent casing and spelling fragment one campaign across many rows. This page gives a convention — lowercase, hyphenated, documented allow-list — that keeps reports clean.
- Campaign links (docs)
Build the UTM-tagged URL you encode into a QR code.
Sources and verification notes
- MDN — URL search paramsA QR code encodes an ordinary URL with utm_* parameters.
Last reviewed 2026-06-24. Facts are checked against primary/official sources where available; uncertain specifics are marked “Data not yet verified” rather than guessed.