QR Code Marketing ROI: How to Measure Campaign Performance

Print a flyer, run a billboard, hand out business cards — and then what? For decades, offline marketing had a measurement problem: you spent the budget, you hoped it worked, and you could rarely prove it. QR codes changed that equation. Every scan is a timestamped, located, device-identified data point. The problem is that most businesses still treat scan counts as the finish line, when they're only the starting gun.
This guide walks through the metrics that actually matter, how to wire up proper conversion tracking, and how to calculate a ROI figure you can defend in front of anyone holding the budget.
Why Most Businesses Can't Measure Offline Campaigns
The classic offline campaign has three blind spots:
- No attribution: a customer sees your poster on Monday and buys on Friday. Nothing connects those two events.
- No segmentation: you can't tell whether the airport banner or the magazine ad drove the sale.
- No iteration signal: without data, the next campaign repeats the same guesses as the last one.
A QR code closes all three gaps — but only if it's a dynamic code pointing to a trackable destination. A static code printed with a bare URL gives you nothing back. If you're still generating static codes for campaigns, that's the first thing to fix before any measurement discussion makes sense.
The 5 QR Metrics That Actually Matter
Scan volume is a vanity metric on its own. Here's the hierarchy that experienced teams use:
- Unique scans — total scans minus repeat scans from the same device. This is your real reach.
- Scan-through rate (STR) — unique scans divided by estimated impressions. A poster seen by 5,000 people that generates 150 unique scans has a 3% STR, which is solid for street-level placement.
- Post-scan conversion rate — the percentage of scanners who complete the action you wanted: purchase, signup, download, booking.
- Time-to-scan distribution — when people scan relative to campaign launch. A long tail means your placement has durable value; a sharp spike means the placement is event-dependent.
- Location and device split — which physical placements pull their weight, and whether your landing page matches the devices actually scanning it.
The first two measure your print performance. The third measures your landing page. Mixing them up is the most common analysis mistake: a low conversion rate with a high STR means your code works and your page doesn't.
Setting Up Conversion Tracking
Here is the minimal viable tracking stack, in order:
- One dynamic QR code per placement. Not per campaign — per placement. The bus stop and the store window get different codes pointing to the same page. This is what makes location comparison possible.
- UTM parameters on every destination URL. Set
utm_source=qr,utm_medium=print, and a distinctutm_campaignandutm_contentper placement. Your analytics platform then attributes downstream conversions automatically. - A conversion event on the landing page. Purchase, form submit, app install — define one primary event and track it in your analytics tool.
- Scan analytics from your QR platform. Your QR code generator records the scan-level data (time, city, device) that web analytics never sees, because it happens before the page loads. See the full QR code analytics guide for what each dimension tells you.
With this setup, the funnel reads cleanly: impressions → scans (QR platform) → sessions (web analytics) → conversions (event tracking). Each stage has an owner and a number.

Benchmarks: What "Good" Looks Like
Benchmarks vary wildly by placement and incentive, but these ranges hold up across published case data and platform aggregates:
- Restaurant table tents / menus: 25–60% scan rate among seated guests — captive audience, clear value.
- Product packaging: 1–5% of buyers scan, higher when the code promises warranty registration or exclusive content.
- Street posters and flyers: 0.5–3% of estimated impressions.
- Event badges and signage: 10–30%, driven by immediate utility (agendas, contact exchange).
- Direct mail: 2–8%, with strong lift when the code replaces typing a long URL.
Treat these as sanity checks, not targets. Your own placement-vs-placement comparison beats any industry average, which is exactly why the one-code-per-placement rule matters.
Calculating True ROI: The Formula and a Worked Example
The formula is standard; the discipline is in filling it honestly:
ROI = (Attributed revenue − Campaign cost) / Campaign cost × 100
Worked example — a local gym runs a flyer campaign:
- Printing and distribution: $800
- Design time: $200
- Flyers distributed: 10,000
- Unique scans: 240 (2.4% STR — healthy for flyers)
- Trial signups from the QR landing page: 31 (12.9% conversion)
- Trials converting to memberships: 9, at $540 average first-year value = $4,860 attributed revenue
ROI = (4,860 − 1,000) / 1,000 × 100 = 386%
Two honesty rules make this number defensible. First, only count conversions carrying your QR UTM parameters — no "brand lift" hand-waving. Second, use realistic customer value: first-year revenue, not inflated lifetime projections.
Practical Takeaway
Start smaller than you think: pick one existing campaign, replace its static code or bare URL with one dynamic code per placement, and add UTM parameters. Within two weeks you'll know which placements earn their cost — and you'll have your first real ROI figure instead of a guess. From there, every campaign becomes an experiment with a control group, and your print budget starts compounding knowledge instead of burning it.