[deliver]
Deliver article · 2026-07-31 · Charlotte Rodrigues

Klaviyo Shopify Integration: The Complete Guide

Short answer. The Klaviyo Shopify integration runs on three separate channels: server-side API sync (profiles, orders, consent), onsite JavaScript tracking (browsing, cart, checkout), and the product catalog feed (used by recommendations and dynamic content). Each channel can fail independently of the other two, with no visible error. A reliable integration is verified with a recurring QA protocol, not just checked once at install time.

A Klaviyo account connected to Shopify shows a green status under Integrations. That tells you nothing about what is actually flowing through, or what stopped flowing after a theme change or a new app install. This guide covers the integration's architecture, the silent failures that show up most often, and the checklist to run on a recurring basis. For step-by-step installation, our Klaviyo Shopify setup checklist covers the initial 14 configuration steps. This piece takes a different angle: understanding the plumbing well enough to know where to look when a flow stops triggering or a segment goes quiet.

1. What the connector actually switches on

Klaviyo's native Shopify connector looks like a single switch: flip it on and everything follows. In practice, it activates three separate data flows, each with its own mechanics, its own failure points, and its own sync timing.

Confusing these three channels is the most common reason for a wrong diagnosis. A team that sees orders arriving correctly in Klaviyo may conclude the integration "works," while behavioral tracking has been dead for three weeks and abandonment flows have stopped triggering for anyone.

2. The 3 data channels of a Klaviyo Shopify integration

Channel What it carries Where to check it What depends on it
Server-side API sync Profiles, orders, consent, subscription status Klaviyo > Integrations > Shopify, profile > Activity feed RFM segments, post-purchase flows, subscriber lists
Onsite JavaScript tracking Viewed Product, Added to Cart, Started Checkout, Active on Site Klaviyo > Analytics > Events, browser devtools network tab Browse abandonment, cart abandonment, onsite personalization
Product catalog feed Images, price, availability, variants Klaviyo > Catalogs > Product Feed Product recommendations, dynamic blocks in emails

2.1 Server-side API sync

This is the most stable channel because it does not depend on the visitor's browser. Shopify pushes order events, customer profile updates, and consent changes directly to the Klaviyo account through the native integration. A correct Placed Order proves this channel works. It proves nothing about the other two.

2.2 Onsite JavaScript tracking

This channel depends on a script loaded in the theme (the Klaviyo app embed) and executed in the visitor's browser. It captures behavior before purchase: product views, cart additions, checkout starts. It is the most fragile channel, because it depends on the theme, on cookie consent, and on the absence of conflicts with other scripts.

klaviyo.identify() lets you attach an anonymous visitor to a known profile client-side, for example on login. It is useful, but it is bound by the same constraints as the rest of the JavaScript tracking: without consent, the call never fires.

2.3 The product catalog

Klaviyo syncs a product feed from Shopify (Catalogs > Product Feed): IDs, titles, images, price, availability, variants. This catalog powers product recommendations and dynamic blocks inside email templates. Unlike the first two channels, a failure here does not block a send: the email still goes out, just with an empty product block or a broken image. It is the hardest failure to spot, because it never triggers an alert.

For more on using the catalog inside templates, see our Klaviyo dynamic content guide.

3. What breaks silently

These are the failures that produce no error, no notification, and no red status inside Klaviyo. They tend to surface when someone notices a flow's revenue dropped. Or they never surface at all.

Publishing a theme disables the app embed

This is the most common case. Publishing a new theme, even one duplicated from the existing one, generally resets app embeds. The Shopify connection still shows as active in Klaviyo, Placed Order keeps arriving (the server-side channel is independent of the theme), but Active on Site and Viewed Product stop cold. Without a recurring check, this kind of failure can run for weeks before anyone notices.

The consent banner blocks the script before acceptance

In markets subject to cookie consent, the onsite tracking script can be delayed or blocked until the visitor accepts measurement and marketing cookies. That is expected behavior, not a bug. The classic mistake is testing the integration in private browsing without accepting the banner, then wrongly concluding that nothing works.

A legacy snippet coexists with the official app

A Klaviyo integration installed manually before the app embed existed, then never removed after switching to the official app, doubles event counting. Nothing shows up as an error. The clues: numbers that no longer add up in reports, duplicated profiles, and segments growing faster than the actual customer base.

A custom checkout is not covered by native tracking

A store that heavily customizes its checkout flow, beyond the extensions Shopify officially supports, can see Started Checkout stop arriving after a technical migration, with nothing else flagging the issue. This risk mostly concerns stores with custom checkout development, not a standard store.

The catalog drifts after a Shopify archive

