Home/ Case studies/ QR Bottle-Label Ads
Ad-tech Offline → Online Attribution

Turning every bottle into a measurable ad channel.

Brands want to reach consumers through offline touchpoints — but label ads are invisible the moment they leave the shelf. We built a QR-based advertising platform on bottled-water labels: every scan opens a dynamic, brand-controlled online experience with full attribution.

Dynamic
QR routing per scan
< 2s
Scan → landing latency
Geo · Time
Audience routing
Full-funnel
Scan → session → conversion
The Problem

Offline reach was huge. Attribution was zero.

Bottled-water labels get seen millions of times. But once the bottle is sold, the ad conversation ends — no way to know who saw it, who cared, or what they did next.

  • Brands couldn't measure ROI on label placements.
  • Creative was static — a printed run had to guess the audience for months.
  • Cross-brand and cross-campaign learning was impossible.
  • Landing experiences on the consumer's phone had to be fast and reliable — even on weak networks — or the ad was wasted.
The Solution

A dynamic QR ad platform, end-to-end.

Every printed QR resolves through our redirector — so the same physical bottle can serve different creatives to different scans, and every scan is logged and attributed.

🔗

Dynamic QR resolver

Every scan routes through our redirector — target destination decided at scan-time, not at print-time.

🎯

Geo & audience routing

Route by location, time of day, campaign, audience segment or A/B test bucket.

🖼️

Landing experiences

Lightweight, brand-controlled landing pages optimised for mobile + weak networks.

🧭

Campaign console

Brands upload creatives, define targeting, set schedules and budget, see performance live.

🏭

Bottling partner tools

Batch-based QR provisioning integrated into production runs — auto-generated, auto-tracked.

📊

Attribution analytics

Scans, sessions, geo heatmaps, dwell time, conversion events — attributed back to batches & creatives.

Architecture

Deployed architecture

Edge-cached QR resolver → ad server → landing experience → attribution pipeline → BI dashboards. Optimised for latency at the resolver and cost at the analytics tail.

Consumer Phone scans QR from bottled-water label any camera app Edge CDN + Edge Resolver Global · low latency Cached routing rules Ad Server Decisioning API Geo · time · segment A/B buckets · budget Frequency capping Batch → creative Auto-fallback creative Landing Landing Experience Next.js SSR + edge cache Optimised for mobile + weak net Brand-controlled templates Conversion events → back to ad server Data Event stream Scans · sessions · conversions Kafka-style pipeline Analytics warehouse Columnar store Aggregations · funnels PostgreSQL Brands · campaigns Batches · creatives Consoles Brand · Agency · Partner Creative upload · targeting Live attribution dashboards Bottling Partner Batch → QR provisioning API Auto-generated codes per production run Analytics / BI BI dashboards · geo heatmaps · funnel · creative-level ROI · CSV / API export Cloud CDN · edge functions · containerised ad server · CI/CD · uptime + on-call · request-level tracing
Physical / Consumer
Edge / CDN / Console
Decisioning API
Data
Analytics
Tech stack

Technologies used

Edge & delivery

Cloud CDN Edge functions Next.js SSR landing Aggressive caching

Ad server

Node.js decisioning API Geo / audience / A-B rules Frequency capping Fallback creatives

Data pipeline

Event streaming Columnar analytics warehouse PostgreSQL (config) S3-compatible storage

Consoles

React / Next.js BI dashboards CSV / API exports

Cloud & ops

Containerised services CI/CD Request-level tracing Uptime + on-call
Screens shipped

Screens from the platform

