Checkout extensibility on Shopify Plus: what replaced checkout.liquid and what breaks
The short answer
Checkout extensibility is Shopify's replacement for editing checkout.liquid: UI extensions for what customers see, Shopify Functions for the rules behind the scenes, and a branding configuration for the look. As of October 2026, checkout.liquid is unsupported on the information, shipping and payment steps, it was sunset on the thank you and order status pages on August 28, 2025, and Shopify Scripts were deprecated on June 30, 2026. On Plus, apps can sit on every checkout page and custom Functions can enforce your rules; on other plans, customization stops at the thank you, order status and account pages.
What changed and when
For years, the thing you were paying Plus for was access to checkout.liquid, a theme file that let a developer change anything on the checkout pages. It was powerful and it was fragile: every store’s checkout was a one-off, apps injected script tags into it, and Shopify could not change checkout without breaking someone.
Checkout extensibility is the replacement. Instead of editing the page, you add to it through fixed extension points, and Shopify owns the page. Here are the dates as Shopify’s documentation states them on October 17, 2026.
| What | Status |
|---|---|
| checkout.liquid on the information, shipping and payment steps | Unsupported |
| checkout.liquid and additional scripts on the thank you and order status pages | Sunset August 28, 2025 |
| Script tags on the order status page | Stopped August 28, 2025 on Plus; August 26, 2026 on all other stores |
| Script tags with display scope “all” on the storefront | Keep running until March 1, 2027 |
| Shopify Scripts and the Script Editor | Deprecated June 30, 2026; published scripts deactivated |
| Checkout Branding API and Checkout Profile API | Deprecated as of API version 2026-04, replaced by the Checkout And Accounts Configuration API |
If your store still has any of these
Anything built on checkout.liquid, additional scripts or Shopify Scripts is already off. The customization did not degrade; it stopped. Shopify’s admin generates an upgrade guide under Settings > Checkout that lists what you had and sorts your apps into compatible and incompatible, and that report is the first thing we read in an audit.
The three building blocks
UI extensions are what customers see. An app, public or custom, declares a block and the merchant places it in the checkout and accounts editor at a target: a banner above the shipping methods, a field below the address, a product offer on the thank you page. Shopify renders it inside checkout with its own components, so it inherits the store’s branding and cannot break the page. Checkout UI extensions for the information, shipping and payment steps are Plus-only; thank you, order status and customer account extensions work on every plan.
Shopify Functions are the rules. A Function is a small program, written in Rust or JavaScript and compiled to WebAssembly, that Shopify runs at a fixed point: when it calculates discounts, when it lists delivery options, when it lists payment methods, when it validates a cart, when it routes an order to a location, when it builds a bundle. It does not render anything. Any plan can use public apps built with Functions; only Plus can run a custom app containing Functions, which is what you need when no app does your rule.
Branding and configuration is the look. On every plan the checkout and accounts editor sets logo, colors, fonts and layout. On Plus, the Checkout And Accounts Configuration API, which replaced the Checkout Branding API in version 2026-04, exposes the full design system for checkout, customer accounts and sign-in, and the same branding can be varied per market.
Two more pieces round it out. Web pixels replace tracking scripts and run on every plan. Post-purchase extensions handle the offer page between payment and the thank you page, on every plan.
What maps to what
This is the table we fill in for every store in an audit. The left column is what a Plus store typically had on checkout.liquid and Scripts; the right column is what it becomes.
| Old customization | Rebuilt as | Plan |
|---|---|---|
| Custom CSS and layout in checkout.liquid | Checkout and accounts editor settings, or the Checkout And Accounts Configuration API for full control | Editor on any plan; API on Plus |
| Trust badges, banners, delivery promises on checkout pages | Checkout UI extension at a target on the information, shipping or payment page | Plus |
| Custom fields (gift message, delivery date, PO reference) | Checkout UI extension that writes to cart or order attributes or metafields | Plus |
| Line item script: tiered or BOGO discounts | Discount Function, through a public app or a custom app | Public app any plan; custom Plus |
| Shipping script: hide, rename or reorder shipping rates | Delivery customization Function | Public app any plan; custom Plus |
| Payment script: hide or reorder payment methods | Payment customization Function | Public app any plan; custom Plus |
| Cart rules enforced with Liquid or JavaScript | Cart and checkout validation Function, which blocks checkout server-side with a message | Public app any plan; custom Plus |
| Tracking and conversion scripts in additional scripts | Web pixel, app or custom | Any plan |
| Content on the thank you page (survey, referral, upsell) | UI extension at the purchase.thank-you target | Any plan |
| Content on the order status page | Customer account UI extension at the order status target | Any plan |
| Post-purchase one-click offer | Post-purchase extension | Any plan |
| Different checkout for wholesale buyers | Separate B2B and D2C checkout flows in one store, with contextual checkout by market | Plus; contextual checkout on Advanced and Plus |
Have an old checkout you need rebuilt before or during a Plus upgrade? Send us the upgrade report from Settings > Checkout and we'll map every line.
Get a scoped priceWhat breaks, honestly
Most customizations map cleanly. A few don’t, and it is better to know before the upgrade than after.
Anything that read or wrote the page DOM. A script that moved the discount field above the address, or injected a countdown timer, or rewrote the order summary. Extensions render at fixed targets and cannot reach outside their block. The usual answer is a different design that uses a target Shopify offers.
Anything that changed an order from inside checkout. Shopify’s documentation for the thank you and order status pages says there is no support for APIs that directly mutate an order from a UI extension. Order edits move to Flow, a backend app or the admin after the order exists.
Logic that needed outside data at checkout time. Functions run inside Shopify with no network access and strict resource limits, so a discount rule that looked up a customer’s balance in your ERP on every cart change has to be redesigned: cache the balance on the customer as a metafield, then let the Function read that.
Checkout styling that depended on CSS. The branding configuration is broad, with colors, typography, corner radii, spacing and per-section settings, but it is a design system and not a stylesheet. A pixel-exact copy of an old checkout is not the goal; a checkout that matches the brand and converts is.
The upside of each of these constraints is the same: Shopify can keep improving checkout, Shop Pay and one-page checkout under your customizations without breaking them, which is what used to happen several times a year.
The upgrade path
Shopify’s documentation recommends planning the in-checkout upgrade and the thank you and order status upgrade together, and if that is not possible, doing in-checkout first. Here is how we run it inside a Plus upgrade project.
- Inventory. Pull the upgrade guide from Settings > Checkout, export every Script, and list every app that touches checkout. Each line gets a row in the mapping table above.
- Decide build or buy. For each row, a public app from the App Store, a custom app with its own extensions and Functions, or drop it. Shopify adds checkout apps to the App Store regularly, so a rule that needed custom code two years ago may be an app today.
- Build on a draft configuration. The checkout and accounts editor supports active and draft configurations. Everything is placed and tested on the draft while the live checkout keeps trading.
- Test with money. Real orders through every payment method, every shipping rule, every discount, on desktop and phone, with Shop Pay and without. Validation Functions get negative tests: the cart that should be blocked, is.
- Publish and watch. Switch the draft live, then compare checkout completion rate and average order value against the baseline for 90 days. A Function that silently hides a payment method for a segment of customers shows up here, not in testing.
The checkout work is usually the largest single item in an upgrade quote, which is why we scope it in the readiness audit. The when to upgrade guide covers whether you need Plus for it at all, and the cost page covers what the project includes.
Frequently asked questions
Can I still edit checkout.liquid on Shopify Plus?
No. Shopify's developer documentation says checkout.liquid is unsupported for the information, shipping and payment steps, and that it and additional scripts were sunset for the thank you and order status pages on August 28, 2025. Customizations that lived there are rebuilt as UI extensions, Functions, web pixels and branding settings.
What happened to my Shopify Scripts?
Shopify's Help Center says Scripts were deprecated as of June 30, 2026, and any Scripts still published were deactivated and no longer work. Line item, shipping and payment scripts are rebuilt as Shopify Functions, through a public app from the App Store or a custom app, which needs Plus.
Which checkout customizations work without Plus?
Branding through the checkout and accounts editor, web pixels for tracking, post-purchase extensions, and apps that add blocks to the thank you, order status and customer account pages all work on Basic and up. Apps on the information, shipping and payment pages, custom Functions and the branding API need Plus.
Do checkout extensions slow checkout down?
Shopify runs UI extensions in a sandbox and Functions as compiled WebAssembly with resource limits, which is the point of the design: checkout code can no longer block the page the way a script tag could. What can slow it is an extension that calls an outside service on every render, which we test for before switching a configuration live.