Print advertising has one stubborn problem: you cannot tell who responded. You run a flyer campaign, distribute 5,000 mailers, and your only measure of success is whether the phone rang more often that week.
A QR code marketing campaign solves that problem - but only when set up correctly. A QR code with UTM parameters turns every print placement into a trackable digital touchpoint. You see exactly which flyer version worked, which location drove traffic, and which placement should scale. This guide covers the full setup, from building your first tagged URL to reading results in Google Analytics 4.
Why Marketers Use QR Codes in Campaigns
A standard URL QR code sends a scanner to a webpage. A UTM-tagged URL QR code sends a scanner to the same webpage - but also tells Google Analytics exactly where they came from. Without UTM tags, every scan that leads to a website visit looks identical: direct traffic. You cannot compare your flyer against your poster against your mailer. You cannot optimize what you cannot measure.
QR codes are the only practical way to add tracking to physical print materials and offline QR code advertising. A flyer cannot carry a tracking pixel. A poster cannot set a cookie. A QR code combined with UTM parameters is as close as print gets to digital analytics - and it costs nothing to set up.
The Rule: One QR Code Per Channel Per Campaign
This is the single most important strategy decision in a QR-based marketing campaign. Most marketers create one QR code and use it everywhere - the same code on the flyer, the poster, the mailer, and the event handout. That approach produces data you cannot act on. "The campaign got 340 scans" tells you nothing about what to scale.
The correct approach: one unique QR code per placement. Each code points to a different UTM-tagged URL.
| Placement | utm_source | utm_medium | utm_campaign |
|---|---|---|---|
| Window poster | store-window | qr | winter-sale |
| Direct mail flyer | mailer | qr | winter-sale |
| Magazine ad | magazine-name | print | winter-sale |
| Event handout | trade-show | qr | winter-sale |
With this structure, GA4 shows you not just how many scans the campaign got - but which placement drove the most conversions, so you know where to put the next campaign's budget.
How to Create a Trackable Marketing QR Code in 5 Steps
Creating a trackable campaign QR code takes five steps: build your UTM URL, generate the code, brand it, download the right format, and test before printing. Each step is covered below.
Step 1 - Build Your UTM-Tagged URL
Go to the UTM Builder tool and fill in:
- Website URL: the landing page for this campaign - your sale page, product page, or sign-up form
- Campaign Source: the placement (
flyer,poster,mailer) - Campaign Medium: the channel (
qr,print,ooh) - Campaign Name: the campaign identifier (
winter-sale,grand-opening)
The tool generates a complete URL with all parameters appended. Copy it for the next step.
Step 2 - Generate the QR Code
Go to the free QR code generator and select the URL tab. Paste your UTM-tagged URL into the field. The QR code generates live in the preview as you type.
UTM parameters make your URL longer, which increases QR code density. Keep source and campaign values short - use mailer not direct-mail-autumn-2026 - and test scannability before committing to print.
Step 3 - Brand the Code for the Campaign
Apply your brand colors to the QR code foreground and upload your logo if the campaign materials use one. Keep contrast high: dark modules on a light background scan most reliably. For seasonal campaigns, a code colored to match the campaign palette - red for a holiday sale, green for a spring promotion - increases visual recognition and perceived quality on premium print materials.
Step 4 - Download the Right Format per Medium
| Print medium | Recommended format |
|---|---|
| Flyers (small print runs) | PNG at 1000px minimum |
| Professional offset or digital press | SVG |
| Billboards and large format | SVG |
| Digital screens and social ads | PNG |
| Newspapers and magazines | SVG |
SVG is vector-based and scales to any size without quality loss. For anything going to a professional printer or appearing larger than a business card, download SVG.
Step 5 - Test Before the Print Run
Scan the final QR code from both an iPhone and an Android device. Confirm three things:
- The code scans cleanly with no failed reads
- The correct landing page opens
- UTM parameters appear in the browser address bar after scanning (
?utm_source=...)
If UTM parameters are missing from the URL, the destination has a redirect stripping them before the page loads. Fix the landing page redirect or host the UTM URL directly. Approve the print run only after all three checks pass on both phone types.
Where to Use Campaign QR Codes
Each placement works best with a specific QR code size and contrast level. Below are the seven most effective offline marketing placements, each with the recommended UTM source value and minimum print size.
- Flyers and leaflets (
utm_source=flyer) - Minimum 3 x 3 cm. Place on the front. Add a label: "Scan to claim your offer." - Direct mail (
utm_source=mailer) - Your highest-intent offline channel. Recipients who scan are pre-qualified. Place at the bottom with a specific CTA. - Posters and window displays (
utm_source=poster) - Minimum 5 x 5 cm for arm's-length scanning. Never display without a CTA label above the code. - Out-of-home and billboards (
utm_source=billboard) - Minimum 15 cm. Use high contrast and Error Correction Level H for codes scanned at distance. - Magazine and newspaper ads (
utm_source=magazine-name) - SVG only. Include the destination URL in small text below the code as a fallback. - Event programs and handouts (
utm_source=event-name) - Highest scan rate environment. Include a reason to scan now: "Scan for the exclusive post-event discount." - Packaging inserts (
utm_source=packaging) - Every fulfilled order is a campaign touchpoint. See the social media QR guide for packaging-specific placement tips.
How to Read Your Campaign Results in Google Analytics 4
GA4 shows each UTM-tagged placement as a separate row once scans start arriving. Here is exactly where to find the data and what to look at first.
- Open GA4 and go to Reports → Acquisition → Traffic Acquisition
- Change the primary dimension to Session source / medium
- Filter by your campaign: type your
utm_campaignvalue in the search bar
Each QR placement appears as a separate row. Compare session count, engagement rate, and conversions across rows. High session count with low engagement rate means the placement attracted scans but the landing page did not convert - a landing page problem, not a QR problem. To group all placements by campaign name, change the primary dimension to Session campaign.
A/B Testing With QR Codes (Without a Subscription)
Most marketers assume A/B testing print materials requires a paid dynamic QR platform. It does not. You can run controlled print tests for free using UTM parameters and GA4.
Create two versions of a flyer with one variable changed (headline, image, or offer). Assign a different UTM-tagged QR code to each version using the utm_content parameter:
- Version A:
utm_content=headline-v1 - Version B:
utm_content=headline-v2
Distribute both in the same area in equal quantities. After two weeks, compare the utm_content values in GA4 under Traffic Acquisition. The version with more goal completions per session wins. This gives you data at the same precision as a paid platform - because the tracking lives in GA4, not in the QR code.
5 Mistakes That Ruin a QR Code Marketing Campaign
These five errors account for the majority of failed campaigns. Each one is avoidable with a two-minute check before the print run.
- No UTM parameters - Every scan arrives as direct traffic. You cannot attribute the campaign to any result. Always build your URL in the UTM Builder first.
- One code for all channels - Using the same QR on a flyer, poster, and mailer makes it impossible to compare which placement drove results. One placement, one code.
- Printing without testing - A single wrong character in the URL means every scan on the print run fails silently. Test from two phone types before approving production.
- Wrong download format - Sending a PNG to a print shop that scales it up produces a pixelated code that fails to scan. Use SVG for all professional print jobs.
- No CTA label - A bare QR code without text gets ignored. "Scan for 20% off today" outperforms an unlabeled code on every print medium tested.
Build your first trackable campaign QR code now. Start with the UTM Builder to create your tagged URL, then generate the QR code in under 60 seconds - no account needed, no expiry date on the codes.