How do you measure billboard ROI on a small budget?

Give each billboard or poster its own QR code, then follow four numbers: cost per scan, scan-to-visit rate, visit-to-customer rate and what a customer is worth. Multiply them out and you get cost per customer and return per placement, which is enough to decide what to renew.

By Daniel Zaremba, founder of BetterQR · Updated

What does billboard ROI actually mean for a small business?

Billboard ROI is the profit a placement brought in, minus what it cost, divided by what it cost. Big brands estimate it with footfall panels, brand-lift surveys and media-mix models. A small business doesn't need any of that. You need to know, for each placement, roughly how many customers it produced and whether those customers were worth more than the rent on the site.

That is answerable with a QR code per placement, a tagged landing page and a simple way of catching people who buy offline. It won't capture everyone who saw the board and remembered your name later, so treat the result as a floor: the placement did at least this well.

Which four numbers do you need?

Every placement can be broken into four steps. Each one has its own source of data, and each one tells you something different when it goes wrong.

NumberHow to work it outWhere the data comes fromWhat a bad number tells you
Cost per scanPlacement cost ÷ scansYour invoice and the QR code's scan countThe site, the code size or the call to action is weak
Scan-to-visit rateLanding page visits ÷ scansGA4 sessions with the placement's UTM tagsThe page is slow, broken on mobile or not what people expected
Visit-to-customer rateCustomers ÷ visitsOrders, bookings or sign-ups tagged to that placementThe offer or the page doesn't convince people
Customer valueGross profit per customer over a set periodYour till, shop or accounting dataThe placement attracts low-value or one-off buyers

From these you get two headline figures. Cost per customer is placement cost ÷ customers. ROI is (customers × customer value − placement cost) ÷ placement cost. A positive ROI means the placement paid for itself on the customers you could trace.

If you want to run your own numbers rather than follow along, the campaign ROI calculator does the arithmetic for you.

How do you set up tracking before the boards go up?

  1. One dynamic QR code per placement. A shared code tells you the campaign worked, not which board did the work. Name each code after the site, for example bus-shelter-high-st-north.
  2. UTM tags on each destination. Use the same utm_campaign for the whole flight and a different utm_content per placement, so GA4 splits visits and conversions by site. The UTM and GA4 guide has a naming scheme you can copy.
  3. A conversion event in GA4. Mark the purchase, booking or form submission as a key event, otherwise you can count visits but not customers.
  4. An offline catch. Decide now how you'll count people who scan, then buy in person or by phone. The next section covers the options.
  5. A cost sheet. Write down the full cost of each placement: site rental, printing, posting and design if it was specific to that site. ROI on rental alone flatters the result.

With BetterQR, dynamic codes record scans over time per code, UTM parameters can be added to each destination, and codes can be grouped into a campaign so placements sit side by side. Location and device breakdowns are on the Business plan and up.

How do you count customers who buy offline?

Plenty of people scan a poster, look at the page and then walk into the shop or ring you. Those sales never reach GA4. There are three cheap ways to catch most of them, and they work best combined.

A promo code per placement

Put a different code on each landing page, such as BUS10 for the bus shelter and LIB10 for the library noticeboard. Staff enter it at the till, or the customer types it at checkout. Count redemptions per code at the end of the flight. Keep the codes on the landing page rather than the poster itself, so a redemption proves the person scanned.

"How did you hear about us?"

Add the question to your booking form, checkout or the counter. Offer a short list that names your placements in plain words ("the poster at the station", "a leaflet through the door") plus "Other". It is less precise than a promo code, but it also catches people who saw the board and never scanned.

A landing page form

If the next step is a call or a quote, put a short enquiry form on the landing page instead of just a phone number. Each submission carries the placement's UTM tags, so you know which board produced the lead, and you can mark it as won later.

What does a fully worked example look like?

The numbers below are made up to show the method. Say a café runs three placements for two weeks: a bus shelter poster for £450, a poster in a local gym for £150, and 2,000 flyers through doors for £300 including printing and delivery. Each has its own QR code and UTM tags.

Hypothetical two-week results for three placements
PlacementCostScansVisitsCustomersCost per scanCost per customer
Bus shelter£450300270 (90%)9 (3.3%)£1.50£50
Gym poster£1506054 (90%)3 (5.6%)£2.50£50
Flyers£300120110 (92%)2 (1.8%)£2.50£150

On cost per scan alone, the bus shelter looks like the clear winner. On cost per customer, the bus shelter and the gym poster are level at £50, and the flyers are three times worse. That is why you shouldn't stop at scans.

Now add customer value. Say an average first order is £40 at a 50% margin, so £20 gross profit. Say also that a typical new customer comes back often enough to be worth £90 in gross profit over 12 months.

Hypothetical ROI for each placement on first order and 12-month value
PlacementROI on first order (£20 each)ROI on 12-month value (£90 each)Break-even customers
Bus shelter£180 vs £450: −60%£810 vs £450: +80%5
Gym poster£60 vs £150: −60%£270 vs £150: +80%2
Flyers£40 vs £300: −87%£180 vs £300: −40%4

Break-even customers is placement cost ÷ 12-month value, rounded up. Judged on first orders, nothing pays. Judged on what a customer is worth over a year, the bus shelter and the gym poster return 80% and the flyers lose money.

Finally, add the offline catch. Say the bus shelter's landing page promo code was redeemed at the till 6 times by people who never ordered online. The bus shelter now has 15 customers, a cost per customer of £30 and a 12-month ROI of 200% (£1,350 against £450). Offline sales often change the ranking, which is why the promo code is worth the effort.

Why are visits lower than scans?

Expect visits to be a little below scans. Some people scan and close the page before it loads, some phones block analytics, and visitors who decline cookies may not be counted by GA4 at all. A gap of 10% or so is normal. If visits are well under half of scans, check that the landing page loads quickly on mobile data and that the UTM tags survive any redirects on your site.

When is a placement worth renewing?

Renew a placement when its cost per customer is comfortably below what a customer is worth to you, and when that result rests on more than a handful of customers. A simple checklist:

  • Cost per customer is below customer value over the period you are willing to wait for payback. If you need the money back within a month, use first-order profit, not 12-month value.
  • The number isn't resting on two or three sales. One extra customer either way moved the gym poster's cost per customer from £50 to £38 or £75. Run a second flight before you sign a long contract.
  • Scans held up over the flight. If most scans came in the first few days and then dried up, the same people walk past every day. A fresh design or offer may help more than renewal.
  • It beats your other channels. Compare cost per customer with what you pay for a customer from search ads, social ads or leaflets. Outdoor only needs to win on its own terms if you have nowhere better to spend the money.

When a placement loses, a dynamic code lets you test a different landing page or offer before you give up on the site, because you change the destination rather than reprinting the board. Poster A/B testing covers how to compare versions fairly.

What doesn't this method capture?

QR tracking measures direct response: people who acted on the poster. It misses people who saw the board and later searched for you by name, walked past and came in, or told a friend. Two cheap ways to get a feel for that extra effect: watch branded search volume and direct website visits in the areas near your boards during the flight, and keep asking "how did you hear about us?" Neither is precise, so treat them as a hint that your QR-based ROI is an underestimate, not a number to add on top.

See cost per scan for every placement

Give each billboard, poster or flyer drop its own dynamic QR code and compare them side by side.

ICO registration ZA921111 (opens in new tab)