QR Codes for Consumables: The Replenishment Marketing Playbook for Coffee, Skincare & Supplement Brands
Published July 26, 2026 · MARKETING · 10 min read
A bag of coffee is a 30-day product. So is a jar of moisturizer and a bottle of magnesium. Which means the moment a customer opens the pack, a countdown starts — and most brands have no idea when that moment happened.
A QR code on the packaging fixes that. When a customer scans the code on your bag, lid, or insert, you get a timestamp: this specific person started consuming this specific product on this specific day. That scan date is a consumption clock. Add roughly 25 days and you know, better than any other signal you own, when they're staring at an almost-empty bag.
This article is the playbook for turning that clock into repeat purchases and subscriptions.
Why consumables live or die on the second purchase
Consumable brands don't make money on the first order. Between paid acquisition, discounts, and fulfillment, the first purchase of a $22 bag of coffee often breaks even at best. The business only works if a meaningful share of buyers come back — and the best outcome isn't even a second one-off order. It's a subscription, where lifetime value stops being a guess.
The problem is timing. Email win-back flows fire on a fixed schedule from the purchase date, but a bag bought as a gift, stockpiled during a sale, or left in a cupboard for three weeks makes that schedule fiction. Retarget too early and you're discounting someone who has half a bag left. Too late and they've already grabbed whatever was on the shelf at the supermarket.
The scan date solves the timing problem because scanning is something people do when they start using the product, not when they buy it. That's the signal worth building on.
On-pack QR placement: lid, label, or insert
Where the code lives determines when it gets scanned, which determines what your clock actually measures.
| Placement | When it's scanned | Best for | Watch out for |
|---|---|---|---|
| Under the lid / inside seal | First open — the cleanest "consumption started" signal | Supplements, skincare jars, canned coffee | Needs print inside the packaging; scanned once |
| Front or back label | Any time, including in-store before purchase | Brewing guides, dosage info, repeat reference | Pre-purchase scans add noise to the clock |
| Card insert in the box | During unboxing | DTC-shipped products, starter kits | Inserts get thrown out; one shot only |
If you can only do one, put it somewhere the customer encounters at first use — under the lid, on the seal, on the scoop wrapper. A label QR still works (and it's the only option for retail shelf products), just expect a wider spread in scan timing.
Use a dynamic QR, not a static one. Packaging runs are printed months ahead; a dynamic QR lets you change the landing page, the offer, and the tracking without reprinting a single bag. For a deeper look at on-pack strategy generally, see our guide to QR codes for product packaging.
What goes on the landing page (hint: not just "buy again")
Nobody scans a QR hoping to see a coupon. They scan because they want to know something: how to brew this roast, how much collagen to take, whether the serum goes on before or after sunscreen. Give them that, generously, and the scan rate goes up — which matters, because every scan is a data point for your clock.
Good landing page content by category:
- Coffee: brew ratios for V60, French press, and espresso; grind size chart; roast notes; a 60-second brew video.
- Skincare: application order, AM/PM routine, ingredient explainers, patch-test guidance, what to pair it with.
- Supplements: dosage and timing, with-food-or-without, stacking guidance, what results to expect by week 2 vs. week 6.
Then, below the genuinely useful stuff: a subscribe-and-save block. Not a popup, not the hero. The page earns attention with value first; the offer is there when they're ready. This is the same principle behind every good QR retargeting setup — the scan page you control is the instrumentation point, so make it a page worth landing on.
The replenishment retargeting playbook
Here's the full setup, step by step. It assumes Meta, but the logic ports to TikTok and Google.
- Create one dynamic QR per SKU. Not one per brand — one per product. "Midnight Roast 250g" gets its own code, "House Blend 1kg" gets another. This is what lets your audiences segment by product later, and it costs you nothing extra.
- Attach your Meta pixel and name the event. With QRCodeStack, every scan fires a configurable Meta event — the default
QRScan, or a custom name likeRestockSoonif you want replenishment scans separated from your other QR activity. The event carries the QR's name, ID, and type as parameters (content_name,content_ids,content_category), so one pixel can distinguish every SKU. - Add a Conversions API token. Scans then also flow server-side, deduplicated against the browser event. This matters more than it sounds: consumable buyers skew mobile, iOS ATT opt-in rates are famously low, and ad blockers are common. CAPI recovers signal the browser pixel loses.
- Build the time-windowed audience. In Meta Ads Manager, create a custom audience from your pixel: people who fired
QRScan(filtered bycontent_name= your SKU) in the last 35 days, EXCLUDING the last 21 days. That leaves exactly the people who started the product 21–35 days ago — the restock window for a 30-day supply. - Exclude recent purchasers. Layer an exclusion audience of anyone who fired
Purchasein the last 30 days. No point paying to advertise to someone who already reordered. Exclusions are the cheapest optimization in paid social. - Run the restock creative. "Running low on Midnight Roast?" with a subscribe-and-save offer as the primary CTA and a one-off reorder as the fallback. The ad feels psychic because the timing is real.
- Adjust the window per product. A 60-day supply of vitamin D means a 45–65 day window. A 15-day sample kit means day 10–16. The mechanic is identical; only the arithmetic changes.
One honest caveat on audience size: Meta needs roughly 100 matched people in an audience before it will serve ads, and a rolling 14-day window slices your scanner pool thin. If you're doing hundreds of scans a month per SKU, you're fine. If you're smaller, widen the window (21–45 days), group related SKUs into one audience, or run the play through email first — the scan can just as easily trigger a flow if the customer identifies themselves on the landing page. Either way, start collecting scans now; the audience fills while you build the rest.
A note on event names: Meta can only optimize delivery toward standard events, so if you use a custom RestockSoon event and later want to optimize a campaign on it, wrap it in a Custom Conversion first. For building audiences — which is what this playbook mostly is — custom events work immediately.
From repeat buyer to subscriber
The restock ad's job isn't really to sell one more bag. It's to catch the customer at the exact moment a subscription is rational: they've finished the product, they liked it, and they're about to reorder anyway. "Subscribe and save 15%, skip or cancel anytime" converts far better on day 25 than it did at first checkout, when they hadn't even tasted the coffee yet.
Sweeten the second purchase specifically. A "second bag" offer that only exists in the restock ad (free shipping, a sample of another roast, a small loyalty credit) gives the timing a reason to convert. And scanners who reorder twice without subscribing are your warmest subscription prospects — build a separate audience of repeat Purchase firers and run subscription-only creative at them.
There's a compounding bonus: your scanner audience is seeded from verified real-world customers — people who physically held your product — which makes it an unusually clean lookalike seed. Meta wants 1,000+ people for a good lookalike, so this is a later-stage play, but a lookalike built from scanners beats one built from site visitors who may never have bought anything.
Worked example: a coffee brand, illustratively
Say a roaster sells 2,000 bags a month of a $22 single-origin, and the under-lid QR gets scanned by 30% of buyers. That's 600 scans a month starting 600 consumption clocks.
Rolling forward, roughly 280 people sit in the "scanned 21–35 days ago, hasn't purchased" audience at any time — comfortably above Meta's serving threshold. Suppose the restock campaign spends $300/month against that audience and converts 8% of it monthly: about 22 extra reorders, roughly $480 in direct revenue. Marginal on its own.
Now suppose a third of those reorders take the subscribe-and-save offer: 7 new subscribers a month. At $19/month subscription pricing and a typical 8-month subscriber lifespan, each is worth about $150 — call it $1,050 in created LTV per month, compounding every month the play runs. After a year that's roughly 80 subscribers on the books from one QR code and one audience rule. The numbers are illustrative; the structure is the point. The subscription conversion, not the one-off reorder, is where the play pays.
For context on scan behavior benchmarks, our QR code statistics roundup covers scan-rate ranges by placement, and the analytics tracking guide covers reading the data once it flows.
FAQ
Doesn't the scan date break if people scan in the store before buying?
Shelf-facing label QRs do pick up some pre-purchase scans, which is why under-lid or inside-seal placement gives the cleanest clock. In practice pre-purchase scans are a small minority and they push your window slightly early, which is the safe direction — an ad a few days before someone runs out still lands.
What if a customer scans the same bag twice?
Meta audiences key on the person, not the scan count, so a re-scan just refreshes their position in the window. If someone re-scans a month later to check the brew guide again, that's arguably a new consumption signal anyway — they're still using the product.
Do I need a separate QR for every SKU?
For this playbook, yes — per-SKU codes are what let you build per-product restock windows and audiences, since each scan event carries the QR's name and ID. On QRCodeStack the cost difference is negligible: dynamic codes are included in plans starting at $5/month, and pixel events are available on Pro ($12/month) and up.
Can I run this without Meta ads?
Yes. The same scan can fire GA4, Google Tag Manager, or TikTok events, and if your landing page captures an email (a "get the full brew course" opt-in works well), the scan date can trigger a replenishment email flow instead. Ads and email together — the ad as air cover, the email as the direct ask — is the strongest version.
Start the clock
Every unscanned bag you ship is a customer whose reorder window you're guessing at. The fix is one dynamic QR per SKU, a landing page that's actually useful, and a time-windowed audience in Ads Manager — an afternoon of setup for a signal no email flow can match. Create a dynamic QR code with QRCodeStack, name the scan event whatever your funnel needs — QRScan, RestockSoon, even a standard Lead event — and put a consumption clock on your next packaging run before it goes to print.