Add UTM parameters to the destination URL and read the results in your web analytics. To keep the code simple, encode a short path on your own domain that redirects to the full tracked URL. This counts visits, not scans, and needs no paid QR platform.
Dynamic QR platforms sell scan analytics, but many businesses just need to know whether a poster in one shop brought more visitors than a flyer in another. You can measure that with tools you already have. First, understand what is being measured.
Scans versus visits
A QR code does nothing on its own: it hands a URL to the phone. Your analytics can only see the visit that follows. A scan that is abandoned before the page loads is not counted, and a visitor who types the address manually is counted as if they scanned. For most marketing decisions that is accurate enough, but it is not an exact scan count.
Why QR visits often look like “direct” traffic
When someone opens a link from a camera app, no referring website is passed to your analytics, so the visit usually appears as direct traffic. Without tagging, you cannot separate QR visitors from people who typed your address. That is the problem UTM parameters solve.
Method 1: UTM parameters
UTM parameters are tags added to the end of a URL that Google Analytics and most other analytics tools read automatically. Three are the core set:
| Parameter | Purpose | Example |
|---|---|---|
utm_source | Where it came from | flyer or table-tent |
utm_medium | The channel | qr |
utm_campaign | The campaign name | spring2026 |
A complete URL looks like https://example.com/menu?utm_source=table-tent&utm_medium=qr&utm_campaign=spring2026. In Google Analytics 4 these appear under traffic acquisition as the source, medium and campaign. Use consistent, lower-case names so reports do not split into near-duplicates.
The drawback: that URL is 113 characters, which pushes a code from version 3 to version 7 and shrinks every square. Method 2 fixes this.
Method 2: a short redirect path on your own domain
Create a short address such as example.com/t1 that redirects to the full tracked URL, and encode only the short address in the QR code. The code stays small and simple, you can change the destination or the tags later, and you keep control. Most hosts support this. On many static hosts it is a single line in a redirects file; on WordPress, a redirect plugin does it.
Use a different short path for each placement (/t1 for table tents, /f1 for flyers) and give each its own utm_source. You can see the difference in the capacity checker: the short path is a few bytes; the tracked URL is over a hundred.
Method 3: separate landing pages
For a few placements, a dedicated page for each (/menu-downtown, /menu-uptown) gives page-level traffic with no parameters at all, and lets you tailor the content. It is more work to maintain if you have many.
Method 4: a link shortener with click stats
Free link shorteners often show a click count and basic location. They are quick, but the short link belongs to the provider, so the same link-rot risk applies as with dynamic codes. If you use one, do not print thousands of codes on a free account you do not control.
What you cannot learn this way
- Exact scan counts that never became visits.
- Device or location data, unless your analytics provides it for the visit.
- Anything after the visitor leaves your site.
If you need that level of detail, a dynamic QR platform is a fair purchase; see the trade-offs in static vs dynamic QR codes.
A simple setup
- Decide the placements you want to compare.
- Create a short path and tracked URL for each.
- Generate the codes with the QR generator.
- Print and scan-test each one.
- After two weeks, compare visits, and then conversions, by source.
Frequently asked questions
Can I see exactly where a scan happened?
Only approximately. Your analytics may infer a region or city from the visitor’s IP address. It will not give a precise location, and the quality varies.
Do UTM parameters hurt search rankings?
They can create duplicate URLs for the same page. Add a canonical tag pointing to the clean URL, and use tagged links only for campaign landing pages that you do not need indexed.
Do I need consent to track visits?
That depends on where your visitors are and which analytics you use. Rules on cookies and personal data differ by country. Check the requirements that apply to you; this is general information, not legal advice.
Try it: QR Capacity Checker — Paste a URL or text to see the QR version, grid size and error-correction options it needs.
Keep reading
Our guides give general information based on QR specifications, calculations and worked examples. Results depend on your printer, materials and devices, so always test a real print. See our editorial policy.
