UTM Tags in DOOH QR Codes: Measuring Traffic in 2026
A QR code on a DOOH screen is the cheapest way to measure the effectiveness of indoor advertising. But without UTM tags, scans get lost in your site's overall statistics, and you can't tell "how much traffic came from the screen in Podil versus Pechersk." This article is a practical guide to embedding UTM parameters in a QR code correctly, configuring GA4 so every scan shows up in your reports, and calculating real CPA for each screen.
What UTM tags are and why they're critical in DOOH
UTM (Urchin Tracking Module) is a set of URL parameters that Google Analytics and similar systems use to classify traffic. It looks like this:
https://yoursite.com/landing?utm_source=hostad&utm_medium=dooh&utm_campaign=coffee_gang_may&utm_content=15s_qr
The 5 standard parameters:
- utm_source — where the traffic came from (
hostad,screen_id_18,coffee_gang) - utm_medium — the channel (
dooh,qr,indoor) - utm_campaign — the campaign name (
spring_promo_may,salon_opening) - utm_content — the creative variant (
15s_video,static_v1,with_qr) - utm_term — the keyword (optional, rarely used for DOOH)
Without these tags, all QR-code scans get mixed in with direct traffic, and you can't measure which screen is actually working.
Basic UTM structure for a coffee-shop DOOH campaign
For a campaign across 4 screens in craft coffee shops, you create 4 different QR codes, each with its own UTM:
?utm_source=hostad
&utm_medium=dooh
&utm_campaign=salon_krasy_may
&utm_content=screen_podil_1
?utm_source=hostad
&utm_medium=dooh
&utm_campaign=salon_krasy_may
&utm_content=screen_pechersk_2
Everything is the same, only utm_content changes. After a month of advertising, in GA4 you filter by utm_source = hostad, group by utm_content, and see how many scans each screen produced.
How to configure GA4 for DOOH
1. Make sure medium = dooh isn't filtered as spam
By default, GA4 may ignore non-standard utm_medium values. Under Admin → Property → Data Streams → Web → Configure tag settings → List unwanted referrals, make sure dooh isn't on the blacklist.
2. Create a custom "DOOH performance" report
In Explore → Free form → choose:
- Dimension:
Session source,Session medium,Session campaign,Session manual ad content - Metric:
Sessions,Engaged sessions,Conversions,Total revenue - Filter:
Session medium contains dooh
The report will show all DOOH sessions, broken down by screen and campaign.
3. Add a "Contact form / Call" conversion
Without a conversion, UTM analytics gives you only traffic. A conversion ties traffic to real actions:
- form submission →
form_submitevent - tapping the phone number →
phone_clickevent - calendar booking →
booking_completeevent
All of this is configured in GTM (Google Tag Manager) or directly in your site's code in 30–60 minutes.
How to embed UTM in a QR code
A simple generator takes the final URL with its parameters and produces a PNG/SVG QR code. The best services:
- qrcode-monkey.com — free, offers design customization
- qr-code-generator.com — simple, straightforward
- goqr.me — minimalist, purely technical
A pro tip: don't point the QR at a bare landing page with a 60-character UTM parameter; point it at a short URL via bit.ly or your own redirect (/r/salon-podil), which then redirects to the full UTM URL. This improves scan rate by 15–25%, because the QR code becomes visually simpler.
How to calculate CPA for each screen
Here's an example of a real table after a month-long campaign:
| Screen | Impressions | QR scans | Leads | Budget, ₴ | CPA, ₴ |
|---|---|---|---|---|---|
| Coffee Gang Podil | 42,000 | 187 | 14 | 4,500 | 321 |
| Cava House Pechersk | 38,000 | 213 | 19 | 5,000 | 263 |
| The Kava DC | 31,000 | 98 | 7 | 3,800 | 543 |
| Tihe Mistce | 28,000 | 64 | 4 | 3,500 | 875 |
The conclusion is obvious: the screens in Pechersk and Podil pay off (CPA ₴263–321), while DC and Tihe Mistce don't. Next month you pour budget into the locations that work and look for new spots in the same districts.
How to calculate other DOOH metrics is covered in our breakdown of the 7 metrics for outdoor advertising effectiveness.
5 common mistakes with UTM in DOOH
1. The same utm_content for all screens. You lose the breakdown by location. Always use a separate utm_content for each screen.
2. UTM only on the home page. It's more effective to put the UTM on a dedicated landing page tied to the offer on the creative. Conversion is 2–3 times higher.
3. Forgetting utm_campaign. Without it, all your DOOH campaigns blend into one report. Good hygiene: one real campaign — one unique utm_campaign.
4. UTM in UPPERCASE. Google Analytics is case-sensitive: Hostad and hostad are different sources. Always lowercase only.
5. Not testing the QR code physically. Before loading the creative onto 4 screens, scan the QR from 3 different phones. In 10% of cases the QR won't read due to contrast, size, or a poor background.
How HostAd helps with analytics
HostAd renders the QR code into your creative automatically, tied to a unique token for each location. This means that even if you forgot to set a separate utm_content for each screen, in the HostAd dashboard you can still see how many scans went through each location's token.
The mapping of token → screen → district → date → number of scans is available in real time — this gives basic attribution even for advertisers who haven't set up GA4 yet.
How this works technically is covered in our guide to QR in DOOH advertising.
Conclusion
UTM tags in a QR code aren't a "nice bonus" — they're the basic hygienic minimum for any DOOH campaign. Without them, you pay for advertising and don't know which screen actually works. With them, in 30 days you get a clear CPA report for each location.
If you're planning to launch a DOOH campaign in Kyiv coffee shops, on the HostAd map you can immediately pick screens in the district you want, get a ready-made QR with a unique token for each location, and measure every scan with no extra setup.