Data Sources → Customer Touchpoints

In-Store Kiosks

Self-service and point-of-sale kiosks physically located in stores, capturing in-person interactions like self-checkout, loyalty lookups, and product lookups.

High-Level Design

Kiosk client → offline queue → .NET Core microservices on Azure.

Touchpoint
In-Store Kiosk
Self-checkout, loyalty lookup, product lookup
→
Ingestion
.NET Core Kiosk Client + Ingestion API
Cxos.Ingestion.Client with local offline queue
→
Processing
.NET Core Stream Worker
Azure Event Hubs → session build, identity match
→
Foundation
Data Lakehouse
Unified with online transaction history
→
Intelligence
.NET Core Identity API
Loyalty ID resolution
→
Activation
.NET Core Activation API
Store ops dashboards, loyalty systems (Reverse ETL)

💼 Business Context

  • Bridges the physical store into the same customer profile as digital channels — key for true omnichannel measurement
  • Enables loyalty-driven personalization at the point of physical interaction
  • Owned jointly by Store Operations and Digital / CX teams

🔌 Technical Overview

The kiosk runs a .NET Core thin client (Blazor Hybrid or WPF) embedding the same Cxos.Ingestion.Client NuGet package used by every other touchpoint, so the contract never diverges between web, mobile, and in-store. Because store networks are less reliable than a data-center link, the client buffers events in a local SQLite queue and flushes to Azure API Management (→ the Ingestion API on AKS) via the package's built-in Polly retry policy. Sessions are anonymous until a loyalty card, phone number, or email is scanned or entered.

Typical Events

kiosk_session_started loyalty_scanned product_lookup self_checkout_completed payment_processed

💾 Sample Event Payload

{
  "event": "self_checkout_completed",
  "event_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
  "timestamp": "2026-08-01T14:05:33Z",
  "user_id": "cust_004821",
  "context": {
    "channel": "kiosk",
    "store_id": "store_0142",
    "kiosk_id": "kiosk_07"
  },
  "properties": {
    "order_id": "ord_55123",
    "total": 3499,
    "currency": "INR",
    "items": 4
  }
}

🔗 Integration Points

  • Cxos.Ingestion.Client NuGet package with local SQLite-backed offline queue
  • Azure API Management — ingress once store connectivity is available
  • POS integration — payment confirmation correlated to the session
  • Reverse ETL (.NET Core Activation API + Azure Functions) — store operations dashboards and loyalty systems

🧰 Services Consumed

  • Owning microservice — Cxos.Ingestion.Api (see the Full Application Service Map)
  • Database — Azure Cache for Redis (cache only, no system-of-record database)

⚠️ Non-Functional Considerations

  • Scale: thousands of stores, bursty peak-hour traffic per location — Ingestion API scales via AKS independent of any single store
  • Latency: checkout flows need sub-second local response even if cloud sync lags
  • Reliability: offline-first design — kiosk client functions during an outage and syncs once connectivity returns
  • Security/Privacy: kiosks are shared physical devices — the client hard-clears the local session and queue on completion or timeout

🎯 Enterprise Example

A grocery chain rolls out .NET Core kiosk clients across 400 stores, each carrying the same Cxos.Ingestion.Client package as the mobile app. Loyalty-scan events are stitched to the same customer profile through the Identity API, letting the kiosk surface a personalized coupon mid-checkout — increasing average basket size by 4.1% for enrolled loyalty members.

← Back to Customer Touchpoints