Tracking lab
Every route an event can take
Each lab exercises one or more swimlanes of the crm-events solution overview. Press things, then read the event console at the bottom of the page: it shows what each control sent and what the page's scripts were seen to do.
- Click trackingButtons marked up with data-track attributes; track.js turns each click into a Klaviyo.js call.Lane C2 · Element attributesLane C1 · Standard Klaviyo script
- dataLayer stylesgtag-style and object-style pushes, and what the bridge forwards, ignores or denylists.Lane C3 · dataLayer events
- SPA navigationClient-side route changes, with and without a poc_spa_navigation push.Lane C3 · dataLayer events
- Identify timing A/BIdentify before or after navigating, and which Klaviyo.js API the bridge uses.Lane C1 · Standard Klaviyo scriptLane C3 · dataLayer events
- Outbound linksOne external link sent four ways, to see which events survive leaving the page.Lane C4 · crm-events-beacon (browser)Lane B · Server-side eventsLane C3 · dataLayer events
- Server eventscrm-events-node from a server action: publish, profile upsert, and what rejected and fallback look like.Lane B · Server-side events
- Data layer lab ↗A plain HTML page outside the app (no GTM): bridge load order and identity. No event console.Lane C3 · dataLayer events
Before you start
Identify first. Server routes (beacon, ping, server events) need the shop's persona cookie, and Klaviyo.js needs to know the browser for front-end events to land on a profile. Use Identify as… in the shop, then come back. The strip at the top of every lab page shows both.
One console. The console is shared with the shop, so one trail follows you between them. Entries are labelled with the page they came from; observed entries are what Klaviyo.js, track.js or the beacon script reported, not what a button meant to do.
Live. Browser routes always send for real. Only server routes follow the shop's Live / Dry run switch.
Reading the chips
Under every control: what it sends and by which route, then the swimlane it exercises.
- Clicked Test CTA· track.jselement attributes: track.js turns a click into a Klaviyo.js call
- view_item· dataLayera dataLayer push; GTM's bridge forwards it to Klaviyo.js
- Identify· klaviyo.jsa direct Klaviyo.js call
- Clicked Outbound Link· beaconhanded to the browser for this site's /crm-beacon endpoint
- Lab Server Event· servercrm-events-node, from this site's server
- Ignored: not an eventnothing is sent, on purpose
- Lane C2 · Element attributesthe overview swimlane; opens the Map