QR Campaign Tracking: Measure Scans by Channel
Most teams treat QR codes as a print novelty: drop one on a flyer, hope someone scans it, move on. That's not a campaign. A campaign has goals, channels, and numbers you can defend in a Monday standup — and QR campaign tracking is what gets you there.
Campaign tracking only works when every scan is logged with a timestamp and tied back to the channel it came from. QRelix is free to start with real scan tracking included, so you can create a QR code for each channel and measure a multi-channel campaign without budget approval. Each free code works for its first 50 scans and shows a brief QRelix screen before forwarding; QRelix Pro ($5.99/month) removes both limits. This guide walks through how to set up QR campaign tracking the right way: what to tag, what to measure, and how to start free in 2026.
What QR campaign tracking actually means
QR campaign tracking is the practice of attributing scans (and downstream actions) back to the specific campaign, channel, and creative they came from. It's the difference between knowing "we got 4,200 scans last month" and knowing "the in-store window cling drove 38% of scans, but the print insert had 3x the conversion rate."
Three things separate campaign tracking from generic QR analytics:
- Channel attribution. Every scan is tagged with its origin — packaging, OOH, print, in-store, paid social print run, event collateral.
- Campaign-level rollups. Scans aggregate by campaign so you can compare a Q2 product launch against a Q3 promotion without manually filtering scan logs.
- Downstream conversion stitching. UTMs follow the scan into your web analytics, so you can connect a scan to a signup, purchase, or booking.
Without all three, you're not tracking campaigns. You're just counting scans.
Why scan totals alone miss campaign-level measurement
A scan total tells you a code was used. It does not tell you which channel, which creative, or which placement earned the scan. Without campaign metadata you can't filter by source, segment by creative, or compare two campaigns side by side, and without UTM parameters the scans never connect to your site analytics.
Run a real campaign on scan totals alone and three gaps show up fast:
- No source on the scan. A total with no channel attached can't tell a flyer from a table tent.
- No UTM parameters. Without them the visit lands in your site analytics as direct traffic, and the scan can't be tied to a conversion.
- No campaign-level view. You can see total scans, not which campaign or creative produced them.
If you're spending money on print or packaging, you need this data before the next print run. The path below uses dynamic codes plus UTMs to get it, and you can start on QRelix's free plan.
For a worked print example, see QR codes for catalogs, where each page placement gets its own code.
The free 4-step QR campaign tracking setup
This setup works for any number of campaigns and any number of channels. The whole thing takes about 20 minutes the first time, then 2–3 minutes per new campaign.
Step 1: Use dynamic QR codes, not static
Static QR codes encode the destination URL directly in the pattern. Once printed, they can't be edited, redirected, or analyzed at the campaign level — every scan looks the same to your dashboard.
Dynamic QR codes route through a short URL you control. That redirect step is where the magic happens: it logs each scan with a timestamp, device type, and geographic region, then forwards the user to the campaign URL. Dynamic codes are also editable after print — if your landing page moves, you don't reprint.
QRelix offers free dynamic QR codes (no credit card required), which is the foundation everything else here builds on. See what's included free for the scan tracking specifics.
Step 2: Tag every campaign URL with UTMs
Before you generate the QR code, build the destination URL with proper UTM parameters. These get picked up by Google Analytics, GA4, Plausible, or whatever you use, so scans show up as a tracked source instead of "direct/none."
A clean UTM convention for QR campaigns:
utm_source— the channel (print, packaging, ooh, in-store)utm_medium— always set toqrso you can filter all QR traffic at onceutm_campaign— the campaign name (q3-launch, summer-promo)utm_content— the specific creative (window-cling, insert-front, billboard-i5)
Example:
https://example.com/promo?utm_source=ooh&utm_medium=qr&utm_campaign=q3-launch&utm_content=billboard-i5
The full deep-dive on this lives in our QR Code Tracking in Google Analytics 4 guide — bookmark it for setup specifics.
Step 3: Generate one QR code per channel, not per campaign
This is the step most teams botch. They make one QR code for the whole campaign and slap it on print, packaging, and the in-store sign. All scans get bucketed together. There's no way to tell which channel pulled weight.
The fix: one dynamic QR code per channel-creative combination, each pointing to a URL with its own utm_content value. Total time cost: about 30 seconds per code. Total analytical value: actual channel attribution.
Naming convention that scales: {campaign}-{channel}-{creative}. So q3launch-print-insertfront and q3launch-ooh-billboard-i5 are separate codes, separate dashboard entries, separate UTMs.
Step 4: Build your campaign dashboard (free)
You now have two data sources:
- Scan-side data from your QR generator: scan counts, timestamps, device types, regions, per-code rollups.
- Conversion-side data from your web analytics: sessions, conversions, revenue tied back to UTMs.
Pull both into one view. The simplest approach: a Google Sheet with a tab per campaign, scan counts copied from your QRelix dashboard, and GA4 conversion data alongside. A Looker Studio dashboard works too.
What to put on the dashboard:
- Scans by channel (bar chart)
- Scan-to-conversion rate by creative (sortable table)
- Daily scan trend (line chart, overlay campaign milestones)
- Top-performing creative (rank table)
- Cost per scan and cost per conversion if you know your channel spend
Metrics that actually matter for QR campaign tracking
Scans alone are vanity. Pair every scan metric with a quality or conversion metric, or you're optimizing for the wrong thing.
The metrics worth tracking:
- Scan volume by channel — shows reach, but only useful when paired with the next two.
- Scan-to-landing-page completion — percent of scans that don't bounce. Below 60% and your landing page isn't fast enough or relevant enough.
- Scan-to-conversion rate — the actual ROI signal. Compare across creatives, not across campaigns (campaigns have different offers, so the comparison is unfair).
- Unique vs. repeat scanners — a high repeat rate on a packaging code means the code lives long enough to get re-scanned. That's good. A high repeat rate on a window cling probably means staff are accidentally rescanning. Investigate.
- Cost per acquired user — divide channel spend by the conversions traced back to that channel's QR. This number ends the "should we keep doing print?" argument either way.
Real QR campaign tracking examples
A retail Q3 product launch. One campaign, four channels — store window clings, shelf talkers, paper inserts in shipped orders, and a billboard. Four QR codes, all UTM-tagged. After two weeks, the data shows the shelf talkers drove 6x the scan volume of the billboard at 1/40th the cost. The team kills the billboard contract and doubles down on shelf-talker placement across other stores. None of that decision was possible with a single-code generic scan total.
A SaaS conference booth. One QR code on the booth backdrop, a different one on the giveaway swag, a third in the printed one-pager. Same destination — a demo signup form — but distinct UTMs. After the conference: the swag code outperformed both others, with 3x scan volume and a higher demo-signup conversion rate. The team learned the booth backdrop QR was too far for attendees to bother scanning. Next conference: bigger codes at eye level, more swag QRs.
A restaurant promo. Static menu QR code (unchanged, points to the menu) plus a dynamic campaign QR code on the table tents for a limited-time dish. Track the promo code separately. After the promo ends, edit the dynamic code to point at a follow-up offer — no reprinting tent cards. More menu and table ideas are on the QR codes for restaurants page.
Common QR campaign tracking mistakes to avoid
A few traps that show up over and over in QR campaign data:
- Reusing one code across channels. Burns your attribution. Make a code per channel.
- Forgetting UTMs. Your QR dashboard will still show scans, but your web analytics will show direct traffic. No conversion stitching.
- Static codes for short-term campaigns. Can't edit, can't track at the channel level. Use dynamic.
- Not testing the scan flow on a real phone first. Camera apps render redirects differently; some strip referrers. Always cold-scan a code before printing.
- Ignoring scan timing. A spike at 2am is rarely real human scanning — it's often crawlers or duplicate-scan bugs. Filter or annotate.
Get started: free QR campaign tracking in under five minutes
If you want to run the four-step setup on a real campaign right now:
- Create your first dynamic QR code free. No credit card required. Scan tracking is included on the free plan, where each code works for its first 50 scans.
- Drop your UTM-tagged URL into the destination field.
- Repeat per channel, label each code with the {campaign}-{channel}-{creative} convention.
- Print, ship, launch — then watch the scan data populate live.
QR campaign tracking doesn't need a big budget. Dynamic codes, consistent UTM tagging, and one code per channel give you attribution you can act on.
For the next level — connecting QR scans to revenue in your CRM — see our QR code tracker guide and the free QR code analytics breakdown.
Put this guide to work
Make one with the free trackable QR code generator: scan analytics, an editable destination, your logo. No credit card, no account up front.
Create a free QR code