Shopify Checkout Extensibility: What Changed for Tracking

Shopify Checkout Extensibility
Shopify Checkout Extensibility and Tracking: What Changed and What You Need to Do | Incisive Ranking

If you've been running a Shopify store for a while and recently noticed that your checkout-related events have gone quiet in GA4 — or that your conversion tracking apps have stopped reporting accurately — Checkout Extensibility is almost certainly the reason.

Shopify's shift to Checkout Extensibility is one of the most significant architectural changes the platform has made in years. It rewrites the rules for how the checkout page can be customised, what code can run inside it, and — critically — how tracking works during the checkout flow. For most store owners and marketing teams, this change happened quietly in the background while the consequences showed up as unexplained gaps in conversion data.

This guide explains what Checkout Extensibility is, why it broke the tracking approach that many Shopify stores were relying on, what the correct replacement approach is, and the concrete steps needed to restore accurate checkout and purchase tracking.

🛍️

Has your Shopify checkout tracking stopped working since the Extensibility migration? Incisive Ranking can audit your setup and rebuild it using the correct Customer Events approach.

Get a Free Checkout Tracking Audit

What Is Checkout Extensibility?

Checkout Extensibility is Shopify's framework for allowing merchants to customise the checkout experience. Before it existed, the primary way to customise Shopify's checkout was through checkout.liquid — a Liquid template file that gave merchants direct access to the checkout page's HTML. If you wanted to add a tracking script, a trust badge, a custom field, or a upsell widget to checkout, you added it to checkout.liquid.

Checkout Extensibility replaces this approach with a structured extension system. Instead of editing raw HTML, merchants and app developers use officially sanctioned extension points — predefined locations in the checkout UI where content can be injected using Shopify's own component framework. The checkout itself becomes a controlled, sandboxed environment rather than a template you can freely edit.

The key change for tracking: Shopify deprecated checkout.liquid for non-Plus merchants in 2024. Shopify Plus merchants had a later deadline but are now also required to migrate. Once migrated, arbitrary JavaScript — including your GTM container script and custom tracking tags — cannot run inside the checkout pages.

Why the Old Tracking Approach Broke

Before Checkout Extensibility, many Shopify stores tracked checkout events in one of two ways:

  • Adding GTM or custom tracking scripts directly to checkout.liquid so they loaded on every checkout page
  • Using the Additional Scripts section in Shopify's checkout settings to inject tracking code on the thank-you page

Both of these approaches relied on the ability to inject arbitrary JavaScript into Shopify's checkout pages. Checkout Extensibility removes that ability. The checkout is now a sandboxed React-based environment where Shopify controls what runs. External scripts that used to load via checkout.liquid or Additional Scripts simply no longer execute.

The result for stores that haven't migrated their tracking approach: checkout step events (begin_checkout, add_payment_info, add_shipping_info) stop firing, and in some configurations purchase events become unreliable or disappear entirely from GA4 and ad platform reports.

The Replacement: Shopify Customer Events

Shopify's official replacement for checkout tracking is the Customer Events system, accessible through Shopify Admin → Settings → Customer Events.

Customer Events is a sandboxed JavaScript environment that Shopify specifically provides for tracking purposes. It runs inside the checkout, has access to checkout event data (what items are in the cart, what step the user is on, order details), and can emit events to analytics platforms — but it operates within Shopify's security model rather than as arbitrary injected code.

How Customer Events Work

You create a Customer Event pixel — a block of JavaScript code — and register it in the Customer Events settings. Shopify makes a set of standardised events available inside this environment that fire at key moments in the checkout flow:

  • checkout_started — when the user enters the checkout
  • checkout_address_info_submitted — when shipping address is entered
  • checkout_shipping_info_submitted — when a shipping method is selected
  • checkout_contact_info_submitted — when contact details are entered
  • payment_info_submitted — when payment details are added
  • checkout_completed — when the order is placed successfully
  • page_viewed — on each checkout page view

Inside your Customer Event pixel, you subscribe to these events and write the code to send them to GA4, Google Ads, Meta, or wherever else you're tracking.

What Customer Events Can and Cannot Do

Customer Events runs in a web worker — a separate JavaScript context from the main page thread. This is a security design by Shopify. It means Customer Events code can make network requests (to send data to GA4, Meta, etc.) but cannot access or modify the DOM, cannot read cookies set on the main page, and cannot use most browser APIs that your storefront JavaScript relies on.

⚠️ Important limitation: Customer Events cannot read cookies directly. This means you cannot access the GA4 Client ID or Facebook Browser ID from within a Customer Event pixel. If you need to pass these values alongside your checkout events, they must be passed through a different mechanism — typically by reading them server-side or by writing them to sessionStorage on the storefront and accessing them via Shopify's checkout attributes.

Server-Side Tracking: The Complementary Layer

Customer Events handles the checkout tracking well for most standard events, but the most critical event — the confirmed purchase — has an important complementary approach: Shopify webhooks.

