Troubleshooting

Klaviyo Checkout Started event not firing — root causes

Why the Started Checkout metric stops recording in Klaviyo while the integration and flow still look healthy. Diagnose snippet drops, scope changes, theme regressions, and platform routing.

Published


title: "Klaviyo Checkout Started event not firing — root causes" description: "Why the Started Checkout metric stops recording in Klaviyo while the integration and flow still look healthy. Diagnose snippet drops, scope changes, theme regressions, and platform routing." slug: "klaviyo-checkout-started-event-not-working" publishedAt: "2026-05-19" updatedAt: "2026-05-19" painCluster: 1 intent: 10 tier: 1 faq:

  • q: "Why isn't the Started Checkout event firing in Klaviyo?" a: "The most common cause is that the klaviyo.js snippet — which records Started Checkout on the client side — has stopped loading on your checkout page. That happens after Shopify theme updates, after migrating to a headless or custom checkout, or when another app's JavaScript prevents the snippet from initializing. The integration itself usually still shows healthy because server-side events keep flowing."
  • q: "How is Started Checkout different from Added to Cart in Klaviyo?" a: "Added to Cart fires when a shopper clicks the add-to-cart button. Started Checkout fires when they begin the checkout process (entering shipping or payment details). Both are client-side events recorded by the Klaviyo JavaScript snippet. If one is missing but the other works, the issue is usually with snippet placement or selector matching, not the integration as a whole."
  • q: "Does Shopify's new checkout (Checkout Extensibility) affect Started Checkout?" a: "Yes. Stores migrated to Shopify's new checkout (the Checkout Extensibility model that replaced Checkout.liquid in 2024) sometimes lose the Started Checkout event until they install Klaviyo's checkout extension. The shopper hits checkout, but Klaviyo never sees the event because the legacy script injection no longer applies."
  • q: "How quickly should Started Checkout appear in Klaviyo after a test checkout?" a: "Under normal conditions, within seconds. If you abandon a checkout and the event doesn't appear in Analytics → Metrics → Started Checkout within two minutes, something is broken — either the snippet isn't loading, the email isn't being captured, or the event is being recorded against a different metric name."
  • q: "Why does Klaviyo show some checkouts but not others?" a: "Started Checkout only records when Klaviyo can associate the checkout with an identified profile — usually via email. If a shopper begins checkout without entering an email (or with an email Klaviyo can't tie to a profile), the event may not record. Guest checkouts where the shopper bails before entering email are the most common silent gap."
  • q: "Can ad blockers prevent the Klaviyo Started Checkout event from firing?" a: "Yes, for some shoppers. Privacy extensions like uBlock Origin and DuckDuckGo Privacy Essentials block static.klaviyo.com on aggressive filter lists. Those shoppers won't trigger client-side events. For most stores this is a small fraction of traffic, but if your audience skews privacy-conscious, the gap can be larger."
  • q: "Will Playbook alert me when Started Checkout stops firing?" a: "Yes. We track event-volume drift against the previous seven days. When Started Checkout volume drops more than 50% versus the trailing baseline — without a matching drop in site traffic — we flag the metric as silent and link straight to the integration settings page." related:
  • klaviyo-abandoned-cart-flow-not-firing
  • klaviyo-add-to-cart-not-tracking
  • klaviyo-shopify-integration-not-syncing
  • klaviyo-flow-not-sending-emails

Started Checkout is the event that powers abandoned cart in Klaviyo. When it stops firing, every flow that depends on it stalls — usually without any visible error. The integration shows connected. The flow shows Live. The dashboard shows nothing wrong. Only the metric itself, in Analytics → Metrics, gives the signal: a chart that was full of events yesterday is empty today.

This page is specifically about that one metric. It's a sharper version of the broader "abandoned cart not firing" diagnostic — for cases where you already know the trigger event is the problem and you need to figure out which of the half-dozen distinct failure modes is responsible.

