Three layers (honest status)

What is live vs parked
Layer Status What it tells you Money?
localStorage Live Per-browser chooser events under affairs_chooser_events (this page) No
Cloudflare Web Analytics Parked — pending beacon token When enabled: aggregate page views / referrers in the CF dashboard (private). Loader is on every page (analytics-config.js + analytics.js) with enabled: false and empty token — no network calls until flipped. No
Money (affiliate) systeme.io affiliate dashboard → Ops Pending / approved / cash only there. Ops books cash received via the PNL / systeme SOP in private records — not on this public site. Only cash received

Internal tracking notes (incl. CF status and Ops PNL SOP) live in private records (TRACKING.md / PNL-SYSTEME-SOP.md) — not linked as a public CF dashboard. Do not treat this page as proof that aggregate CF analytics are live.

Layer 1 — Storage key (live)

Events are appended to browser localStorage under affairs_chooser_events (see app.js). Cap: last 100 entries. Events also console.log / console.debug via a beacon stub that does not POST anywhere yet.

What each event means

Event types written by the chooser
type When detail (typical)
page_view Chooser page loads path
recommend You submit the form answers, ranked tools with scores
affiliate_click You click a card CTA slug, rank, href, score, answers
reset You hit Start over empty object
progress You complete a fieldset (budget / need / team) field, value, filled count

Each entry also has an ISO ts. Kit / Leadpages / Surfer CTA hrefs stay /go/placeholder?utm_source=affairs&utm_medium=chooser&utm_campaign=<slug>. The systeme.io CTA uses the live affiliate URL plus the same UTM set (utm_campaign=systeme). Placeholder /go/* clicks are logged without navigating (that path is not hosted on Pages). Live affiliate clicks navigate (new tab) and are still logged.

Export via browser console

On the chooser origin, open DevTools → Console and run:

JSON.parse(localStorage.getItem('affairs_chooser_events') || '[]')

Pretty-print / copy:

copy(JSON.stringify(JSON.parse(localStorage.getItem('affairs_chooser_events') || '[]'), null, 2))

Clear the log (optional):

localStorage.removeItem('affairs_chooser_events')

localStorage data never leaves your browser. Clearing site data or using another device/profile starts a new empty log. This is not a substitute for later aggregate analytics.

Layer 2 — Cloudflare Web Analytics (parked)

Sitewide loader scripts are deployed: analytics-config.js then analytics.js. Config currently has an empty cloudflareToken and enabled: false, so the beacon does not load and makes no network requests. When a real CF Web Analytics token is set and enabled flipped to true, the beacon will report aggregate traffic to the Cloudflare dashboard (private account view — not claimed as public on this site).

Layer 3 — Money only in systeme.io → Ops PNL

Affiliate pending / approved / paid amounts live in the systeme.io affiliate dashboard. Ops records cash received per the private PNL / systeme SOP. This public page does not show balances, commissions, or a CF dashboard link.

Related