Skip to content

How to track QR code scans with UTM tags

DanielPublished 5 min read

You put a QR code on your flyers, business cards and shop counter. People visit your website. But which printed material brought them there?

If every code opens the same untagged page, your website analytics may not give you a clear answer.

To track QR code traffic, create a tagged destination URL for each placement, put it behind a separate short link, and generate a QR code for that link. You can then compare the visits each placement brings—and, if your website tracks enquiries or purchases, what those visitors do next.

Here’s a practical setup for a small business.

Decide what you want to measure

A scan count answers one question: how often was the code’s link opened?

Your website analytics answers another: what happened after someone arrived?

For a café, the useful outcome might be a table reservation. For a consultant, it might be an enquiry. For an online shop, it might be a purchase.

Pick the outcome before printing. Otherwise, you could end up celebrating a busy QR code without knowing whether it helped the business.

Give each placement its own tagged URL

Imagine you run a bakery and want to promote catering. You plan to put QR codes on:

  • Flyers delivered to nearby offices.

  • A sign beside the till.

  • Cards included with takeaway orders.

All three can lead to the same catering page. The tracking tags should identify where each visit came from.

UTM tags are labels added to a URL. For this campaign, use a simple naming convention:

Tag

What it identifies

Example

utm_source

The distribution source

office_leaflet

utm_medium

The marketing channel

print

utm_campaign

The shared promotion

catering_launch

utm_content

The particular design or position

front_panel

These are example values, not required names. Choose labels that your team understands and keep them consistent. Google Analytics treats differently capitalised values as distinct, so lowercase is a sensible default. See Google’s UTM documentation.

Your flyer’s destination could look like this:

https://example.com/catering?utm_source=office_leaflet&utm_medium=print&utm_campaign=catering_launch&utm_content=front_panel

Use the same campaign name for the counter sign and takeaway card, but give each a different source.

You can create these URLs with the free toa.ee UTM builder.

One naming detail: using “print” makes the medium easy to recognise, but don’t assume it will appear in a dedicated “Print” channel in Google Analytics. Compare your source and medium values directly.

A long tracking URL can make a QR code denser than it needs to be. Put the complete tagged destination behind a short link, then generate the QR code for that short link.

The path becomes:

Printed QR code → short link → tagged catering page

Keep a simple record:

Placement

Destination source

Short link

Office flyer

office_leaflet

Your flyer link

Counter sign

shop_counter

Your counter link

Takeaway card

takeaway_card

Your takeaway link

Use a separate link for each placement. Reusing one QR code everywhere combines the traffic and removes the distinction you’re trying to measure.

For more on how URL length changes the printed code, see our business-card QR code comparison.

Test the whole journey before printing

A QR code opening successfully is only the first check. Scan a printed proof and confirm that:

  1. It opens the correct page on your phone.

  2. The destination URL retains the intended UTM tags after any redirects.

  3. The page works comfortably on mobile.

  4. The enquiry, booking or checkout flow works.

  5. Your analytics setup records the visit and your chosen outcome, where applicable.

Also check that the code has a clear blank margin and enough contrast against the background.

Test every placement’s code separately. Three similar-looking QR codes can easily get mixed up in a design file.

Find the visits in Google Analytics

If your destination website uses Google Analytics 4, open the Traffic acquisition report. Look at Session source / medium and Session campaign to identify your tagged traffic. See Google’s reporting instructions.

For the bakery example, you would compare visits from:

  • office_leaflet / print

  • shop_counter / print

  • takeaway_card / print

Then compare the outcomes that matter to you.

A flyer that brings fewer visits but more catering enquiries may be more valuable than a counter sign that attracts lots of casual browsing.

Keep distribution in mind, too. Five hundred takeaway cards and twenty office flyers have very different opportunities to generate visits. Raw totals alone don’t establish which placement performs best.

Why scans and website visits won’t match exactly

A QR-link opening, an analytics session and a customer are different things.

Someone might open the link twice. Another person might close the page before analytics loads. Consent choices, browser protections and automated requests can also affect what different systems record.

A shared short link may receive clicks from people who never saw the printed code.

Treat the numbers as complementary:

  • Link activity helps you understand how often the QR destination is requested.

  • Website sessions show the visits your analytics captures.

  • Enquiries, bookings or purchases show the business outcomes you record.

Avoid describing every link opening as a unique person or a completed website visit.

Three mistakes that make QR tracking less useful

Printing the same code everywhere. Create separate links when you need to compare placements.

Changing names halfway through a campaign. Decide on your labels before generating the codes, and record them in one place.

Putting customer details in tracking tags. Use campaign labels, not names, email addresses or order details. URLs can be copied, shared and stored in logs.

Start with one small campaign

You don’t need dozens of codes to learn something useful. Start with two placements, one landing page and one clear outcome.

Build the destinations in the UTM builder, create a separate short link for each, and test the printed codes before distributing them.

Then use the results to decide where your next batch of print belongs.

Related posts

Guides8 min read

QR code on a business card? Shorten the link before you print

We encoded one shop page two ways and measured the result. In the same corner of a business card, a 19-character short link gives dots 1.8 times as wide as a 115-character tracking URL. Here is why, and how to keep your UTM tags anyway.