If you're not sure yet whether Started Checkout is the issue, jump back to the abandoned cart diagnostic. If you've already confirmed the metric chart is flat, the Quick diagnosis checklist below covers it.

Quick diagnosis checklist

  • Open Analytics → Metrics → Started Checkout. Look at the chart's right edge. If the last 24 hours are flat while the previous week was steady, the metric has gone silent. Note the exact time it stopped.
  • Match that timestamp against any recent changes. Theme update? Checkout migration? New Shopify app installed? Klaviyo app uninstalled and re-installed? The change at or near that timestamp is your prime suspect.
  • View source on a checkout page in your live store. Search for klaviyo in the HTML. If the script tag isn't there, the snippet is missing — re-enable Onsite Tracking in Settings → Integrations → Shopify.
  • Check whether you've migrated to Shopify's new checkout (Checkout Extensibility). If you have, the legacy script-tag injection no longer applies to your checkout pages and you need Klaviyo's checkout extension installed.
  • Run a test checkout in an incognito window using an email you control. Open Klaviyo's metric page in another tab. Within two minutes you should see your event. If you don't, the snippet either isn't loading or isn't capturing the email.
  • Check the browser console on your checkout page. Open DevTools → Console. If you see errors mentioning klaviyo, static.klaviyo.com, or CORS-related fetch failures, the snippet is loading but failing to execute.
  • If you're on WooCommerce or another platform, check that platform's plugin status. Plugin updates frequently break the webhook receiver, which means Started Checkout never reaches Klaviyo.

If those seven don't resolve it, work through the failure modes below.

1. The klaviyo.js snippet is missing from your checkout page

Started Checkout is recorded by JavaScript in the browser, not by a server-side webhook. That JavaScript lives in the klaviyo.js snippet that the integration injects into your theme. If the snippet isn't on the page, the event can't fire.

How to verify. Open your checkout page (start a checkout in your live store, then look at the source). The snippet should appear as a script tag with klaviyo in the URL. If it's not there, the integration's snippet injection has been disabled or stripped.

Common causes.

  • A Shopify theme update removed all script injections. Re-enable Onsite Tracking in Settings → Integrations → Shopify.
  • You swapped themes recently. The new theme didn't inherit the snippet. Same fix.
  • You're using a customized checkout (legacy Checkout.liquid customization, or Shopify Plus checkout extensions) where the snippet was manually placed and the manual placement got removed in a developer pass.
  • You migrated to Checkout Extensibility — see section 3.

How to fix it. In most cases, toggling Onsite Tracking off and back on inside the integration re-injects the snippet. If your theme is heavily customized, you'll need to add the snippet manually to your theme.liquid file before the closing </head> tag. The exact tag is in Klaviyo's onsite tracking docs.

2. The snippet loads but fails to fire

A trickier shape: the script tag is present in the HTML, but the event still doesn't appear in Klaviyo. The snippet is loading; it's just not capturing what you expect.

Common causes.

  • JavaScript error elsewhere on the page. If another script throws an unhandled error before the Klaviyo snippet initializes, the snippet's listeners may not attach. Open DevTools → Console and look for the first error in the load sequence.
  • Conflicting popup or chat app. Some apps (especially aggressive popup builders and chat widgets) intercept events Klaviyo listens for. If you installed a new app around the time the metric went silent, try disabling it temporarily.
  • Content Security Policy blocking external scripts. If your store added a strict CSP recently, the Klaviyo snippet may be blocked from loading or from making outbound network calls. Check the Console for CSP errors.
  • Browser extensions in your test session. Ad blockers (uBlock, DuckDuckGo Privacy Essentials) block static.klaviyo.com by default on some filter lists. Test in a completely clean browser profile with no extensions.

How to verify it's a script-execution issue, not a script-loading issue. Open DevTools → Network on your checkout page. Filter for klaviyo. You should see successful loads of the snippet and follow-up requests to a.klaviyo.com (the event-tracking endpoint). If the snippet loads but you never see follow-up event requests, the snippet is initializing but not firing — that's a code issue, not a delivery issue.

