Marketing campaigns

Attribute offline marketing with one QR code per placement

If two placements share a QR code, you cannot tell which one drove the scan. Generate a separate code for every physical location or ad unit, name it for where it lives, and read the scan data as directional evidence, not proof of a sale.

Marketing teams already know not to run one UTM link across five channels. The same discipline applies to QR codes: the code is the tracking unit, so it has to map one-to-one with a placement you can act on independently.

Why one code per placement, not per campaign

A campaign usually runs across several physical or digital placements at once: a bus shelter poster, a direct mail insert, a magazine ad, a shop window. If all of them carry the same QR code, the scan count tells you the campaign got attention somewhere, but not which placement earned its budget.

Issue a distinct code per placement instead. The destination page can be identical across all of them — same landing page, same offer — because the code, not the URL text, is what's doing the tracking.

A naming convention that survives a busy quarter

  • Structure names as placement-location-date: "busshelter-highstreet-oct" beats "QR3" once you have thirty codes running.
  • Keep a shared spreadsheet mapping code name to physical location and installation date, separate from the QR tool itself. When a placement comes down, note the date there.
  • Reuse the same naming pattern across teams so a scan report from three months ago is still legible without asking who set it up.

Print vs digital-out-of-home

Print (flyers, posters, mailers)Digital-out-of-home (screens, billboards)
Lead timeDays to weeksOften changeable same-day
Cost of a mistakeHigh — reprint or reprint runLow — swap the creative file
Typical dwell timeSeconds to minutes (mail, leaflet)Seconds (drive-by, transit)
Code size neededDepends on read distanceLarge — scan distance is long and often from a moving position
Best use of a dynamic codeAvoiding a reprint if the offer changesSwapping the destination between dayparts or audiences

Connecting an offline scan to an online result

The scan record shows you time, coarse location, device and referrer — the same signals you'd expect from any short-link click. It does not know who scanned, and it does not know what they did after the redirect unless your destination page has its own analytics or conversion tracking.

To connect a scan to a result, land the code on a page with a clear, trackable next step: a form, a discount code entry, a booking widget with its own analytics. Then you can say "this placement generated N landing page views" and, if the landing page tracks conversions, "and M of those converted."

What a scan number does and does not prove

  • It proves someone's phone camera pointed at that code and their browser opened the link. It does not prove they read the ad, understood the offer, or intended to buy anything.
  • A high scan count on a low-traffic placement is a stronger signal than the same count on a high-traffic one — normalize by estimated impressions or footfall where you can.
  • Multiple scans from the same rough location and short time window are often the same person trying again, not multiple people.
  • A scan with no further action on the landing page is still useful data: it tells you the code and placement work, even if the offer didn't land.

Practical setup for a launch

  1. 01

    List every placement

    Write down each physical or digital spot the campaign will appear before generating anything.

  2. 02

    Create one code per placement

    Name each one for its location, not for the campaign as a whole.

  3. 03

    Point them at the campaign landing page

    Destinations can be identical; the code is what separates them in your reporting.

  4. 04

    Check scans against install dates

    Compare scan timing to when each placement actually went live, since delivery schedules slip.

  5. 05

    Re-point or retire at the end

    When the campaign ends, either point the code at a successor offer or retire it so late scans don't land on a dead promotion.

Common questions

Should every ad placement get its own QR code?
Yes, if you want to know which one performed. A shared code across placements only tells you total scans, not which location or medium drove them.
Can a QR scan prove a sale happened?
No. A scan record shows the redirect happened, not what the person did afterward. Pair the code with a landing page that has its own conversion tracking if you need that link.
What should I name my campaign codes?
Something that describes the physical placement and rough date, like "mailer-northregion-nov", rather than a generic campaign name, so reports stay readable months later.
Can I reuse a QR code across two different campaigns?
You can re-point the destination, but keep in mind old printed material carrying that code will also follow the new destination. Retire codes tied to specific print runs instead of reusing them.
Does digital-out-of-home need a different code strategy than print?
The attribution logic is the same, but screens let you change the destination and creative same-day, so it's worth re-pointing codes between dayparts or audiences rather than leaving one static offer up.

Keep reading

Print once. Change the destination anytime.

Create a free account, generate your code and edit where it points whenever you need to.