How to track QR code scans (measure what's working)
Static QR codes — like the ones you create at oneclickqrcode.com — don't track scans on their own. But with a simple workaround using UTM parameters or URL shorteners, you can measure exactly how many people scan your code, where they come from, and what device they use. No paid tools required.
Why tracking matters
If you print a QR code on a flyer, product package, or business card, you want to know: is anyone actually scanning it? Tracking answers questions like:
- How many scans? — are people engaging with the code, or is it being ignored?
- Which placement works best? — if you have QR codes on flyers, table tents, and packaging, which one gets the most scans?
- When do people scan? — are scans happening right after you distribute the material, or trickling in over weeks?
- What devices? — mostly iPhone or Android? This can inform your landing page design
- Where are scanners located? — useful for local businesses and events to understand geographic reach
Without tracking, you're flying blind. You printed 500 flyers with a QR code, but you have no idea if 5 people scanned it or 500.
Method 1: UTM parameters (free, uses Google Analytics)
This is the most common and reliable approach. It works with any website that has Google Analytics (or any analytics tool) installed.
What are UTM parameters?
UTM parameters are tags you add to the end of a URL. They don't change where the link goes — they just tell your analytics tool where the visitor came from. When someone scans the QR code and lands on your page, Google Analytics records the UTM data.
A URL with UTM parameters looks like this:
https://yoursite.com/page?utm_source=qr&utm_medium=print&utm_campaign=spring-flyer
The five UTM parameters
| Parameter | Purpose | Example |
|---|---|---|
utm_source | Where the traffic comes from | qr, qr-code, flyer-qr |
utm_medium | The marketing medium | print, packaging, poster |
utm_campaign | The specific campaign | spring-sale, product-launch, event-2026 |
utm_term | (Optional) A keyword or identifier | table-tent-a, front-door |
utm_content | (Optional) Differentiate similar content | blue-design, logo-version |
Only utm_source, utm_medium, and utm_campaign are essential. The other two are useful if you're running multiple QR code variants and want to compare them.
Step by step
1. Build your UTM URL
Add the parameters to your destination URL. You can do this manually or use Google's free Campaign URL Builder.
Example: you want to track a QR code on a restaurant table tent that links to your menu.
Your base URL:
https://yourrestaurant.com/menu
With UTM parameters:
https://yourrestaurant.com/menu?utm_source=qr&utm_medium=table-tent&utm_campaign=dine-in-menu
2. Create the QR code
Go to oneclickqrcode.com and paste the full URL (including the UTM parameters) into the Link field. The QR code encodes the entire URL, parameters and all.
3. View the data in Google Analytics
In Google Analytics 4:
- Go to Reports → Acquisition → Traffic acquisition
- Change the primary dimension to Session source/medium
- Look for entries matching your UTM source and medium (e.g.,
qr / table-tent)
You'll see:
- Number of sessions (≈ scan count)
- Users
- Engagement metrics (pages per session, time on site)
- Conversions (if you've set them up)
Tips for UTM tracking
- Be consistent with naming — decide on a convention and stick with it. Use lowercase, hyphens instead of spaces, and descriptive names.
qr / table-tentis better thanQR Code / Table Tent at Restaurant - Use different UTM values for different placements — if you have QR codes on flyers AND table tents, give them different
utm_mediumorutm_campaignvalues so you can compare performance - UTM URLs can be long — this makes the QR code more complex (more dots). If the URL is very long, use a URL shortener (see Method 2) to keep the QR code simple
Method 2: URL shorteners with analytics (free)
URL shorteners like Bitly, TinyURL (with tracking), or Dub create a short redirect URL that tracks every click — including scans from QR codes.
How it works
- Take your destination URL (with or without UTM parameters)
- Create a short link (e.g.,
bit.ly/your-menu) - Use the short link as the QR code destination
- Every time someone scans the QR code and the short link redirects them, the shortener logs the click
Step by step
1. Create a short link
Go to your URL shortener of choice and paste your destination URL. Copy the shortened link.
2. Create the QR code
Go to oneclickqrcode.com and paste the short link (not the original URL) into the Link field.
The QR code will be simpler and easier to scan because short URLs have fewer characters.
3. Check your analytics
Log into your URL shortener dashboard to see:
- Total clicks (scans)
- Clicks over time (daily, weekly, monthly)
- Geographic location of scanners
- Device type (mobile vs desktop — though for QR codes it's almost always mobile)
- Referrer (usually "direct" for QR scans)
Shortener comparison
| Service | Free tier | Analytics included | Custom domains |
|---|---|---|---|
| Bitly | 10 links/month | Yes (clicks, location, device) | Paid only |
| Dub | 25 links/month | Yes (clicks, location, device, referrer) | Yes (free) |
| TinyURL | Unlimited | Basic (paid for detailed) | Paid only |
| Short.io | 1,000 links | Yes (detailed) | Yes |
Method 3: Combine both
For maximum insight, use UTM parameters AND a URL shortener:
- Add UTM parameters to your destination URL
- Shorten the UTM-tagged URL with a URL shortener
- Use the short link in your QR code
This gives you:
- Shortener dashboard — quick scan count, location, device data
- Google Analytics — deeper behavior data (what they did after landing, conversions, engagement)
Example flow:
Original: https://yoursite.com/menu
+ UTM: https://yoursite.com/menu?utm_source=qr&utm_medium=flyer&utm_campaign=spring
+ Short: https://bit.ly/menu-spring
→ QR code points to: https://bit.ly/menu-spring
When someone scans: QR code → Bitly (logs the click) → your site with UTM parameters (Google Analytics logs the source).
What you can learn from the data
Compare placements
If you have QR codes in multiple locations, use different UTM campaigns or different short links for each:
utm_campaign=table-tent→ 340 scans/monthutm_campaign=takeout-bag→ 85 scans/monthutm_campaign=window-poster→ 22 scans/month
Now you know the table tents are your most effective placement.
Measure campaign ROI
If the QR code links to a product page, you can track conversions in Google Analytics:
- 500 scans → 120 page views → 15 purchases → $450 revenue
- Cost of printing 200 flyers with QR codes: $40
- ROI: $410 profit from a $40 investment
Optimize timing
If scan data shows most scans happen on weekends, you know your audience engages more on weekends. Time your campaigns and promotions accordingly.
A/B test designs
Print two versions of a flyer with different QR code designs, different calls to action, or different placements on the page. Give each a different UTM tag. Compare scan rates to see which performs better.
Common mistakes
- Forgetting to add tracking before printing — once QR codes are printed, you can't retroactively add UTM parameters. Plan tracking before you print
- Using the same UTM values for everything — if every QR code has
utm_source=qr&utm_medium=print, you can't tell them apart. Be specific - Not testing the tracked URL — always scan the final QR code and verify the URL loads correctly with all parameters intact
- Changing the short link destination — if you update where a Bitly link points, your historical data becomes misleading. Create a new short link for new campaigns
FAQ
Can I track scans with a static QR code?
Not directly — static QR codes are just images encoding a URL. But by using UTM parameters or URL shorteners as described above, you can track every scan through your analytics dashboard.
Is there a free way to track QR code scans?
Yes. UTM parameters with Google Analytics is completely free. URL shorteners like Bitly and Dub also offer free tiers with analytics.
How accurate is the scan count?
Very accurate for URL shorteners — they log every redirect. For UTM tracking in Google Analytics, the count may be slightly lower because some users have analytics blockers. But for most purposes, the data is reliable enough to make decisions.
Can I see who scanned my QR code?
Not individual identities — that would be a privacy issue. You can see aggregate data: total scans, geographic regions, device types, and time of day. This is enough for most marketing and business decisions.
Should I use a dynamic QR code service instead?
Dynamic QR code services (where you pay to host the redirect) include built-in tracking. They work, but they also cost money and your QR codes stop working if you cancel the subscription. The UTM + shortener approach described here is free, gives you the same data, and your QR codes work forever because they point to URLs you control.
Create your trackable QR code free at oneclickqrcode.com — add UTM parameters to your URL, generate the code, and track results in Google Analytics. No sign-up needed.
Founder of oneclickqrcode.com