Tracking lab
Map of the swimlanes
The crm-events solution overview, lane by lane, with what on this site exercises each.
The diagram
The crm-events solution overview: how events reach the CRM, one swimlane per integration type. Every lane chip in the lab links to its lane below, which lists what on this site exercises it. Lane C's four browser routes are C1 to C4.
Opens full size in a new tab. Source: crm-events/overview/diagrams.
A. Identity
in transitionOkta login sends an identity event through its own SNS topic and Lambda to the CRM. Moving to the crm-events approach.
Not exercised by this site.
B. Server-side events
currentHost site server code publishes through crm-events-node to the AWS backbone (crm-events-infra); crm-events-delivery takes events and profile updates to the CRM.
Tracking lab
- Outbound links·sendBeacon to this site's serverClicked Outbound Link· beacon
- Outbound links·<a ping>Clicked Outbound Link· beacon
- Outbound links·Send a test event to /crm-beaconClicked Outbound Link· server
- Server events·Publish a lab server eventLab Server Event· server
- Server events·Stamp the profilecrm.profile.upsert· server
- Server events·Send an invalid eventLab Server Event (no name)· server
- Server events·Force a fallbackLab Server Event· server
C. Browser events
currentcrm-events-gtm brings four browser routes to the page; three send straight to the CRM, the fourth goes through the host's own server.
Tracking lab
- Click tracking·Send test event to KlaviyoClicked Test CTA· track.js
- Click tracking·Send message to KlaviyoSubmitted Test Message· track.js
- Click tracking·Send JSON to KlaviyoSubmitted Test JSON· track.js
- Click tracking·Identify in KlaviyoIdentify· track.js
- Click tracking·Send booking eventViewed Booking· track.js
- dataLayer styles·gtag view_item_listview_item_list· dataLayer
- dataLayer styles·gtag view_itemview_item· dataLayer
- dataLayer styles·gtag add_to_cartadd_to_cart· dataLayer
- dataLayer styles·GA4 object view_itemview_item· dataLayer
- dataLayer styles·gtag js + config + setIgnored: not events
- dataLayer styles·gtag consent updateIgnored: not an event
- dataLayer styles·Page state pushIgnored: not an event
- SPA navigation·Push poc_spa_navigation on route changespoc_spa_navigation· dataLayer
- SPA navigation·Home and About linkspage_view· dataLayerpoc_spa_navigation (when on)· dataLayer
- Identify timing A/B·Start A: identify before navigationIdentify· klaviyo.js
- Identify timing A/B·Start B: navigate first, identify afterNo event: arms the run
- Identify timing A/B·Identify nowIdentify· klaviyo.js
- Outbound links·sendBeacon to this site's serverClicked Outbound Link· beacon
- Outbound links·<a ping>Clicked Outbound Link· beacon
- Outbound links·dataLayer push (control)Clicked Outbound Link· dataLayer
- Outbound links·dataLayer push, new tabClicked Outbound Link· dataLayer
- Data layer lab ↗ (the whole page)
C1. Standard Klaviyo script
currentKlaviyo's own browser script and its standard tracking: identify, track, client subscriptions.
Tracking lab
- Click tracking·Identify in KlaviyoIdentify· track.js
- Identify timing A/B·Start A: identify before navigationIdentify· klaviyo.js
- Identify timing A/B·Identify nowIdentify· klaviyo.js
C2. Element attributes
currentGeneric capture driven by data- attributes on page elements (track.js).
Tracking lab
- Click tracking·Send test event to KlaviyoClicked Test CTA· track.js
- Click tracking·Send message to KlaviyoSubmitted Test Message· track.js
- Click tracking·Send JSON to KlaviyoSubmitted Test JSON· track.js
- Click tracking·Identify in KlaviyoIdentify· track.js
- Click tracking·Send booking eventViewed Booking· track.js
C3. dataLayer events
possiblePiggybacks the window.dataLayer.push() calls front ends already make; the bridge forwards them to Klaviyo.js.
Tracking lab
- dataLayer styles·gtag view_item_listview_item_list· dataLayer
- dataLayer styles·gtag view_itemview_item· dataLayer
- dataLayer styles·gtag add_to_cartadd_to_cart· dataLayer
- dataLayer styles·GA4 object view_itemview_item· dataLayer
- dataLayer styles·gtag js + config + setIgnored: not events
- dataLayer styles·gtag consent updateIgnored: not an event
- dataLayer styles·Page state pushIgnored: not an event
- SPA navigation·Push poc_spa_navigation on route changespoc_spa_navigation· dataLayer
- SPA navigation·Home and About linkspage_view· dataLayerpoc_spa_navigation (when on)· dataLayer
- Identify timing A/B·Start A: identify before navigationIdentify· klaviyo.js
- Identify timing A/B·Start B: navigate first, identify afterNo event: arms the run
- Outbound links·dataLayer push (control)Clicked Outbound Link· dataLayer
- Outbound links·dataLayer push, new tabClicked Outbound Link· dataLayer
- Data layer lab ↗ (the whole page)
C4. crm-events-beacon (browser)
new optionHands events that happen as the visitor leaves to the host's own endpoint with sendBeacon; published through crm-events-node, marked untrusted (lane B).
Tracking lab
- Outbound links·sendBeacon to this site's serverClicked Outbound Link· beacon
- Outbound links·<a ping>Clicked Outbound Link· beacon
D. Real-time CLM updates
anecdotalReported but not confirmed: CLM updates reach the CRM in real time.
Not exercised by this site.
E. Data lake sync
currentCensus (or another reverse ETL) syncs modelled data from Snowflake to the CRM.
Not exercised by this site.
F. BigCommerce connector
currentA vendor connector syncs Avios Shop data from BigCommerce to the CRM.
Not exercised by this site.
G. AfterShip connector
currentA vendor connector sends Avios Shop shipment tracking to the CRM.
Not exercised by this site.