Shop: Snake Oil, Series 2026

A single-page checkout, written entirely in ClojureScript, with no backend and no real payment. It renders the catalog, cart, checkout form, and order confirmation into #shop-root with plain DOM — the wal-sh.projects idiom — and emits a GA4-shaped funnel (shop_view, add_to_cart, begin_checkout, purchase) through the site tracker.

What this is

The whole wal.sh adtech layer is a specimen: sinkholed beacons, $0.00 satire pricing, impressions that resolve to nothing. The store is in on it. The catalog is the "Snake Oil, Series 2026" dry-goods line — medicine-show pitches made tangible. Nothing ships; no card is captured; place-order returns a local confirmation and stops there.

The feature flag

Ecommerce is off by default site-wide. The flag resolves in this order (first decisive wins):

signal source example
URL param ?shop=on / ?shop=off per-visit override; sticks to localStorage
localStorage wal_shop_flag per-browser, set by a prior ?shop= or the API
env window.__ADTECH_ENV__.ECOMMERCE_ENABLED the build/site default
default false (shop closed)

With the flag off you get a "shop is closed" notice. To try the store, append ?shop=on to the URL. The decision logic is pure (wal-sh.commerce.checkout.core/ecommerce-enabled?) and unit-tested; the adapter only sources the signals.

Architecture

Sell-side code lives under its own wal-sh.commerce namespace and depends on wal-sh.adtech — the way a store depends on its ad stack:

  • wal-sh.commerce.checkout.core (.cljc) — catalog, cart ops, the price summary (reusing adtech.promo-engine for subtotal + coupons and adtech.pricing-engine/format-usd for money), form validation, and the local order. Pure; 49 assertions, cross-host (JVM + browser).
  • wal-sh.commerce.checkout.browser (.cljs) — flag reads, DOM, localStorage cart persistence, and funnel events via window.__wal_tracker.

Public API for the console: window.__wal_checkout (.enabled, .cart(), .summary(), .add(sku), .setQty(sku, n), .setFlag(on?)).