Your packaging is already a sales channel
Every carton you print is a paid impression you've already bought. Most brands measure none of them, and can't sell from any of them. That's a strange place to have ended up.
A brand doing 400,000 units a year through retail generates 400,000 moments in which a person is holding the product, has a phone in the other hand, and has already decided they like it. No paid channel delivers intent like that at any price. Almost none of it is measured, and for most brands none of it is shoppable.
The media you already own
Think of your printed and physical surfaces the way a media planner would think about inventory: reach, context, and what a person is capable of doing in the ten seconds after they see it.
| Surface | What the moment is | The job a scan should do |
|---|---|---|
| Primary pack — can, bottle, box | Already bought it, currently enjoying it | Reorder in two taps. The highest-value job on this list. |
| Shipper / outer carton | Unboxing, at home, alone | Reorder, or register for the loyalty balance they just earned. |
| Shelf-edge and window | In store, deciding, or outside after closing | Buy the variant that isn't stocked; buy at 11pm when the shop is shut. |
| On-trade: coasters, menus, table talkers | Drinking it right now, relaxed, phone on the table | Take a case home. This is the highest-conversion context most drinks brands never use. |
| Events and festivals | Tried it, liked it, can't carry it | Ship it to them. Solve the "I can't take this home" problem. |
| Out-of-home and billboards | Seconds of attention, hands free | One product, one price, one tap. Anything more is wasted. |
| Video and streaming | Second screen already in hand | The thing on screen, purchasable while it's on screen. |
| Labels and hang-tags | In hand, in a fitting room, at a market | The size that isn't in stock; the colour that is. |
| Per-unit serialised codes | Authenticity, provenance, warranty | Verify it's genuine, then register it — and now you know who owns it. |
Two things stand out when you lay it out like this. First, every row is a moment you already pay for — the print run, the stand, the sponsorship, the media buy. Adding a route to checkout is close to free at the margin. Second, the jobs are all different. A billboard scan and a coaster scan want completely different destinations, which is the single most common reason these programmes underperform.
The most expensive mistake in scannable packaging is pointing every code at the homepage.
The arithmetic, honestly
Everyone wants a number. The honest answer is that scan rates vary enormously with placement, promise and category, so a single number would be a fiction. What's useful instead is the shape of the sensitivity — which inputs actually move the outcome.
Illustrative model — not a customer result
Inputs: 400,000 units shipped a year · average order value £28 · a code on the primary pack pointing to a reorder flow. Everything below is arithmetic on those inputs and the row/column values shown. No Forage customer's data is used here, and none of these figures should be read as a benchmark or a forecast. The point of the table is the spread, not any single cell.
| If this share of units gets scanned… | …and 5% of scans buy | …and 10% buy | …and 20% buy |
|---|---|---|---|
| 0.5% (2,000 scans) | £2,800 | £5,600 | £11,200 |
| 1.5% (6,000 scans) | £8,400 | £16,800 | £33,600 |
| 3% (12,000 scans) | £16,800 | £33,600 | £67,200 |
Three observations that matter more than the cells:
- The revenue is not the interesting output. Even the best cell here is a modest line for a brand shipping 400,000 units. Read the middle row again: 6,000 scans, of which 600 buy. A scan on its own is anonymous — a camera opening a web page tells you nothing about who is holding the can. But those 600 buyers are identified first-party customers acquired at a marginal cost of approximately zero, most of whom you would otherwise never have known existed because a retailer owns the transaction. (Marketing consent is a separate ask at checkout, and only some of them will give it.) That asset compounds; the £16,800 doesn't.
- Scan rate and conversion move independently, and you influence them with different levers. Scan rate is a design and copy problem — placement, promise, print size. Conversion is a speed and checkout problem. Teams routinely try to fix a scan-rate problem by redesigning the store.
- Cannibalisation is real and you have to model it. Some share of these orders would have happened anyway, in retail, at a lower margin to you but at zero acquisition cost. If you don't decide in advance how you'll estimate that, someone in finance will decide for you, less generously. We wrote about how to measure cannibalisation before you print.
What makes a code get scanned
Scan rate is not a property of QR codes. It's a property of what you promised and how easy you made it. Cameras stopped being a barrier years ago; a bad scan rate is now almost always a design failure.
The last point deserves its own paragraph, because it's the one that costs the most to get wrong. Print is permanent; your catalogue isn't. A code that resolves to a fixed product URL becomes worthless the day that SKU is discontinued, renamed or restocked — and you'll have 400,000 of them in the wild. The destination has to be a redirect you control, so that the same physical code can point at a reorder flow in January, a limited edition in June, and a replacement SKU in December.
If you're using Apple's App Clip Codes specifically, note that the URL you encode affects scan reliability at small sizes — shorter is better, and packaging is exactly where that bites.[5]
Where the scan should land
The scan is the easy half. What arrives in the next two seconds decides everything, and it's where most of these programmes quietly die.
- The product, not the shop. The person is holding the thing. Show them that thing, with its price, and a wallet button. A homepage asks them to find it again, and they won't.
- No account, no app. Forced account creation is one of the most-cited reasons for abandoning a checkout, named by 18% of abandoners.[1] At a bus stop, it's higher.
- Fast, and then faster. A tenth of a second of mobile speed was associated with 8.4% higher retail conversion across 30 million sessions.[3] A scan is the most latency-sensitive traffic you'll ever get: there's no bookmark, no back button, no second visit.
- The wallet, ready. Digital wallets were 56% of global online spending in 2025.[4] The person scanning your can already has one configured, which is why one-tap checkout is already the default. Use it.
- Both runtimes. On iOS an App Clip can run without an install; on Android there is no longer an install-free native option at all, so the web path has to be excellent. The details are in App Clips, explained for Shopify brands.
The conversation with your retailer
This is the objection that kills more packaging projects than any technical constraint, and it rarely gets written about, so: yes, your retail and distribution partners may have views about a code on your pack that sells direct.
Some ways brands navigate it, roughly in order of how well they tend to go down:
- Sell what the retailer doesn't stock. The variety pack, the limited edition, the size that never got a listing, the merch. You're not competing; you're extending the range.
- Sell the case, not the unit. Nobody's grocery buyer worries about a 24-pack subscription. That's a different occasion.
- Route by context. A code can resolve to "find a stockist near you" in the territories where that's the deal, and to a checkout everywhere else. Same code, different destination — which is another reason the destination has to be dynamic.
- Give the data back. Scan density by region is genuinely useful to a retail partner, and offering it converts a threat into a joint programme.
- Start on surfaces they don't own. Events, on-trade, DTC shippers and your own channels have none of this politics. Prove the mechanic there, then have the conversation with evidence.
"Nobody scans QR codes"
The strongest form of this objection isn't that the technology doesn't work — cameras handle it natively and people scanned their way through several years of restaurant menus. The strongest form is: codes on packaging have a track record of disappointing, and I've seen it happen.
That's fair, and worth being precise about why. In our experience the disappointments have a consistent anatomy: a code with no stated benefit, at 12mm, on a curved gloss surface, resolving to a slow homepage with a cookie banner, with no way to change the destination afterwards. Every one of those is a decision someone made, and every one is fixable before the print run rather than after.
The honest caveat in the other direction: a code will not rescue a product nobody wants to buy again. This mechanic multiplies existing demand. If your repeat-purchase rate is near zero for reasons of product or price, start there instead.
Where to start
Pick one surface, not nine
The highest-intent one you fully control. For most CPG brands that's the outer carton on DTC orders or an on-trade coaster — no retailer politics, fast to produce, quick to read a result from.
Decide the one job
Reorder, or acquire the contact, or verify authenticity. One. A code that tries to do three things converts on none of them.
Write the promise before you generate the code
Five words, above the code, describing what happens. If you can't write it, the code isn't ready.
Build the destination first, and time it
On a real phone, on cellular, cold. If it isn't fast, nothing after this matters.
Agree the measurement before you print
Which units get codes, which don't, what you'll compare, and how you'll treat cannibalisation. Retrofitting this is how good results become unpersuasive ones. Here's the measurement design we'd use.
Sources
- Baymard Institute, Cart Abandonment Rate Statistics — 18% of shoppers who abandoned during checkout cite required account creation as a reason; the survey excludes the "just browsing" segment and permits multiple answers, so shares are reason-weights among abandoners, not shares of all buyers. Primary ↩
- Deloitte with Google, Milliseconds Make Millions — 30m sessions, 37 brands. Observational. Primary ↩
- Worldpay / Global Payments, Global Payments Report 2026, Trend 3. Primary ↩
- Apple, App Clips documentation — App Clip Codes, and encoding a URL efficiently for reliable scanning. Primary ↩