How do I track QR code scans from each billboard?
Give every billboard its own dynamic QR code, name each code after the site, and compare scans per site in your QR code dashboard. One shared code across all your billboards tells you the campaign total, but not which board did the work.
By Daniel Zaremba, founder of BetterQR · Updated
Why does every billboard need its own QR code?
A QR code can only report where it was scanned from if it exists in one place. Print the same code on five boards and you get one number: 340 scans, say, with no way to tell whether they came from the busy high-street site or were spread evenly across all five. Give each board its own code and you get five numbers you can compare with each site's cost.
Location data from the phone doesn't fix this. Scan location is estimated from the phone's IP address, which usually resolves to a town or city, not a street corner. Two boards a mile apart will often show the same city. The code itself is the only reliable placement label.
Should billboard QR codes be static or dynamic?
Dynamic. A static code encodes the final web address, so the only way to count scans is to read your website analytics, and the only way to change the destination is to reprint. A dynamic code encodes a short redirect link. Each scan passes through the redirect, which counts it, records the time and device, and sends the person on to the landing page you've set.
| Static code | Dynamic code | |
|---|---|---|
| Scans counted | No (only website visits, if tagged) | Yes, every scan |
| Change destination after printing | No, reprint | Yes |
| Pattern density | Grows with URL length | Fixed, short link |
| Keeps working if the landing page moves | No | Yes, repoint it |
| Cost | Free | Paid plan |
Being able to repoint matters more on billboards than anywhere else. A board can stay up for weeks after a campaign's landing page has been taken down; with a dynamic code you can send late scanners to your current offer instead of a 404.
How should I name billboard QR codes?
Use one naming pattern for every code, and use the same words in the code's name and its UTM tags so your QR dashboard and Google Analytics line up. A pattern that works for most small campaigns is campaign_format_site, all lowercase, hyphens inside each part.
| Code name | Placement | utm_content |
|---|---|---|
spring-26_48sheet_a40-westbound | Roadside 48-sheet, A40 | 48sheet-a40-westbound |
spring-26_6sheet_high-st-north | 6-sheet, High Street north | 6sheet-high-st-north |
spring-26_shelter_station-rd-stop-c | Bus shelter, Station Road stop C | shelter-station-rd-stop-c |
spring-26_window_shop-front | Own shop window | window-shop-front |
Put anything you'll want to filter by into the name: format, area, media owner or creative version. Add the media owner's site reference if they gave you one, so you can match your report to their proof of posting. The UTM and GA4 guide covers the full tagging scheme.
How do I set up tracking for a billboard campaign?
- Export the media plan to a spreadsheet: one row per site, with the site name, format, address, start and end dates and cost.
- Add a column for the code name, using your naming pattern, and one for the landing page with UTMs.
- Create one dynamic code per row. In BetterQR you can bulk upload the spreadsheet so each row becomes its own labelled code, and group the codes into a campaign.
- Download each code as SVG or EPS for large-format print (vector files are on Pro and up) and send each one to the printer with the matching site reference in the filename.
- Size the code for the viewing distance; see billboard QR code size.
- Before the artwork is signed off, scan every code from a printed proof, and check it lands on the right page. The QR code tester checks an image file.
- On posting day, scan each code on site once and note the time. That confirms the right code went on the right board.
The most common real-world failure is a printer or poster crew putting artwork on the wrong site. Filenames that include the site reference, and a test scan on posting day, catch it before it ruins the data.
What does a billboard scan report show?
A dynamic code's report counts scans as they happen. In BetterQR every dynamic code on Pro shows:
- Total scans and unique visitors over the period you pick
- Scans over time, so you can see the effect of posting day
- A device breakdown
Business and up adds:
- Active hours and scans by day of the week
- Approximate location by country and city
- Operating system and browser
- The UTM source, medium and campaign each scan carried
Codes grouped into a campaign can be compared side by side. The OOH advertising page shows the placement view.
What should I compare between billboards?
Raw scan totals mislead because sites differ in cost, size and how long they're up. Compare rates instead.
| Metric | How to work it out | What it tells you |
|---|---|---|
| Scans per day | Scans ÷ days the site was live | Response when posting dates differ |
| Cost per scan | Site cost ÷ scans | Which sites are cheap to get a response from |
| Scan-to-visit rate | GA4 sessions ÷ scans | Whether the landing page loads and holds people |
| Cost per customer | Site cost ÷ conversions | The number to take into the next media buy |
| Peak hours | Scans by hour of day | When the audience at that site is receptive |
A worked example: say board A cost £600 for two weeks and got 120 scans, and board B cost £250 and got 70. Board A has more scans, but its cost per scan is £5.00 against board B's £3.57. If both sent the same share of scanners on to buy, B is the better buy. The campaign ROI calculator runs this for your own numbers, and how to measure billboard ROI goes further.
Small numbers are noisy. A difference between 12 and 9 scans means little; a difference between 120 and 40 usually means something. If sites are close, run them again or compare across more weeks before you cut one.
What mistakes break billboard scan tracking?
- One code across every site. You get a campaign total and nothing to compare. This is the most common mistake and can't be fixed after printing.
- Static codes. No scan count, and a typo in the URL means reprinting. If the URL is long, the code is also denser and harder to scan from a distance.
- Free dynamic trials that expire. Some generators deactivate dynamic codes when a trial ends, and the board keeps showing a dead code. See QR codes that don't expire.
- Codes too small for the distance. A code people can't scan from the pavement records zero, which looks like a bad site rather than a bad code.
- No reason to scan. A bare code next to a logo gets few scans. Say what the scan gives: a discount, a booking, a map.
- Inconsistent names.
HighSt,high-streetandhigh_stbecome three rows in GA4. Pick one form and use it everywhere. - Testing on screen only. A code that scans from a laptop screen may not scan at 1:10 scale from across the road. Test the printed proof.
Can I track roadside billboards seen from a car?
Rarely well. Drivers shouldn't scan, and passengers get a few seconds at speed. QR codes work on billboards where people are on foot or waiting: high streets, station approaches, car parks, bus stops. On roadside sites, pair the board with a short, memorable URL or a discount code, and track that instead.
Quick checklist
- One dynamic code per site
- Names follow
campaign_format_site, lowercase - UTMs on each destination, matching the code name
- Site reference in every artwork filename
- Printed proof scanned from the real distance
- One test scan per site on posting day
- Compare cost per scan and cost per customer, not raw totals
Related
- OOH attribution for small brandsHow small brands measure billboards, posters and flyers: one QR code per placement, UTMs into GA4, and a simple cost-per-scan comparison.
- QR code UTM + GA4 setupTag every printed QR code with UTMs so GA4 attributes visits and conversions to the right poster, flyer or billboard. Naming scheme included.
- Billboard QR code sizeHow big a QR code needs to be on a billboard, poster or bus shelter, using the 10:1 distance rule, with a size table and placement tips.
- Campaign ROI calculatorWork out cost per scan, cost per customer and ROI for a billboard, poster or flyer campaign from your own numbers. Free, no sign-up.