3. You migrated to Shopify Checkout Extensibility

Shopify deprecated Checkout.liquid in 2024 in favor of the Checkout Extensibility model. Stores that migrated kept their integration intact for Placed Order (which is webhook-driven) but in many cases lost Started Checkout (which is JavaScript-driven from the checkout page itself).

Why. The old Checkout.liquid allowed third-party script tags directly in the checkout markup. The new Checkout Extensibility model doesn't — apps have to use Shopify's extension framework. Klaviyo's snippet injection through the legacy mechanism no longer reaches the checkout pages.

How to verify. Check whether you're on Checkout Extensibility. In Shopify, Settings → Checkout. If you've migrated, you'll see references to Checkout Extensibility or the new checkout. View source on a live checkout page and search for klaviyo — if it's missing on checkout pages but present on storefront pages, the migration is the cause.

How to fix it. Install Klaviyo's checkout extension from the Shopify App Store. The extension restores Started Checkout tracking in the new checkout. After install, run a test checkout and confirm the event fires within two minutes.

A note. Some stores have migrated to Checkout Extensibility without realizing it because Shopify rolled changes out gradually. If your Started Checkout went silent and you can't pin it to a specific change, check the checkout page source — that's the fastest way to confirm.

4. The shopper isn't identified to Klaviyo when checkout starts

Started Checkout requires Klaviyo to associate the checkout with a known profile. The association usually happens via email — when the shopper enters their email address on the checkout page, the snippet captures it and ties the event to that profile.

Where this fails.

  • Shopper begins checkout but hasn't entered email yet. If they abandon before reaching the email input, Klaviyo has nothing to associate the event with. Some store configurations show shipping or contact information after a "Continue" click, so the email isn't captured until the shopper progresses further.
  • Custom checkout collects email in a non-standard field. If your developer customized the checkout to use a different input name for email, Klaviyo's snippet may not find it.
  • Guest checkouts on accounts-optional stores. If a shopper is logged out and using a different email than they've used before, Klaviyo will fire the event but against a new profile — which is correct behavior, but if you expect the event against an existing profile you may think it's missing.

How to verify. Run a test checkout where you enter your email first thing on the checkout page. The event should appear within two minutes. If it does, your shoppers are likely abandoning before email capture — which is a real result, not a bug.

How to fix it. If shoppers reliably bail before reaching email, you can move email capture earlier via a custom theme or a popup. If your custom checkout uses non-standard field names, your developer needs to either rename them to match Klaviyo's expected selectors or fire a manual klaviyo.identify() call.

5. Platform changes outside of Shopify

If you're not on Shopify — WooCommerce, BigCommerce, custom platform — the failure modes are structurally similar but the diagnostics are different.

WooCommerce. Klaviyo's WooCommerce integration runs through a WordPress plugin. Plugin updates (WooCommerce itself, Klaviyo's plugin, or any caching/optimization plugin) frequently break the webhook handshake. If Started Checkout went silent on WooCommerce, check the plugin's connection status and force a reconnect.

BigCommerce. Less common, but BigCommerce checkouts can lose the snippet during theme operations similar to Shopify. Same fix — re-enable onsite tracking in the integration.

Custom platforms / headless stores. If you're running a custom checkout (Hydrogen, Next.js, custom Rails/Django), the integration's snippet doesn't apply — you're firing Started Checkout via the Klaviyo Client API yourself. If the metric went silent, your own checkout code has regressed. Check your deploy history.

6. The event is firing but against a different metric

This is the rarest of the six, but it's worth checking. Klaviyo allows multiple metrics with similar names. If a developer or contractor created a custom event called "Started Checkout" or "Checkout Started" or "Initiated Checkout," you may have two metrics — and the events are landing on the wrong one.

How to verify. Analytics → Metrics. Filter by name. You should have exactly one Started Checkout metric coming from your Shopify integration. If you have multiple, check which one your flow is referencing.

