Skip to main content
← Resources
Shopify Plus8 min read

Most Shopify stores get this wrong — and it costs them revenue.

Shopify Checkout Extensibility: What Merchants Need to Know in 2026

checkout.liquid is gone for Plus, and non-Plus stores hit the August 26, 2026 cutoff in seven weeks. What UI Extensions, Functions, and Web Pixels actually replace, and where the migration usually breaks.

Updated July 6, 2026

We typically work with Shopify and Shopify Plus stores doing $500k+ in annual revenue.

Samuel Noriega
By

Published

ShareXLinkedIn

Shopify Checkout Extensibility: What Merchants Need to Know in 2026

If you run a Shopify Plus store and someone on your team mentioned "checkout.liquid is gone," they were right, and the timing matters more than most merchants realize. Shopify deprecated checkout.liquid for the core checkout steps (Information, Shipping, Payment) back in August 2024. The Thank You and Order Status pages held on longer, but that deadline passed too, in August 2025 for Plus stores. If you are on a non-Plus plan, your own cutoff is August 26, 2026, seven weeks from now. After that date, Shopify auto-upgrades every store still running legacy scripts and strips out whatever customizations were sitting in checkout.liquid or the Additional Scripts field.

This is not a minor platform update. It is a full architectural replacement, and understanding it now saves you from finding out the hard way when your Meta pixel stops firing or your post-purchase upsell app goes silent.

Why checkout.liquid had to go

checkout.liquid let developers drop arbitrary HTML, CSS, and JavaScript straight into the checkout page. That flexibility was also the problem. Open-ended script injection on a page that handles payment data is a security liability, and it made checkout slower to load as more apps piled scripts onto the same page. It also made Shopify's own job harder: every new checkout feature had to account for whatever custom code merchants had wedged in over the years, which slowed down improvements to the core buying experience.

Shopify's answer was to move customization into a sandboxed model. Instead of merchants and developers writing directly into the page, they now build through structured extension points that Shopify controls and can upgrade safely underneath. That is the entire premise of Checkout Extensibility: keep the flexibility, remove the free-for-all.

What Checkout Extensibility actually is

Checkout Extensibility is not one feature. It is a combination of two systems working together, both deployed through apps rather than pasted into a theme file.

Checkout UI Extensions handle the interface. Through the checkout and accounts editor, merchants and developers can add custom content blocks, form fields, banners, and payment or shipping information at defined points in the checkout flow. Want a gift-note field before payment, a shipping insurance upsell, or a loyalty points display? That is a UI Extension.

Shopify Functions handle the logic underneath. Discount rules, payment method gating, delivery customization, cart validation, none of that lives in the visible checkout anymore. Functions run server-side in a sandboxed environment, using JavaScript or Rust, and they replace what used to be handled by Shopify Scripts (which Shopify itself is retiring, with a separate deadline of June 30, 2026, distinct from the checkout.liquid deadline). If you want the technical detail on building and deploying these, we cover that in depth at /resources/shopify-functions.

Together, UI Extensions and Functions cover most of what merchants used checkout.liquid for. The difference is that every extension is scoped, sandboxed, and survives Shopify's platform upgrades instead of breaking every time Shopify touches the underlying checkout code.

What UI Extensions can do

In practice, UI Extensions cover the customizations that account for the bulk of merchant requests: adding a message block reminding customers of a return policy, inserting a field for a delivery instruction, showing an estimated delivery date pulled from a carrier integration, or surfacing a product recommendation on the Thank You page. Anything that changes what the customer sees or the information they can enter falls into this category, and it is built and maintained through an app rather than a raw code edit.

What Functions handle

Functions operate one layer down, in the logic that decides what happens rather than what is displayed. A merchant running a tiered loyalty program can use a Function to apply the correct discount automatically based on customer tags. A merchant selling internationally can use a Function to hide certain payment methods for specific regions or order values. Cart validation rules, like blocking a discount code from stacking with an already-discounted item, also run through Functions. These are backend rules, invisible to the shopper except in their effect, and they are the direct replacement for the Ruby-based Shopify Scripts that many Plus stores built years of custom logic on top of.

What Checkout Extensibility cannot do

This is where merchants get tripped up, usually because an old blog post or a developer used to the checkout.liquid era describes the new system as a drop-in replacement. It is not, at least not for everything.

Checkout UI Extensions run in a sandboxed environment and cannot inject arbitrary third-party JavaScript. If your old checkout.liquid customization depended on loading an external script (a chat widget, a specific analytics tag, a custom form library), that pattern does not carry over directly. You cannot access the full DOM of the checkout page the way you could before, which was actually part of the point: that unrestricted access was the security gap Shopify closed. And some very specific legacy patterns, particularly ones built around manipulating checkout.liquid's rendered HTML after the fact with JavaScript, simply have no equivalent. The functionality has to be rebuilt using the extension model, not ported over.

For tracking specifically, the replacement path is Web Pixels rather than UI Extensions or Functions. If your checkout tracking was built on custom script injection, that is a separate audit from your visual and logic customizations, and it is worth treating as its own project rather than assuming it gets swept up in a general migration.

The migration path

The audit starts with an honest inventory. Pull up every customization currently sitting in checkout.liquid, every entry in the Additional Scripts field on both the checkout and the Order Status page, and every app that touches checkout in any way. For each one, ask what it actually does: is it changing the interface (a UI Extension candidate), changing logic (a Function candidate), or firing tracking (a Web Pixel candidate)? Most legacy customizations sort cleanly into one of these three buckets once you separate what the code displays from what it decides from what it reports.

From there, the build order matters. Functions typically take longer to build correctly, since they involve real business logic and need testing against edge cases (what happens when a customer has two conflicting discount codes, what happens at zero inventory). UI Extensions are usually faster once the Function logic is settled, since they are primarily about placement and content. Web Pixels migration is often the fastest of the three if you are using a mainstream analytics platform with an existing Shopify integration, and the slowest if your tracking was custom-built and undocumented.

We recently walked a Plus merchant through exactly this process after they discovered their post-purchase upsell app had silently stopped firing following Shopify's January 2026 auto-upgrade wave. The Thank You page customization had been sitting in checkout.liquid, unmaintained for two years, and nobody caught the failure until conversion data on that page dropped to zero. The fix took about a week: a UI Extension replaced the visual upsell block, a Function handled the discount logic that used to run through Scripts, and a Web Pixel restored the tracking. The bigger lesson was that a full audit six months earlier would have caught the dependency before it broke in production.

If you have not confirmed which system your store is currently running, Settings > Checkout in your Shopify admin will tell you directly. A yellow warning banner or a visible code editor for checkout.liquid means you still have legacy customizations in place. If you see the visual checkout and accounts editor instead, you have already been upgraded, though it is worth checking whether every customization you expect actually made the transition intact.

For merchants also dealing with the parallel Shopify Scripts deprecation, we have a dedicated walkthrough at /resources/shopify-scripts-deprecation-migration-2026, since the two deadlines get confused often and the confusion is expensive.

Checkout Extensibility is not going away, and neither is the pressure to migrate before Shopify does it for you. If you want a second set of eyes on your current checkout setup, or a full rebuild of what checkout.liquid used to handle, that is exactly the kind of work we do at Shugert. We have run this audit and migration process for Plus merchants who discovered gaps only after conversion data or tracking already broke, and the earlier you run it voluntarily, the cheaper it is to fix. You can see how we approach these engagements at /services.

ShareXLinkedIn

Keep reading

Related resources

On this page