Trackable QR codes that count every scan

A trackable QR code points to a short link, not straight to your page. Every scan passes through that link, gets counted, and then lands on your UTM-tagged URL. You see scans apart from clicks, GA4 sees the campaign, and you can change the destination after the code is printed.

Start for free Free plan · No card required

https://go.example.com/spring?qr=1

34 characters encoded

What does the QR code hold?Sample data
  • The code holds your short link plus ?qr=1. UTM Link adds that marker only to short links on a custom domain.
  • Each scan hits the short link first, gets recorded as a QR scan, then forwards to the full UTM URL.
  • The link page shows QR scans as their own number, and every row in the click log says QR scan or Link.
Link page in UTM Link
Total clicks (incl. scans)
214
QR scans
131

How QR code tracking works

A QR code is only a way to write a URL in a form a phone camera can read. It has no tracking of its own. Whatever URL you put inside is what the phone opens, and nothing reports back to you.

Tracking comes from what that URL is. In UTM Link, the QR code for a short link holds the short link on your own domain, plus a small ?qr=1 marker. When someone scans it:

  1. The phone opens the short link, for example go.example.com/spring?qr=1.
  2. UTM Link records the visit and flags it as a QR scan because of the marker.
  3. The visitor is forwarded to the destination, your full URL with UTM parameters. The qr=1 marker is not passed on to your site.

This happens in a fraction of a second. The person scanning sees your page, not a stop on the way.

The same short link can also go in an email or a post. Those visits come in without the marker, so they count as clicks, and the QR scans stay their own number. One link, two numbers, no need to create a separate link just for print.

Static vs dynamic QR codes

Most QR generators sort codes into two kinds. The difference matters once the code is on paper.

Static QR codeDynamic QR code
What it holdsThe final URLA short link that redirects
Counts scansNoYes
Change destination after printingNoYes
Code densityGrows with URL lengthStays small
In UTM LinkQR code of a plain UTM linkQR code of a short link on your domain

A dynamic QR code is not a special file type. It is a normal QR code with a redirect link inside. That is why a UTM Link short link works as one: the code stays the same and the link behind it does the work.

Static codes still have a place. If a URL will never change and you only need the visits in GA4, a QR code of the plain UTM link is fine. Try both in the demo above and look at the code: the long UTM URL makes a much denser pattern.

Change the destination after printing

Print runs are slow to fix. A menu changes, a product sells out, a landing page moves. With a static code, the only fix is a reprint or a sticker.

With a short link, you open the link in UTM Link and edit the destination URL. The printed code does not change, because it holds the short link, and every scan after your edit goes to the new page. Earlier scans stay on the link's page, so you keep one history for one printed piece.

You can also pause the link. Scans stop reaching the destination until you switch it back on, which helps when an offer ends before the posters come down.

For short links on your own domain, see branded short links and how to connect a custom domain.

Add UTM parameters to QR codes so GA4 credits print

Scan counts tell you how many people scanned. Google Analytics tells you what they did next. For that, GA4 has to know the visit came from print, and without UTM parameters it can't. A camera app sends no referrer, so a plain scan usually shows up as Direct traffic.

Build the destination in the UTM builder first, then make the QR code from that link. A typical set for a flyer:

utm_source    flyer           the printed piece
utm_medium    print           the type of channel
utm_campaign  2026_04_spring_menu
utm_content   back_page       optional, the placement

One thing to know before you pick a medium. GA4 sorts traffic into channels using fixed rules on source and medium, and none of its default channels is for print or QR codes. A medium like print, offline or qr matches no rule, so those sessions land in Unassigned. The data is still there. You find it by filtering on source, medium or campaign.

Avoid borrowing a medium that does match, like referral or social. It moves print traffic into the wrong channel and makes both numbers wrong. Two better options:

  • Keep utm_medium=print on every printed code and report on that medium. Simple, and nothing else in your data uses it.
  • Create a custom channel group in GA4 with a channel such as Offline, matching medium exactly matches print. Print then gets its own row in channel reports.

Whichever you choose, write it down and use the same values every time. Print, print and flyer used as mediums are three rows in GA4. Our guide to UTM naming conventions covers how to set rules your team can't break.

What QR scan data you see

