how to track qr code
How I track a QR code after it is printed
A practical QR tracking workflow for printed campaigns: dynamic links, UTM parameters, scan checks, and placement records before the QR code goes to print.
Updated 2026-07-08
To track a QR code, I do not rely on the QR image itself. I track the destination. The printed code points to a short dynamic URL, and that URL records scans before sending people to the final page.
That setup gives me two useful checks: scan activity in the QR campaign dashboard, and campaign attribution in the website analytics tool when the destination URL uses UTM parameters.
Use a dynamic QR link
The redirect is where tracking happens
A static QR code points straight to the final URL. Once it is printed, there is no redirect layer to count scans or change the destination. A dynamic QR code points to a short URL first, then redirects to the destination.
I use one dynamic campaign for each printed placement when the numbers matter. A counter sign, flyer, table stand, direct mail card, and sticker should not all share one QR code if I need to know which one worked.
Separate campaigns also make mistakes easier to fix. If the flyer link changes, I can update the flyer campaign without touching the counter sign or the sticker campaign.
Add campaign parameters
Make analytics readable later
Google Analytics supports UTM parameters on destination URLs. Google documents parameters such as utm_source, utm_medium, utm_campaign, utm_term, and utm_content, and says the values are available in traffic acquisition reporting.
For print QR campaigns, I keep the naming plain. A table stand might use utm_source=qr, utm_medium=print, and utm_campaign=summer_menu. If there are several designs, I use utm_content for the placement or creative version.
I keep everything lowercase because UTM values are case-sensitive. If I use print in one campaign and Print in another, analytics can split the same idea into separate rows.
Keep one record per placement
Future you needs the print context
- Campaign name and short URL.
- Final destination URL, including UTM parameters.
- Printed placement, such as counter sign, flyer, sticker, or table stand.
- Print date, print vendor, and quantity.
- QR image file and source design file.
The record matters when the business reprints the asset or asks why a campaign has a sudden scan spike. Without placement notes, a scan count is just a number.
Test before the print run
Check the redirect and the analytics path
I test the printed proof, not only the browser preview. DENSO WAVE describes the quiet zone as the clear margin around the QR symbol and says QR Codes require a four-module margin on every side.
After the proof scans, I check the redirect destination and the campaign record. If the destination has UTM parameters, I open the final URL and confirm the query string survives the redirect.
I also do one scan from a phone that was not used to create the campaign. That catches login-only links, local-only URLs, copied staging URLs, and other simple mistakes before the file goes to print.
Do not overread scan counts
Scans are useful, not perfect
A QR scan is not the same as a purchase, booking, or review. One person can scan twice. A staff member can test the code. Some people can scan and leave before the page finishes loading.
That is why I look at scan counts together with destination analytics. The QR campaign tells me whether the printed asset is getting used. The website analytics tool tells me what happened after the visitor landed.
My usual setup is simple: one dynamic QR campaign per important placement, UTM parameters on the destination, a printed proof scan, and a saved record of what was printed. That is enough to track a QR code without making the workflow heavy.