When an order is placed, Shopify sends a webhook notification from its own servers to any endpoint you've configured. This fires regardless of what happens in the user's browser — no ad blocker, no iOS privacy feature, no session loss from a PayPal redirect can prevent a webhook from firing. It's the most reliable signal for confirmed purchases that exists in the Shopify ecosystem.

The recommended architecture for purchase tracking post-Checkout Extensibility is:

  1. Customer Events pixel fires a checkout_completed event on the client side — this captures browser context like UTMs, session data, and is quick
  2. A server-side webhook fires to your server or GTM server container, confirming the order from the backend with complete order data
  3. Your server forwards the purchase event to GA4 (via Measurement Protocol), Google Ads (Enhanced Conversions), and Meta (Conversions API) with proper deduplication

This two-path approach ensures you're not dependent on either the browser or the webhook alone — and with a shared event_id, the platforms deduplicate automatically so you don't double-count.

📡

Setting up Customer Events alongside server-side webhooks requires careful implementation. Our team specialises in exactly this setup for Shopify stores.

Talk to Our Team

What About the Additional Scripts Section?

Shopify has replaced the Additional Scripts section in checkout settings with a more structured Order Status page configuration. Scripts that previously ran on the thank-you page via Additional Scripts need to be migrated to either Customer Events or a dedicated Order Status page extension.

If you were using Additional Scripts to fire GA4 purchase events or Google Ads conversion tags on the thank-you page, those scripts are no longer executing for stores that have completed the Checkout Extensibility migration. This is a silent failure — Shopify doesn't send you an error, the checkout works fine for customers, and conversion tracking just quietly stops.

Old ApproachStatusNew Approach
GTM in checkout.liquidDeprecated / BrokenCustomer Events pixel
Custom JS in checkout.liquidDeprecated / BrokenCustomer Events pixel or checkout extensions
Additional Scripts (thank-you page)ReplacedOrder Status page extension or Customer Events checkout_completed
Tracking apps using checkout.liquid injectionLikely brokenVerify app has Customer Events support; update or replace
Shopify webhooks (purchase confirmation)Still works — unchangedContinue using; recommended as complementary layer

How to Audit Whether Your Checkout Tracking Is Working

Before rebuilding anything, verify what's actually broken. Here's a practical diagnostic process:

  1. Place a test order using Shopify's test payment gateway
  2. Check GA4's Realtime report and DebugView for purchase and checkout events
  3. Check Meta Events Manager Test Events tool for purchase events from the browser
  4. Check your GA4 Monetisation report 24–48 hours later to confirm the purchase appears
  5. In GTM's Preview mode, check whether any tags are firing during the checkout flow — they likely aren't if you haven't migrated
  6. Go to Shopify Admin → Settings → Customer Events and check whether any pixels are configured there

If you find no Customer Events pixels configured and your checkout/purchase events have gaps, you've confirmed the problem. The next step is building the replacement implementation.

Migrating Your Tracking to Customer Events: What It Involves

The migration involves writing a JavaScript pixel that uses Shopify's Customer Events API, registering it in your Shopify admin, and testing it against all your checkout flows. The complexity depends on how many platforms you're tracking and what data you need to pass with each event.

A basic implementation — GA4 page views and checkout events, one conversion tag — can be built and tested in a few hours by a developer familiar with the Customer Events API. A full multi-platform setup covering GA4, Google Ads, Meta, and TikTok with proper hashed data for Enhanced Conversions and CAPI matching takes longer, and should include deduplication logic if you're also running server-side tracking in parallel.

For Shopify Plus merchants who previously had heavily customised checkouts built in checkout.liquid, the migration is more involved — both because the tracking needs to be rebuilt and because any other checkout customisations need to be ported to the Checkout Extensibility extension framework simultaneously.

Before you start building: Check whether any tracking apps you use have already released Customer Events support. Several popular Shopify tracking apps have updated their implementations and can migrate automatically. If your app hasn't added Customer Events support, that's a strong signal to switch to a solution that has, or to implement natively.

Wrapping Up: Checkout Extensibility Is the New Standard — Your Tracking Needs to Match

Checkout Extensibility isn't optional and it isn't going away. For stores that completed the migration without updating their tracking, there's an active gap in conversion data that's affecting every decision made from those reports — campaign optimisation, ROAS calculations, attribution of revenue to traffic sources.

The good news is that the Customer Events API, combined with server-side webhook tracking, gives you a more robust and reliable foundation than the old checkout.liquid approach. It's more structured, harder to break accidentally, and designed specifically for the privacy-constrained tracking environment that 2025 requires.

At Incisive Ranking, migrating Shopify checkout tracking to the Customer Events framework is something we do regularly. If your conversion data stopped making sense after a Shopify update, this is where we'd start.

Is your Shopify checkout tracking broken after the Extensibility migration? Get a free audit and a clear rebuild plan from Incisive Ranking.

Get My Free Checkout Audit View Our Services

Follow Us:

About Us

We are experts in Tags and Tracking Services. With experience in eCommerce and Custom Conversion tracking, Server Side Tagging, and Data tracking to help you get the advantage of ACCURATE data for better decision making. With more than 6 years of experience, We have already delivered more than 500 projects.