Each short link has its own page in UTM Link. Scans and clicks are stored the same way, with a source column that says QR scan or Link. For every scan you get:

  • The date and time of the scan.
  • The country, looked up from the IP address.
  • The device type, operating system and browser.
  • The IP address, which also powers the unique clicks count.

On top of the log, the link page shows a total clicks number, a separate QR scans number, clicks over time and a map of clicks by country. Total clicks includes scans, so clicks from the link itself are the total minus the scans.

What you don't get matters too. UTM Link does not record the city or exact location of a scan, and it does not know who scanned. There is no name, email or account tied to a scan. For the full list of reports, see link tracking.

Read the two sources side by side. UTM Link counts every scan that reached the link, including people who closed the page right away. GA4 counts sessions on your site and can miss visitors who block analytics. Expect the numbers to differ a little. A big gap usually means a broken page or a tagging problem, which our analytics setup guide helps you check.

How to create a trackable QR code in UTM Link

  1. Create a link and fill in the destination and UTM parameters. The first link guide walks through the form.
  2. Choose your custom domain so the link becomes a short link. You can also set your own back-half, such as /spring.
  3. Save the link, then click the QR code button on the link in your list or on its page.
  4. Download the PNG and place it in your design.
  5. Print a test copy and scan it before the full run.

The QR code button is on every link, including plain UTM links without a short link. Those codes hold the full UTM URL. They work and GA4 still sees the UTM values, but UTM Link can't count the scans and you can't change where they go.

Printing tips that save a reprint

  • Test before you print. Scan the proof with an iPhone and an Android phone, and check that the page that opens is the right one.
  • Leave a quiet zone. The downloaded PNG has no white border of its own. Keep clear white space around the code, about four of its small squares wide, with no text or images touching it.
  • Print it big enough. Think about how far away people will stand. A code on a table card can be small. A code on a poster across a room has to be much larger. Test at the real size and distance.
  • Keep the contrast. The download is black on white, which scans best. Avoid printing it on a dark or busy background.
  • Don't stretch it. Resize the PNG evenly and, for large prints, check that the edges of the squares stay sharp.
  • Add a line of text. “Scan for the menu” gets more scans than a code on its own, and a short link printed below gives people a way in if their camera fails.

Plans

Any link you create in UTM Link has a QR code. Counting scans and changing the destination after printing need a short link on your own domain, and custom domains come with the Pro and Business plans. The free plan covers plain UTM links, so QR codes made there work as static codes tracked in GA4 only.

Questions, answered.

How do I track a QR code?

+

Point the QR code at a short link instead of the final page. When someone scans it, the short link records the scan and then forwards them on. In UTM Link, create a short link on your custom domain, open the QR code from the link and download it. Scans then show up on that link's page as their own number.

Can I change where a printed QR code goes?

+

Yes, if the code points to a UTM Link short link. The printed code only holds the short link, so when you edit the link's destination URL, the next scan goes to the new page. A QR code that holds the full page URL can't be changed after printing.

What is the difference between a static and a dynamic QR code?

+

A static QR code stores the final URL itself. It works forever but can't be edited or tracked. A dynamic QR code stores a short redirect link, so you can change the destination and count scans. A UTM Link QR code for a short link works like a dynamic QR code.

Do UTM Link QR codes expire?

+

No. There is no expiry date on links or QR codes. A code keeps working while its short link is active and your custom domain stays connected. If you pause the link, scans stop reaching your page until you turn it back on.

What UTM parameters should I use for a QR code?

+

Use utm_source for the printed piece (flyer, poster, packaging), utm_medium for the type of channel (print is common) and utm_campaign for the promotion. Use utm_content to tell two placements apart, such as front and back of a leaflet. Keep the same values on every code so they group in reports.

Does Google Analytics track QR code scans?

+

Not by itself. GA4 only sees the visit after the page loads, and a scan without UTM parameters usually shows as Direct. Add UTM parameters so GA4 can attribute the visit. GA4 also has no QR or print channel, so a medium like print falls into Unassigned unless you set up a custom channel group.

What file format is the QR code download?

+

A PNG image, black on white. There is no SVG export and no option for colours or a logo. Black on white is also the safest choice for scanning.

Which plans include QR scan tracking?

+

Every link in UTM Link has a QR code button. Scan counting needs a short link on your own custom domain, and custom domains are part of the Pro and Business plans.

Trackable QR Codes with Scan Tracking | UTM Link