- Klaviyo only connects onsite activity to a profile once the browser is identified. Anonymous traffic doesn't enter browse, cart or site abandonment flows.
- Visitors get identified by submitting a Klaviyo form, clicking a Klaviyo email or SMS link, entering info at checkout or, on Shopify, logging in.
- Known visitors can go anonymous again. Safari can delete Klaviyo's cookie after 7 days without a visit to your site.
- Anonymous backfill, Extended ID and First-Party ID help Klaviyo keep or recover shoppers. None of them identify a brand-new stranger.
- The biggest lever is still your capture: forms, email clicks and checkout.
This is for Shopify founders who see plenty of traffic and plenty of carts, but wonder why their browse and cart abandonment flows only reach a small slice of it.
Why can't Klaviyo see my shoppers?
Because Klaviyo needs to know who someone is before it can record what they do. Klaviyo's onsite tracking guide says it links onsite activity to a profile only after it identifies the visitor's browser.
That's the whole problem in one line. A stranger clicks a Meta ad, looks at three products, adds one to cart and leaves. Klaviyo has nobody to attach that to. No browse abandonment email, no cart email, nothing.
It also explains why flow numbers can look small next to your Shopify traffic. Your browse abandonment email mostly reaches subscribers and past customers, because those are the people Klaviyo already knows.
How does Klaviyo identify a site visitor?
Klaviyo uses a first-party cookie called __kla_id, set by its JavaScript on your domain. Before identification, it holds an anonymous browser ID. After identification, Klaviyo says it holds an encrypted token that only Klaviyo can decrypt.
From Klaviyo's help center, these are the ways a browser becomes known:
- Submitting a Klaviyo form. It has to be an email or phone number submission. Klaviyo says a button that only opens a URL or closes the form, or tapping a tap-to-text button, doesn't identify anyone on its own.
- Clicking a link in a Klaviyo email. With email-to-website tracking on and Klaviyo.js on your site, live emails add a
_kxparameter to your links. It carries an encrypted value that identifies the recipient. Previews use a placeholder, so testing from a preview won't identify you. - Clicking a link in a Klaviyo SMS. The link has to go through Klaviyo's shortener, so keep "Automatically shorten links" checked.
- Checkout. On Shopify, Klaviyo says checkout events can identify visitors, but that depends on anonymous tracking, Shopify behavioral events and the visitor accepting marketing and analytics cookies.
- Logging in. Klaviyo's Shopify onsite tracking guide lists logging in to a customer account on the store, or to a Shop account at checkout, as ways a shopper gets identified for Shopify pixel events. On other platforms, Klaviyo says login only identifies people if you've installed custom tracking for logged-in users.
Can Klaviyo identify cart abandoners without a login?
Yes. Login is only one route. A shopper who submitted your signup form last month, or clicked your email this morning, is already identified when they add to cart. No login needed.
What Klaviyo can't do is identify a cart abandoner who has never given you anything. For the Shopify Added to Cart event, Klaviyo's guide says it's tracked through a Shopify pixel, and lists how profiles get identified: submitting a Klaviyo form (with profile syncing from Klaviyo to Shopify turned on), submitting a Shopify form, entering info on the checkout page, or logging in. If none of that happened, the cart is invisible.
If your cart flow barely triggers and you want to rule out a setup problem, start with Klaviyo Added to Cart not working.
What's the difference between cart abandon and visitor abandon?
They catch different moments, and each one depends on identification differently:
- Site abandonment fires on Active on Site, which Klaviyo tracks for identifiable browsers. It catches known people who visited and left without viewing a product. More in my site abandonment email guide.
- Browse abandonment fires on Viewed Product. Same rule: known visitors only.
- Cart abandonment fires on Added to Cart. Known visitors only.
- Checkout abandonment fires on Started Checkout. This is the one that catches strangers, because typing an email at checkout identifies them.
That last point matters. If a stranger from an ad adds to cart and leaves, only checkout can catch them, and only if they got as far as typing their email. I break down the two cart-stage flows in abandoned cart vs abandoned checkout. Run both.
Why do known shoppers become anonymous again?
Cookies expire, and browsers cut them short. Klaviyo sets __kla_id to last 2 years, but its cookie guide lists what browsers actually allow:
- Safari: deleted after 7 days of browser use without interacting with your site, and 24 hours in some cases after arriving from a known tracker with query parameters in the URL.
- Brave: JavaScript-set cookies are capped at 7 days.
- Firefox: storage for known trackers is purged unless the visitor interacted with your site in the last 45 days.
- Chrome: 400 days.
Clearing cookies has the same effect. Once the cookie is gone, Klaviyo says the browser has to be identified again. So a subscriber who clicked your email two weeks ago on an iPhone might be a stranger to Klaviyo today.
What can I turn on in Klaviyo to identify more people?
Three settings live under Settings, then Data, then Onsite identification. Here's what each one does, per Klaviyo.
Anonymous visitor activity backfill. Klaviyo stores a visitor's events in their browser before they're identified. When they later get identified in the same browser, those events are added to their profile with their original timestamps. Backfilled events include Active on Site, Viewed Product, Added to Cart (on most integrations) and events sent with klaviyo.track(). Server-side events aren't captured.
Can backfilled events trigger flows? Klaviyo says yes, if the profile qualifies and the event is still inside the flow's timing. Flow timing uses the original timestamp, so an old cart event can land on a profile without starting the flow. Activity from before a visitor gives consent can't be backfilled.
Extended ID. When a returning visitor's Klaviyo cookie has expired, Extended ID checks identifiers other tools already set in the browser, such as Shopify, Google Analytics, TikTok and Reddit. If one matches a known profile, Klaviyo restores the cookie. Klaviyo says it's available on all paid plans, uses exact matches only (no fingerprinting, IP address or user agent), and doesn't work across devices or browsers. Turning it on is a single checkbox.
First-Party ID. This sets a longer-lasting, server-set cookie (__kle_id) on a subdomain of your site through a DNS record, and uses it to restore __kla_id when it expires. Klaviyo's table shows it lasting up to 6 months in Brave and up to a year in Chrome, though Safari still caps it at 7 days in some setups. It's limited to 1 domain per Klaviyo account. If both are on, First-Party ID takes priority over Extended ID.
The catch with all three: Klaviyo is clear that Extended ID and First-Party ID only re-identify shoppers who already have a Klaviyo profile. They don't create new ones. They stop you from losing people. They don't find you new ones.
Klaviyo also recommends reissuing your cookie notices and reviewing your privacy notice before you turn on Extended ID or First-Party ID. That's general information, not legal advice. Check with your own counsel.
How do I actually get more shoppers identified?
Work the capture points, in this order:
- Fix your signup form. For a first-time visitor, it's one of the only ways to become known before checkout. If it's slow to appear, hard to submit or offers nothing worth giving an email for, fewer carts ever become visible. My signup form conversion rate post covers what to change.
- Check your Shopify settings. Klaviyo's guide says onsite tracking needs the Klaviyo app embed turned on in your theme, and a new theme may need it turned on again. Turn on "Track behavioral events" for Added to Cart. For Klaviyo form submissions to identify shoppers for Shopify pixel events, profile syncing from Klaviyo to Shopify has to be on. My Klaviyo setup for Shopify guide walks through it.
- Leave email-to-website tracking on, and use Klaviyo's link shortener in SMS. Every click from your list re-identifies someone whose cookie may have expired.
- Turn on backfill, then Extended ID or First-Party ID to hold on to the people you've already identified.
- Check consent. Klaviyo says it may not track onsite events for Shopify visitors in the EU, EEA, UK and Switzerland without consent, depending on your customer privacy settings.
This is where I'd put the effort over list cleaning, too. Founders obsess over cleaning the list instead of adding better profiles and better systems to capture them. Identification is one of those systems.
Is it worth the effort once people are identified?
Yes, because the flows that run on identified shoppers are worth testing and worth keeping long. Abandonment emails are where I test first. That's where you learn what gets people across the finish line when they're close to buying.
And don't cut those flows short. Across 4 brands, cart abandon email #5 still earns $0.25 per person, the same as email #3. Every extra shopper you identify gets that whole sequence.
FAQ
Can Klaviyo track anonymous visitors?
It can store their onsite events in the browser before identification, then add them to the profile once the visitor is identified. Until then, those events aren't tied to anyone and won't trigger flows.
How does Klaviyo identify website visitors?
Through a form submission, a click on a Klaviyo email or SMS link, checkout info, or a login on Shopify. Klaviyo then stores the identity in its __kla_id cookie.
What is the _kx parameter in Klaviyo links?
An encrypted value Klaviyo adds to links in live emails when email-to-website tracking is on. It identifies the recipient when they land on your site.
Does Klaviyo Extended ID identify new visitors?
No. Klaviyo says it only re-identifies shoppers who already have a Klaviyo profile, after their cookie expires.
Why is my abandoned cart flow so small compared to my carts?
Often because many carts come from people Klaviyo hasn't identified, and Klaviyo can't track those. Run an abandoned checkout flow alongside it, and work on your signup form.
- Getting started with Klaviyo onsite tracking, Klaviyo Help Center
- Understanding cookies in Klaviyo, Klaviyo Help Center
- How to enable onsite tracking for Shopify, Klaviyo Help Center
- Understand Klaviyo's anonymous visitor activity backfill, Klaviyo Help Center
- How to set up extended ID cookie tracking, Klaviyo Help Center
- How to set up First-Party ID, Klaviyo Help Center