brand.aqua-ads.io/campaigns/diwali-24 Campaign · Diwali Bulk Retail Push Draft · edited 12 min ago · 4 creatives · targets: BLR, MUM, DEL CREATIVES Creative A Lifestyle · 9:16 Creative B Product · 1:1 Creative C Testimonial · 9:16 + Upload Fallback creative SCHEDULE + BUDGET 01 Oct → 30 Oct Peak · 5–10 PM DAILY CAP ₹ 12,000 TOTAL BUDGET ₹ 3.6L TARGETING & ROUTING IF geo = BLR AND time in 17:00–22:00 → show Creative A 70% Creative C IF geo = MUM → show Creative B ELSE Fallback creative (weak network optimised) Fallback Preview scans across 4 sample bottles Save draft Publish live → Same QR, different creative Rule-based routing
Web · Brand console
Creatives, geo/time rules, budget & pacing, fallback creative — the same printed QR serves different experiences.
Aqua+ Pure · Mineral SCAN ME Win rewards scan → dynamic route 🔒 aq.ax/D24-a1B2 DIWALI Every scan is a lucky bottle You may already have won ↓ CONGRATULATIONS! ₹ 25 CASHBACK via UPI · claim in one tap Claim on UPI → How it works 1. Enter your UPI · we'll send instantly 2. Every bottle is a unique code · try again 3. Terms · valid till 30 Oct 🎁 Claim my ₹ 25 First paint < 2s Weak-network optimised Conversion event Attributed to batch + creative
Mobile web · Consumer landing
Loads in under 2s even on weak networks. Every scan is unique; every conversion is attributed.
brand.aqua-ads.io/analytics/geo Live scan heatmap · Diwali campaign Last 24h · 18,412 scans · updated every 15s Last 24h 7 days Compare batches Whitefield 4,821 HSR Layout Indiranagar Koramangala SCANS low → high Top areas · 24h Whitefield4,821 Indiranagar3,142 HSR Layout2,684 Koramangala1,928 + 12 more neighbourhoods CREATIVE THAT WON HERE Creative A · Lifestyle Whitefield · 5.2% CVR Actions Boost budget Clone geo Suggested: replicate to MG Road
Web · Live geo heatmap
Where scans are actually coming from, per neighbourhood, with the winning creative called out.
brand.aqua-ads.io/analytics/funnel Funnel & creative ROI Diwali campaign · 30-day view · attribution: last-touch FUNNEL Scans Unique bottle scans 184,240 Landings Page fully rendered 171,842 93.3% of scans Engaged Clicked reveal / interacted 89,124 51.9% of landings Started claim Entered UPI 38,412 43.1% of engaged Converted UPI paid out 36,801 20.0% of scans Overall CVR (scan → paid) · 20.0% Biggest drop Engaged → Claim (57%) CREATIVE ROI CREATIVE ROI CVR Creative A · Lifestyle Winner · 44% of spend 6.4× 24% Creative B · Product 28% of spend 3.8× 17% Creative C · Testimonial 22% of spend 4.1× 19% Fallback 6% of spend · low 1.6× 9% SUGGESTED Rebalance 12% of spend from Fallback into Creative A · projected ROI 6.9×
Web · Funnel & creative ROI
Full scan → landing → engaged → claim → paid funnel, per-creative ROI with drop-off callouts.
Adoption

Rolled out with advertisers & bottling partners together

  • Advertisers onboarded via a self-serve campaign console + hands-on setup for the first campaign.
  • Bottling partners integrated the QR provisioning API into production runs — codes generated per batch, tracked automatically.
  • Consumer landing experience iterated aggressively for weak-network areas — sub-2-second first-paint became the internal SLA.
  • Attribution reports opened by day-2 of every campaign, so brands saw ROI while the campaign was still running.
Impact

Impact on the business

Measurable
Offline → online ROI
Dynamic
Creatives per scan
< 2s
Scan → landing
Reusable
Same QR, new campaign

Advertisers finally got measurable ROI on offline placements — scans, sessions, geographic heatmaps, and conversion events, all attributed. Bottling partners got a new revenue lever with zero disruption to their production process.

Explore more

Related case studies

Have an offline audience with no attribution?

QR codes, NFC tags, receipts, packaging — anything printed can become measurable. Let's talk.

Talk to us →