A product archived or a variant removed on the Shopify side can stay referenced inside a recommendation block or a dynamic block already built. The image field or price then becomes inconsistent, without the campaign send failing. The reader sees a broken email; the marketing team sees nothing in its send dashboards.

A third-party app interferes with the DOM

A reviews app, an upsell app, or a page builder that rewrites page content dynamically can delay or block the Klaviyo script from executing, particularly on product pages. The conflict raises no visible error for a marketing profile: only a check of the network tab in devtools reveals it.

4. The complete QA checklist

An integration should be checked channel by channel, not as a whole. Run this protocol at launch, after every theme or app change, and monthly as routine.

Testing the server-side API channel

  1. Place a test order using an email address dedicated to QA.
  2. Confirm the profile appears in Klaviyo within a few minutes.
  3. Open the profile's Activity feed and check that Placed Order carries the right fields: amount, currency, line items, discount code if used.
  4. Confirm the profile's consent status matches what was checked (or not) at checkout.

Testing the onsite JavaScript channel

  1. Open the site in private browsing and accept the consent banner.
  2. View a product page, add an item to cart, start a checkout.
  3. In Klaviyo > Analytics > Events, confirm Active on Site, Viewed Product, Added to Cart, and Started Checkout appear in order and close to real time.
  4. Repeat the test without accepting the banner: no behavioral event should fire. That silence confirms consent blocking is doing its job.
  5. Open devtools, go to the network tab, and filter on "klaviyo" to confirm the requests are actually leaving the browser.

Testing the catalog channel

  1. In Klaviyo > Catalogs, check the status and timestamp of the last sync.
  2. Pick three products at random: a bestseller, a recently added product, and an out-of-stock item.
  3. Compare image, price, and availability between the Shopify listing and the matching catalog entry in Klaviyo.

Frequency

5. Symptom, likely cause, channel involved

Symptom Likely cause Channel involved
Placed Order arrives, but Viewed Product does not App embed disabled after a theme publish Onsite JavaScript
Segment counts stop adding up, duplicated profiles Legacy snippet alongside the official app Onsite JavaScript
Empty product blocks or broken images in emails Archived product or missing variant in the catalog Catalog
Started Checkout missing on one market or device only Custom checkout not covered by native tracking Onsite JavaScript
A newsletter subscriber never enters a browse abandonment flow Cookie consent declined, or visitor not identifiable Onsite JavaScript
Product recommendation links to a discontinued item Catalog not cleaned up after a Shopify archive Catalog

6. Who owns what

App embeds and theme scripts belong to the technical team or the agency running the Shopify build. Segments, flows, and template content belong to the CRM team. Consent and the catalog concern both sides: a cookie banner change or a catalog rebuild needs to be tested by both before it ships. When native Shopify events are not enough, our guide to the Klaviyo events API for custom events covers how to enrich that base without duplicating existing events.

A well-tested integration makes everything downstream easier: reliable Klaviyo segmentation depends on clean sync, and a well-built abandonment flow is worthless if the tracking that triggers it has been broken for a month.

FAQ

Do I need a developer to integrate Klaviyo with Shopify?

Not for a store on a standard theme compatible with app embeds: installation, sync, and baseline tracking work without code. A developer becomes necessary for a headless storefront, a heavily customized checkout, or custom events the native integration does not cover.

Why did my onsite events disappear with no visible error?

The most common cause is a theme publish, which disables the Klaviyo app embed without warning. Check the app embed status in the active theme first, before looking for a more complex explanation.

Is Shopify sync the same thing as onsite tracking?

No. Server-side API sync carries orders and profiles independently of the visitor's browser. Onsite tracking depends on a script running in the browser and can fail while sync keeps working normally.

Does the Klaviyo catalog update automatically?

Yes, through the native Shopify sync, but gaps show up regularly: an archived product still referenced, a missing image, a removed variant. A periodic spot check is still necessary, especially before a campaign that leans heavily on product recommendations.

How often should the integration be audited?

After every theme, checkout, or product-page app change, and at minimum once a month as routine. An integration that worked fine at launch can degrade silently months later with no alert to flag it.

Test the plumbing before you stack more flows on top

Adding automations on top of an unverified integration means building on a foundation you never actually tested. Deliver helps ecommerce teams audit and fix all three data channels of a Shopify integration before they build on top of it. Book a Klaviyo and Shopify diagnostic or see our Klaviyo agency page.


Charlotte Rodrigues, CRM Lead at Deliver.

CR
Charlotte Rodrigues · CRM Lead at Deliver. Questions about this article? charlotte@agence-deliver.com

Want to apply this to your stack?

Spend 30 minutes with Charlotte to review your CRM setup, size the opportunity and leave with a practical action plan.

Book a 30-minute call →