Dynamic QR codes

How to track QR code scans and campaigns

Track QR code scans and compare campaigns: one code per placement, reading scan analytics, UTM tags for Google Analytics, and mistakes that skew data.

Updated 4 min readBy the QR-10 team

On this page

Key takeaways

  • Only dynamic QR codes can be tracked: scans pass through a short link that counts them.
  • Use one code per placement, named clearly and grouped in a folder per campaign.
  • Compare unique scans, not just totals, and use the time heatmap to plan offers and staffing.
  • Add UTM tags to the destination to follow scanners into Google Analytics.

How QR code tracking works

A dynamic QR code contains a short link, such as qr-10.com/r/aB3dE7k. When someone scans it, the short link records the scan (the time, the device and its settings, and the approximate location) and forwards them to your page in a fraction of a second. A static code opens your page directly, so there is nothing in between to count scans. That is the main reason to choose dynamic; see static vs dynamic QR codes.

Set up a campaign you can measure

1. One code per placement

The most useful thing tracking can do is compare. If the window poster, the counter card and the flyer share one code, you only learn the total. Give each its own dynamic QR code and you learn which one works.

2. Name codes so you can read the report

Use names that say where and when: “Window poster, Oct”, “Flyer drop, Anna Nagar”, “Table tents”. A report full of “QR code 7” is useless in a month.

3. Group them in a folder

Put a campaign’s codes in one folder, so you can see the campaign as a whole and each placement inside it. For many placements at once, the bulk QR code generator is a quick start.

Same design, different codes

Each code can use the same colors and logo. Customers never notice the difference; your report does.

Reading your scan analytics

An example scan analytics dashboard with total and unique scans, scans per day, scans by placement, a day-and-hour heatmap and devices.
Illustration with example data: one campaign’s scans per day, by placement, by hour and by device.
What scan analytics tell you
MetricWhat it tells youUse it to
Scans over timeHow interest changes day by daySee what a new placement or offer changed
Unique scansHow many different people scannedCompare placements fairly
Day × hour heatmapWhen people scanTime offers, posts and staffing
Devices and OSiPhone vs Android, phone vs tabletTest your page on the phones that matter
Countries and citiesWhere scans come fromSpot travel, packaging and regional reach
LanguagesThe language scanners’ phones useDecide whether to translate the page
Top QR codesWhich codes get the most scansMove budget to what works

On QR-10 all of this is included on the Free plan, with CSV export and weekly or monthly email reports. See QR code tracking and scan analytics for the full list.

Going further: UTM tags and conversions

Scan analytics tell you how many people scanned. To see what they did next, such as buying or signing up, add UTM tags to the destination link so Google Analytics knows the visit came from print:

  • utm_source: where it was printed, for example window-poster.
  • utm_medium: qr, so all QR visits group together.
  • utm_campaign: the campaign name, for example diwali-2026.

Long tagged links make a static code dense and hard to scan. With a dynamic code the printed pattern stays a short link, however long the tagged destination is, and you can fix the tags later.

Mistakes that ruin your data

  • One code everywhere. You get a total, but can’t tell which placement worked.
  • Counting your own tests. Every scan counts, including yours while setting up. Note the date you launched.
  • Judging too early. A week of data is noise. Compare placements over a few weeks, ideally on the same days.
  • Ignoring the destination. If many people scan but few act, the problem is usually the page, not the code.

Don’t track people, track placements

Scan analytics are anonymous by design. Don’t try to tie scans to individuals; respect privacy laws, and tell people if your page collects personal data.

Campaign tracking checklist

  1. 1List the placements you want to compare.
  2. 2Create one dynamic code per placement, with a clear name, in a campaign folder.
  3. 3Add UTM tags to each destination if you use Google Analytics.
  4. 4Print, place, and note the launch date.
  5. 5After two to four weeks, compare unique scans per placement and move the weakest code.

Ready? Create a free account and track your first three codes free, with unlimited scans.

Frequently asked questions

Use a dynamic QR code. Scans pass through its short link, which records each one before forwarding to your page. Your provider’s dashboard then shows scans over time, devices, locations and more.

Not the scans themselves: a static code opens your page directly. You can add UTM tags to the link to see visits in Google Analytics, but you can’t change the code later.

Total scans count every scan. Unique scans count each person once per code, so one person scanning five times counts as one.

No. Scan analytics are anonymous: time, device, operating system, language and approximate location, never names or phone numbers.

One per placement you want to compare: for example one for the shop window, one for the counter and one for flyers. Put them in a folder for the campaign.

Your next print run deserves a smarter QR code.

Start free with every feature: 3 dynamic QR codes, full scan analytics, logos and landing pages. Upgrade to Pro for unlimited dynamic codes whenever you are ready.