How to fix it. Either consolidate to a single metric (delete the duplicate and update any custom code referencing it), or update your flow's trigger to point at the metric that's actually receiving events.

How to verify the fix

  1. Open an incognito window with no browser extensions. Add a product to cart on your store.
  2. Begin checkout. Enter an email address you control on the email field. Don't complete the purchase.
  3. Wait two minutes.
  4. Check Analytics → Metrics → Started Checkout. Your test event should appear with the email address you used.
  5. Check the profile in Klaviyo. Search for the email. Open the profile. Activity feed should show Started Checkout with the timestamp.
  6. If you have an abandoned cart flow live, check its Latest entries. Within 5–10 minutes of the test, your profile should appear in the trigger node's entry list.

If all six pass, Started Checkout is working again. If only some pass — the metric records the event but the flow doesn't enter the profile — the issue isn't the event, it's the flow filter or list assignment. See the abandoned cart diagnostic.

Why this keeps happening

Started Checkout sits at a fragile intersection: it depends on a JavaScript snippet, on Shopify's theme remaining unmodified in critical places, on third-party scripts not interfering, and on shoppers actually entering an email. Any single point can break it, and Klaviyo's UI is structurally unable to surface most of them.

The integration page shows green. The flow shows Live. The metric chart is the only place the failure is visible, and the metric chart is something almost no one looks at as a routine — until they notice flow revenue is down.

Our scan runs hourly and watches the metric chart so you don't have to. When Started Checkout volume drops by more than half compared to the trailing seven-day baseline — and there's no matching drop in storefront traffic that would explain it — we flag the metric as silent and link straight to the integration page. The fix is still yours to make. The detection is what changes.

Frequently asked questions

Why isn't the Started Checkout event firing in Klaviyo?
The most common cause is that the klaviyo.js snippet — which records Started Checkout on the client side — has stopped loading on your checkout page. That happens after Shopify theme updates, after migrating to a headless or custom checkout, or when another app's JavaScript prevents the snippet from initializing. The integration itself usually still shows healthy because server-side events keep flowing.
How is Started Checkout different from Added to Cart in Klaviyo?
Added to Cart fires when a shopper clicks the add-to-cart button. Started Checkout fires when they begin the checkout process (entering shipping or payment details). Both are client-side events recorded by the Klaviyo JavaScript snippet. If one is missing but the other works, the issue is usually with snippet placement or selector matching, not the integration as a whole.
Does Shopify's new checkout (Checkout Extensibility) affect Started Checkout?
Yes. Stores migrated to Shopify's new checkout (the Checkout Extensibility model that replaced Checkout.liquid in 2024) sometimes lose the Started Checkout event until they install Klaviyo's checkout extension. The shopper hits checkout, but Klaviyo never sees the event because the legacy script injection no longer applies.
How quickly should Started Checkout appear in Klaviyo after a test checkout?
Under normal conditions, within seconds. If you abandon a checkout and the event doesn't appear in Analytics → Metrics → Started Checkout within two minutes, something is broken — either the snippet isn't loading, the email isn't being captured, or the event is being recorded against a different metric name.
Why does Klaviyo show some checkouts but not others?
Started Checkout only records when Klaviyo can associate the checkout with an identified profile — usually via email. If a shopper begins checkout without entering an email (or with an email Klaviyo can't tie to a profile), the event may not record. Guest checkouts where the shopper bails before entering email are the most common silent gap.
Can ad blockers prevent the Klaviyo Started Checkout event from firing?
Yes, for some shoppers. Privacy extensions like uBlock Origin and DuckDuckGo Privacy Essentials block static.klaviyo.com on aggressive filter lists. Those shoppers won't trigger client-side events. For most stores this is a small fraction of traffic, but if your audience skews privacy-conscious, the gap can be larger.
Will Playbook alert me when Started Checkout stops firing?
Yes. We track event-volume drift against the previous seven days. When Started Checkout volume drops more than 50% versus the trailing baseline — without a matching drop in site traffic — we flag the metric as silent and link straight to the integration settings page.