What Klaviyo traffic looks like
Klaviyo's traffic is identity-first: a public API key in every call, and several paths from anonymous browser to known profile.
- Endpoint pattern
- Onsite script from
static.klaviyo.com, typicallyonsite/js/klaviyo.js?company_id=<six-char key>; tracking calls toa.klaviyo.com; sign-up form assets fromstatic.klaviyo.comwith form-related tracking onstatic-tracking.klaviyo.com - Transport
- Two shapes by integration age: legacy track/identify endpoints carry the payload as a base64-encoded
dataparameter (decoded, it is JSON with thetoken, which is the same public key, plus the event name,customer_properties, andproperties); newer client API calls undera.klaviyo.com/client/sendcompany_idin the query with a JSON body - Built-in events
Active on Sitefires when an identifiable visitor browses; e-commerce integrations typically sendViewed ProductandAdded to Cartwith full product payloads- Cookies
__kla_idholds the visitor identity; visitors arriving from Klaviyo emails carry an exchange ID (commonly a_kxURL parameter) linking the browser to a known profile without a form fill. A form submission is the other main path from anonymous to identified
The legacy data parameter decoded, as Event Watcher shows it:
{
"token": "AbC123",
"event": "Added to Cart",
"customer_properties": { "$email": "user@example.dk" },
"properties": { "ItemName": "Trail Runner", "Price": 499, "Currency": "DKK" }
}
Debugging Klaviyo with Event Watcher
- Every script load, track call, and form beacon appears in the live stream with name, icon, and category badge.
- No dedicated Klaviyo parser: requests display their parsed query and body parameters rather than decoded sections; for legacy base64
datapayloads, copy the event (JSON export) and decode the parameter to inspect it. - The cookies section shows
__kla_idset/sent per request, and every call gets the consent check.
Klaviyo and consent
Marketing consentThe extension checks Klaviyo against the marketing consent category. The sharp edge is email-click identification: a visitor landing from a campaign link can be identified via the exchange ID before touching the cookie banner.
When the script is not gated by the CMP, a pre-consent Active on Site or Viewed Product event is the default failure mode, marked pre-consent and totaled in the violations counter.
Weightier than a generic analytics ping: Klaviyo events are profile-bound.
Common debugging scenarios
- Viewed Product not populating flows. Filter to Klaviyo on a product page and confirm the track call fires with the product payload. On Shopify-style storefronts, missing events usually mean the integration snippet is absent from the theme.
- Profiles not being identified. Land on the site through a real campaign link and verify the exchange ID reaches
a.klaviyo.com. Check__kla_idin the cookies section before and after. - Duplicate or ghost events. Use the Script Tree view to see whether klaviyo.js is loaded both from the theme and from a tag manager, a common double-install.
- Pre-consent tracking from email arrivals. Replay the email-landing path with the CMP undecided and read the consent badges on the resulting events.
- Cross-checking the e-commerce stack. Pivot Grouped view by Tool to line Klaviyo events up against Mailchimp or HubSpot when several lifecycle tools claim the same conversions.