How Cachealo earns shopper identity, attention, and repeat engagement across five channels — and how each one feeds the same phone-anchored data spine that makes redemption verifiable.
Every channel exists to do one of two jobs: capture a phone number against an identity, or close the loop from offer to verified redemption. WhatsApp sits at the center because it's both the engagement surface and the identity key — everything else feeds it or feeds off it.
Acquisition channels (QR, retailer social, earned shares) are cheap and infinite. WhatsApp opt-in is the one irreversible conversion event — it's where an anonymous shopper becomes a phone-keyed identity Cachealo can measure for life. Everything upstream of step 2 should be designed to push toward it; everything downstream should be designed to make step 6 happen without being asked twice.
WhatsApp is not a marketing channel for Cachealo — it's the data layer's front door. The phone number a shopper opts in with is the Shopper key that later matches against the POS TLog at redemption.
All three opt-in sources are shopper-initiated — the shopper taps a wa.me link and sends the first message. That distinction drives what's free and what isn't:
The app nudge is its own message, sequenced after the shopper has already gotten value — not bundled into the welcome message:
WhatsApp now opens links from structured business messages inside its own in-app browser by default, so the shopper never leaves the chat. That's the right behavior for most taps — except one:
This is the one channel decision with real engineering cost attached, so it gets a full evaluation rather than a default answer. The short version: the app is a utility surface, not the engagement engine — that job already belongs to WhatsApp — and that single fact changes the calculus for which weaknesses actually matter.
| Criterion | Native App | PWA |
|---|---|---|
| Time to ship | 6–10 weeks build, plus App Store / Play Store review queues for every release | Days; ships on the existing web stack, no review cycle |
| Multi-retailer scaling | Each co-branded retailer variant risks a separate build/listing, or heavy white-label tooling | One codebase; retailer theming served dynamically by URL/config — matches the neutral infrastructure model |
| Push notifications | Full native push, Live Activities, Time-Sensitive interrupts (iOS + Android) | Android: full parity. iOS: works only after manual "Add to Home Screen" (no auto-install prompt); no Live Activities; subscriptions can silently lapse |
| Offline / background refresh | Background fetch — fresh prices/cart before the app is even opened | No Background Sync API on iOS; content refreshes only when the user opens the app |
| QR / camera scanning | Full native camera APIs | getUserMedia covers in-store QR scanning on both Android and iOS Safari — no material gap here |
| Hardware access (NFC, Bluetooth) | Full access on both platforms | iOS blocks Web NFC, Web Bluetooth, WebUSB; Android is more permissive |
| Dev & QA cost | Two platform codebases (or React Native), plus OEM/version QA matrix | One codebase reusing the existing web stack; small lean team (Sebastian) can own it |
| Discovery | App Store / Play Store search, "legitimacy" badge of being listed | No store presence — but Cachealo's acquisition already runs through WhatsApp/QR/retailer social, not organic store search |
| Update velocity | Subject to review queue (typically 1–3 days, longer if flagged) | Instant server-side deploy |
This is a phased decision, not a permanent one. Re-open the native question if any of the following becomes true:
If the GS1 8112 redemption code rotates or expires (the anti-fraud behavior the model already assumes), it can't be a static image sent once into a chat — both surfaces need to render the live code on demand, not a stale screenshot.
Worth being precise here rather than assuming uniform behavior, because the two use cases rely on different mechanisms.
One shopper, traced end to end — from the moment she sees a deal to becoming a repeat, identified, multi-channel shopper.
This is a different cost model from WhatsApp entirely, and it's the fact that shapes the cadence below:
Net effect: push is the cheapest channel Cachealo has at scale — which is why the cadence below leans on it for routine, frequent touches and reserves WhatsApp for higher-trust, lower-frequency moments.
Six stages, each with the channel doing the work, what Luisa experiences, what Cachealo sends, and what it costs.
She scans a shelf-talker QR in the Selectos detergent aisle — or her cousin forwards her a deal in the family WhatsApp group.
None yet. This stage belongs entirely to the physical QR placement, the retailer's social post, or someone else's share — Cachealo hasn't said anything to Luisa yet.
Taps the link, lands in a chat with a pre-filled message, hits send. The 24-hour free service window opens. Her phone number is now her Shopper key.
Clips 2 offers right in the chat. A few days later at checkout, she taps "My Coupons" in WhatsApp, the live barcode loads in WA's in-app webview, the cashier scans it. TLog confirms the match against her phone number.
Gets a plain-text link (not a button — so it opens her real browser, not WhatsApp's webview). Taps it, Chrome shows the native "Install" banner (Android — no manual steps), she installs in one tap.
Tuesday morning, a push notification: this week's deals are up. She opens the app, browses, clips a few. Some weeks she replies in WhatsApp instead — that reopens the free window there too.
Gets a push timed to her actual diaper-buying cycle, not a calendar guess. After a good month, gets a warm milestone message in WhatsApp — and after a strong redemption, a light "share this" nudge she forwards into her family group, creating the next Luisa.
The timing the team should design against — not a fixed broadcast calendar, but a set of triggers with rough frequency.
| Timing | Trigger | Channel | Cost |
|---|---|---|---|
| Day 0 | Discovery touch (QR / social / share) | Physical / social | $0 |
| Day 0 | WhatsApp opt-in + welcome + first offers | Free (service window) | |
| Day 0–3 | First redemption confirmation | Free / Utility | |
| Day 3–7 | App install nudge | WhatsApp → Browser | Free / Utility |
| Weekly | Offer drop (~4.3/month) | Push (primary), WA if she's active there | Free |
| Event-triggered | Every redemption confirmation | Push or WhatsApp, whichever window is open | Free / Utility |
| Basket-cycle-aware | Replenishment nudge (timed to her actual purchase rhythm, not a fixed date) | Push | Free |
| Monthly | Savings milestone | Small, deliberate cost | |
| Every 2nd–3rd redemption | Earned-share prompt | Push or WhatsApp | Free / light-touch |
Push is free; WhatsApp isn't, outside the service window. That asymmetry should directly shape who gets which message: once a shopper has installed, push should absorb the routine, frequent, expected touches (weekly offers, replenishment nudges) precisely because there's no per-send cost ceiling on it.
WhatsApp should be spent deliberately on the moments that build trust or require a reply — the welcome, the first redemption confirmation, the install nudge, and occasional milestones — not on routine weekly broadcasting. That keeps the highest-trust channel from feeling like spam, and keeps the Meta bill predictable as the shopper base scales past Luisa to the full Selectos footprint.
Sequenced against the Selectos go-live gate, not on a separate timeline.
WhatsApp CTWA-inbound flow built and tested; Cachealo website live as offer catalog + PWA install surface; in-store QR placed at Selectos pilot stores; Selectos co-branded social content calendar kicked off.
Push opt-in flow shipped (full on Android, "Add to Home Screen" nudge sequence on iOS); earned-sharing mechanics (forward-to-friend, post-redemption nudge) turned on; actual OS split measured from real Selectos traffic to size the iOS push gap with data instead of assumption.
Retailer-themed PWA instance for Farmacias Aliadas; pharmacy-counter QR for the Caravan K-beauty sampling sequence; retailer social expansion to the pharmacy channel's own following.
Revisit the native app decision against the trigger conditions above, using real usage and push-reliability data rather than projections.
| Channel | Primary metrics |
|---|---|
| Opt-in rate from CTWA/QR source; offer clip rate; redemption rate; reactivation rate after a nudge | |
| Website | Visit → PWA-install rate; visit → WhatsApp opt-in rate; bounce rate by retailer landing page |
| App / PWA | Install rate; push opt-in rate split by iOS vs Android; DAU/MAU; offers clipped in-app vs in-WA |
| In-store QR | Scan volume by placement type (shelf / endcap / register / receipt); scan → opt-in conversion |
| Retailer social | Reach; engagement rate; click-through to QR or WhatsApp opt-in |
| Earned sharing | Share rate per redemption; referred-shopper activation rate; viral coefficient |
Channel 04
Retailer-Owned Social Media