Most QR code dashboards tell you how many times a code was scanned. That number is useful for about five minutes. What you actually need to know is whether those scans turned into customers, booked appointments, or drove revenue. That gap — between a scan count and a business outcome — is the attribution problem, and it's solvable without an enterprise analytics stack.
Why Scan Counts Alone Mislead You
A code on your café window might rack up 400 scans in a month. Impressive. But if your landing page saw 400 sessions and zero form fills or purchases, the placement is decorating, not converting. Conversely, a code on a product insert might show only 60 scans — and if 40 of those led to warranty registrations, that's a 67% conversion rate worth doubling down on.
The core issue is that most QR platforms stop at the scan event. Attribution requires you to connect that scan event to downstream behaviour in your website analytics, CRM, or point-of-sale system.
Step 1: Build Destination URLs That Carry Context
Every dynamic QR code should land on a URL that includes UTM parameters — or equivalent tracking tokens for your platform.
A minimal, useful UTM string looks like this:
https://yoursite.com/offer?utm_source=qr&utm_medium=print&utm_campaign=aug-window-sign&utm_content=cafe-front-door
- utm_source=qr — separates QR traffic from email, social, and paid.
- utm_medium=print — tells you the channel (print, packaging, event, etc.).
- utm_campaign — ties the scan to a specific campaign or period.
- utm_content — identifies the individual placement so you can compare locations.
When these parameters land in Google Analytics 4, you can build a custom report filtered to source = qr and add a conversion event (purchase, form submit, appointment booking) as a secondary dimension. Now you have scan-to-conversion, not just scan-to-session.
For platforms like HubSpot or Klaviyo, the same UTM values appear in contact records automatically, so every lead created from a QR scan carries its origin story into your CRM.
Step 2: Set Up the Conversion Event Before You Print
This sounds obvious, but it's the step most teams skip. Printing 500 flyers and then realising you never configured a GA4 conversion event is an expensive mistake.
Before any code goes to print or production:
- Fire a test scan from your phone.
- Complete the intended action (form submit, purchase, etc.).
- Confirm the conversion event appears in your analytics platform's real-time view.
- Check that UTM parameters are visible on the resulting contact or order record.
If you're using a dynamic QR code, you can change the destination URL after printing — but you cannot retroactively tag historical sessions. Get the tagging right first.
Step 3: Use Unique Codes Per Placement, Not One Code Everywhere
One of the most effective (and underused) attribution tactics is simple: generate a separate QR code for each physical location or campaign asset, each pointing to a slightly different UTM-tagged URL.
| Placement | utm_content value | Scans | Conversions |
|---|---|---|---|
| Shop window | front-window | 210 | 18 |
| Receipt insert | receipt-insert | 95 | 41 |
| Takeaway bag | bag-sticker | 180 | 12 |
| Loyalty card | loyalty-card | 60 | 34 |
The receipt insert and loyalty card above are doing real attribution work — the bag sticker is decorative. Without separate codes, that insight is invisible.
This is one of the core reasons to use dynamic codes over static ones. The complete breakdown of static vs dynamic QR codes explains the mechanics, but the attribution case alone usually decides the question for anyone running more than one placement.
Step 4: Close the Loop With CRM or POS Data
UTM data lives in your analytics tool. Sales data lives in your CRM or POS. Connecting them closes the attribution loop.
For e-commerce: Your platform (Shopify, WooCommerce) should already capture UTM source on orders if your GA4/pixel is installed correctly. Export orders filtered by utm_source = qr monthly and calculate revenue per campaign.
For service businesses: When a contact books via a QR-driven landing page, tag them in your CRM at the lead stage (e.g., "Source: QR — window sign"). Track that tag through to closed-won. This is the only way to calculate actual revenue per QR placement rather than just leads.
For in-store or event contexts: If you're using a QR code to drive a promo code redemption, the promo code is the attribution. Issue a unique promo code per QR placement and match redemptions to scans in your QR dashboard.
Step 5: Report on Revenue Per Scan, Not Just Scan Counts
Once your tagging and conversion events are working, the metric to report on is revenue per scan (or cost per conversion, if you're running paid placements alongside):
Revenue per scan = Total attributed revenue ÷ Total scans for that code
This puts all your placements on a level playing field regardless of volume. A high-scan code with low revenue per scan is a traffic problem or a landing page problem — both diagnosable. Our deeper look at the six metrics that actually drive QR decisions covers how to layer scan-rate, scan-to-session ratio, and conversion rate together for a complete picture.
If you're unsure which code type or campaign structure gives you the best shot at measurable attribution, the Super QR Code Generator offers dynamic codes with built-in scan tracking that pairs cleanly with UTM-tagged destinations.
Common Attribution Mistakes to Avoid
- Using the same UTM values for every code. You'll see QR traffic in aggregate but can't compare placements.
- Sending scans to your homepage. The homepage rarely has a trackable conversion event. Build or use a dedicated landing page.
- Forgetting mobile behaviour. Many scanners browse, close, return later on desktop. GA4's cross-device reports partially bridge this; UTM data does not persist across sessions by default.
- Measuring only in the first week. Some QR placements — product packaging, menus, signage — accumulate scans over months. Give campaigns at least 30 days before drawing conclusions.
Key Takeaways
- Scan counts without conversion data cannot tell you if a QR campaign is working.
- UTM parameters on destination URLs are the minimum viable attribution setup.
- Use one unique QR code per placement — not one code for everything.
- Set up and test your conversion events before printing any materials.
- Close the loop by pulling UTM source data into your CRM or POS system.
- Report on revenue per scan, not total scans, to compare placements fairly.
