Marketing·6 min read

QR Codes + UTM Parameters: How to Track Every Scan (2026 Guide)

QR codes without tracking are guesswork. Learn how to embed UTM parameters into QR codes so you can measure exactly which campaigns, flyers, and placements drive traffic.

The Problem With Most QR Codes

You print 5,000 flyers with a QR code pointing to your website. People scan it. Traffic goes up. But you have no idea which flyer drove the traffic — the one on the coffee shop bulletin board, the one in the conference swag bag, or the one your intern taped to the office bathroom door.

This is the reality for most businesses using QR codes. They generate a code, point it at their homepage, and hope for the best. No tracking. No attribution. No way to measure ROI.

The fix is simple: UTM parameters.

What Are UTM Parameters?

UTM (Urchin Tracking Module) 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.

A normal URL:

`https://yoursite.com/pricing`

The same URL with UTM parameters:

`https://yoursite.com/pricing?utm_source=flyer&utm_medium=qr&utm_campaign=spring-sale&utm_content=coffee-shop`

Both links land on the same pricing page. But the second one tells Google Analytics (or whatever you use) exactly how that visitor found you:

  • utm_source — Where the traffic comes from (flyer, poster, business-card, packaging)
  • utm_medium — The marketing medium (qr, email, social, print)
  • utm_campaign — The specific campaign (spring-sale, product-launch, grand-opening)
  • utm_content — Differentiates variations (coffee-shop vs conference vs bathroom-door)
  • utm_term — Optional, typically used for paid search keywords
  • Why This Matters for QR Codes

    QR codes are physical. They exist on things you can't click-track — printed flyers, product packaging, business cards, event badges, restaurant menus, window displays, direct mail.

    Without UTM parameters, all QR code traffic shows up in your analytics as "direct" — lumped together with people who typed your URL manually. You can't tell what's working.

    With UTM parameters baked into the QR code, every scan carries its own tracking data. You can answer questions like:

  • Which physical location drives the most scans?
  • Which campaign had the best conversion rate?
  • Are business cards or flyers more effective?
  • Should you keep paying for that conference sponsorship?
  • Which product packaging design gets more engagement?
  • How to Build a Tracked QR Code

    Step 1: Build Your UTM URL

    Start with your destination URL and add parameters. Here's a practical example:

    Scenario: You're a restaurant running a spring menu promotion. You're putting QR codes on table tents, window stickers, and Instagram stories.

    Table tent QR code:

    `https://yoursite.com/spring-menu?utm_source=table-tent&utm_medium=qr&utm_campaign=spring-menu-2026`

    Window sticker QR code:

    `https://yoursite.com/spring-menu?utm_source=window-sticker&utm_medium=qr&utm_campaign=spring-menu-2026`

    Instagram story QR code:

    `https://yoursite.com/spring-menu?utm_source=instagram&utm_medium=qr&utm_campaign=spring-menu-2026`

    Same destination. Three different sources. Now you know which placement performs best.

    Step 2: Generate the QR Code

    Take your full UTM URL and generate a QR code. You can use FluidConvert's free QR Code Generator — paste in the full URL with parameters and download the code instantly.

    The QR code doesn't care how long the URL is. UTM parameters don't make the code harder to scan — modern phones handle long URLs without issues.

    Step 3: Check Your Analytics

    In Google Analytics 4, go to Reports > Acquisition > Traffic Acquisition. Filter by medium = "qr" and you'll see all your QR code traffic broken down by source, campaign, and content.

    You can also build custom reports to compare QR performance across campaigns, time periods, and conversion goals.

    Best Practices

    Be Consistent With Naming

    Decide on a naming convention and stick to it. Use lowercase, hyphens instead of spaces, and keep names descriptive but short.

    Bad: `utm_source=John's Flyer (March)`

    Good: `utm_source=flyer-downtown&utm_campaign=march-2026`

    Use utm_content for A/B Testing

    Running two different flyer designs? Same source, same campaign — just change utm_content:

    `utm_content=design-a` vs `utm_content=design-b`

    Now you have real data on which design drives more traffic.

    Don't Forget utm_medium=qr

    Always tag the medium as "qr" so you can filter all QR code traffic in one view, regardless of source or campaign.

    Shorten Long URLs First (Optional)

    If you're concerned about QR code density (more data = more complex pattern), you can run the UTM URL through a shortener like Bitly first. The short URL redirects to the full UTM URL, keeping the QR code simple while preserving all tracking data.

    That said, most modern QR scanners handle long URLs without any issue. This is an optimization, not a requirement.

    Test Before Printing

    Always scan your QR code with at least two different phones before sending anything to print. Verify the URL loads correctly and the UTM parameters appear in your analytics in real time.

    Real-World Examples

    Retail: A clothing brand puts QR codes on hang tags linking to styling guides. Each store location gets a unique utm_source. They discover their Austin store drives 3x more QR scans than Dallas — and adjust marketing spend accordingly.

    Events: A SaaS company sponsors four conferences and includes QR codes on their booth banners. utm_campaign identifies each conference. Post-event analysis shows one conference generated 60% of all signups at 25% of the cost.

    Packaging: A food brand adds QR codes to product packaging linking to recipes. utm_content differentiates between their pasta sauce and their salsa line. The salsa recipes get 5x more engagement — so they double down on recipe content for that product.

    Real estate: An agent puts QR codes on yard signs, brochures, and direct mail. Each gets a unique source tag. Turns out yard signs drive more listing views than the $2,000/month direct mail campaign.

    Common Mistakes

    1. Using the same QR code everywhere — defeats the entire purpose of tracking
    2. Forgetting to set utm_medium — makes it impossible to filter QR traffic from other channels
    3. Inconsistent naming — "flyer", "Flyer", "flyers", and "print-flyer" all show up as separate sources
    4. Not testing the code — one typo in the URL means a dead link on 5,000 printed flyers
    5. Pointing to the homepage — send people to a specific landing page relevant to the campaign, not your homepage

    Start Tracking

    Every QR code you create should have UTM parameters. Period. It takes 30 extra seconds to build the URL and gives you actual data instead of guesswork.

    1. Build your UTM URL with the parameters above
    2. Paste it into FluidConvert's QR Code Generator
    3. Download and print

    Stop guessing which campaigns work. Start measuring.