How to Track QR Code Scans

Track QR code scans with dynamic codes: one code per placement, a clear baseline, careful interpretation, and links to landing-page outcomes.

5 min read

Key takeaways

  • Dynamic QR services can record requests through a managed link.
  • Create a separate code for each placement you want to compare.
  • Use campaign parameters and destination events to measure website outcomes.
  • A scan is not automatically a unique person, a lead, or a sale.

To track QR code scans, create a dynamic code with scan analytics, publish it, and review activity in the provider’s dashboard. For useful campaign reporting, give each placement its own code and measure what visitors do after reaching your page.

Scan totals are a starting point. If you are spending money on flyers, packaging, or event materials, the better question is which placements bring useful visits and completed actions. Here is how to set that up.

Understand what a scan dashboard measures

A typical dynamic code sends the visitor through a managed URL before opening the destination. That request gives the service an opportunity to record activity. Simply pointing a camera at the pattern without opening the link may produce no request at all.

QRCD provides scan activity over time, with device and approximate location information where available. Use those fields to understand patterns. They do not identify the person scanning or provide a reliable street address.

One person can open the same code more than once. Test scans, automated requests, and filtering rules can also affect totals. If a dashboard reports “unique” activity, check how it defines unique before treating the number as people.

1. Create a separate code for each placement

If the same QR image appears on every flyer and sign, its total activity cannot tell you which placement produced the visit. Separate codes solve that problem even when every destination is the same page.

PlacementExample code nameDestination
Counter signStore A — counter — OctoberBooking page
Printed flyerStore A — flyer — OctoberBooking page
Event handoutAutumn event — handoutBooking page

Choose names your team will understand months later. Include the location, material, and campaign when those differences matter. Keep a simple record of when each placement went live and when you changed its design or destination.

2. Add campaign parameters to website destinations

For a website you measure with Google Analytics, UTM parameters can identify the source, medium, and campaign associated with a visit. Google explains these fields in its campaign URL documentation.

For example, a flyer destination could be https://example.com/book/?utm_source=store_flyer&utm_medium=qr&utm_campaign=autumn_offer. Put the tagged URL in the dynamic code’s destination field. The printed code still uses its managed link.

Use consistent naming and capitalization. A custom medium such as qr is a naming choice; it does not guarantee a dedicated default reporting channel. Keep campaign names free of personal information such as customer names, emails, or phone numbers.

After setup, scan the code and check that the parameters survive any redirects. Then verify the visit appears in your destination analytics where collection is permitted and enabled.

3. Measure the action you actually want

Pick the outcome before analyzing the numbers. For a service business, that might be a completed inquiry. For a store, it might be a purchase. For an event, it might be a registration.

Configure and test the relevant event on the destination. Ideally, record a successful submission or confirmed purchase rather than just a button click. If you do not control the destination, such as a Google review page, you may not have access to that final event.

Think of the journey as several distinct measurements: redirect requests, website sessions, completed actions, and qualified business outcomes. They should not be expected to match. Browser behavior, repeat visits, consent choices, blockers, and collection failures can create differences.

4. Compare results using a consistent denominator

Here is an illustrative example, not QRCD customer data. Suppose you distribute 1,000 flyers, record 80 redirect requests, measure 60 website sessions, and receive six completed inquiries attributed to those sessions.

  • Requests per flyer distributed: 80 ÷ 1,000 = 8%. This is not a unique-person scan rate.
  • Inquiry conversion rate per measured session: 6 ÷ 60 = 10%.
  • Cost per inquiry: if the campaign cost $300, then $300 ÷ 6 = $50.

If only three inquiries meet your qualification criteria, the cost per qualified inquiry is $100. That difference matters more to the business than celebrating the total number of scans.

Use the same definitions across placements. Also consider exposure: a sign seen all month and a handout distributed for one afternoon do not have equal opportunities to attract attention.

5. Diagnose the weak part of the journey

What you observeWhat to inspect next
Little redirect activityVisibility, label, audience relevance, print quality, and whether people have time to scan.
Redirect activity but few measured sessionsDestination loading, redirect behavior, analytics installation, consent, and automated requests.
Sessions but few completed actionsMobile usability, offer clarity, form length, and whether the page matches the printed promise.
Inquiries but few qualified customersAudience targeting, qualification criteria, and the offer itself.

Change one meaningful variable at a time when practical. Record the change and compare similar periods. A larger QR code may increase successful visits; a better landing page may improve inquiries without changing the number of scans.

What if you already printed a static code?

You may still measure destination visits if the static code points to a unique URL, a tagged URL, or a server route you control. If it uses a generic website address shared across many channels, you may not be able to isolate QR traffic retrospectively.

A static image cannot send historical scan data it never recorded. For your next print run, decide on the measurement setup before distribution. See static vs. dynamic QR codes and QRCD tracking features for the available approaches.

Give every placement its own measurable link.Create separate dynamic codes in QRCD, compare scan activity, and connect your destinations to the website outcomes that matter. Unlimited dynamic QR codes with scan analytics. $69 once, no subscription.

Create a trackable QR code

Frequently asked questions

Can I track a static QR code?

You can measure visits to its website destination using suitable analytics, campaign parameters, or a unique server route. The static image itself has no built-in reporting.

Does one scan mean one person?

No. Repeat opens and other requests can contribute to the count. Treat unique-visitor estimates according to the provider’s stated definition.

Can I see exactly where a person scanned?

Do not assume that. Location reporting is approximate and may reflect network routing rather than a precise physical position. It is not a person’s address.

Why do QRCD and Google Analytics show different totals?

They measure different points in the journey and may use different counting rules. Some requests never become measured sessions, and website collection can be affected by consent, blockers, or loading issues.

Can I track a Google review submission?

A redirect request alone cannot confirm that a customer submitted a Google review. You generally do not control analytics on Google’s review page.

What is a good QR scan rate?

There is no single useful target for every placement. Compare similar audiences, exposure, and materials, then evaluate the cost and quality of the completed actions you receive.

Print it once. Change it whenever you need to.

Create unlimited dynamic QR codes, edit every destination, and see what gets scanned. One payment of $69, no subscription.

Unlimited codes and scansNo monthly fees