Tracking lab
Outbound links
One 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 eventsTry it
1. sendBeacon to this site's server
crm-beacon.js hands the event to the browser with navigator.sendBeacon. /crm-beacon identifies you from the site's cookie and publishes a server event.
Visit example.comClicked Outbound Link· beaconLane C4 · crm-events-beacon (browser)Lane B · Server-side eventsShould always arrive.
2. <a ping>
No script: the browser itself posts to /crm-beacon as it follows the link. Off by default in Firefox.
Visit example.comClicked Outbound Link· beaconLane C4 · crm-events-beacon (browser)Lane B · Server-side eventsArrives in Chrome, Edge and Safari.
3. dataLayer push (control)
The usual route: a dataLayer push that GTM's bridge sends with Klaviyo.js, which uses XMLHttpRequest.
Visit example.comClicked Outbound Link· dataLayerLane C3 · dataLayer eventsOften lost: the request is cancelled as the page unloads.
4. dataLayer push, new tab
The same push, but the link opens in a new tab, so this page stays and the request finishes.
Visit example.com (new tab)Clicked Outbound Link· dataLayerLane C3 · dataLayer eventsShould arrive, at the cost of opening a tab.
Check the endpoint without leaving
Uses fetch, so the reply is visible (a real beacon's reply is ignored by the browser).
Your clicks in this tab
| Method | Clicks | In Klaviyo |
|---|---|---|
| beacon | 0 | count on the profile |
| ping | 0 | count on the profile |
| bridge | 0 | count on the profile |
| bridge-new-tab | 0 | count on the profile |
On the profile, filter to Clicked Outbound Link and count by Method. Any shortfall against these numbers is events lost as the page left.
How it works
A link to another site unloads this page, and the browser cancels ordinary requests as it goes. Each link goes to the same place but sends its Clicked Outbound Link event a different way, tagged with Method.
- Rows 1 and 2 are lane C4: the browser hands the event to this site's
/crm-beacon, which identifies you from the shop's persona cookie and publishes through crm-events-node (lane B), marked untrusted. - Rows 3 and 4 are lane C3: a dataLayer push the GTM bridge sends with Klaviyo.js.
Click each a few times (use Back to return), then compare the tally with what reached the profile in Klaviyo.
Before you click
Identify in the shop first (top strip). Anonymous, /crm-beacon skips events; for rows 3 and 4, Klaviyo.js needs to know you too.
Reading the results
In the console, row 1 logs beacon · handed over, row 2 ping queued, rows 3 and 4 pushed (plus an observed Klaviyo.js call if the bridge got that far). Entries marked trust: browser arrive in Klaviyo with PocTrust: browser.
Every row carries ?via= in DestinationURL.