Shopify
Shopify checkout extensibility deadlines in 2026
Shopify checkout extensibility is the only supported way to customise checkout in 2026. checkout.liquid, Additional Scripts and Shopify Scripts are on a sunset clock, and some of those clocks have already rung for Plus stores. I am Alan Vo, a Gold Coast developer who has shipped Shopify Plus storefronts where the theme can be beautiful and the order still dies in checkout. If your thank-you page pixel, your discount Script or your shipping logic still lives in the old surfaces, this is the production calendar, not a feature tour.
Shopify's developer docs for checkout extensibility are the map: Checkout UI extensions, Shopify Functions and web pixels. Dates below are the ones I plan against. Confirm them in the admin and the changelog before you promise a client a week.
Why Shopify checkout extensibility deadlines matter this year
Shopify checkout extensibility deadlines matter because the old customisation surfaces stop working on different days depending on plan and feature. People collapse that into "checkout.liquid is dead" and then miss Scripts, or they migrate the information step and leave a thank-you pixel on Additional Scripts.
For Shopify Plus, checkout.liquid and Additional Scripts on thank-you and order-status pages were already past the August 2025 sunset. Automatic upgrades for remaining Plus stores ran from early 2026. If a Plus store still looks customised on those pages, it is either on extensibility or it is running leftover behaviour that you cannot edit. Treat uneditable legacy checkout as an incident, not a nice-to-have backlog item.
Shopify Scripts are a separate Plus-era feature: Ruby scripts for discounts, shipping and payments. Shopify's changelog set April 15, 2026 as the last day you could edit or publish Scripts, and June 30, 2026 as the day they stop executing. After that date, discount and shipping logic that only existed as a Script is gone. There is no graceful degrade. The rate simply stops applying.
Non-Plus stores never had checkout.liquid. Their 2026 problem is usually thank-you and order-status customisation: Additional Scripts, script tags and old tracking snippets. Shopify's upgrade deadline for those pages on Basic, Shopify and Advanced plans sits in late August 2026 (confirm the exact day in admin). After auto-upgrade, those snippets disappear.
Checkout UI extensions, Functions and pixels replace that pile. They run on Shopify's hosted checkout, which is also why they are stricter: you get declared targets, a small UI kit, and Wasm Functions with execution limits. You do not get jQuery on the payment step.
What Shopify checkout extensibility actually includes
Shopify checkout extensibility is three families of API, not one app setting.
Checkout UI extensions render interface at named targets: information, shipping, payment, pickup, thank-you, order status. Typical uses: a trust line, a gift-message field, a loyalty callout, a custom content block under shipping methods. You build them as an app (custom or public) with the checkout UI extension target. They are not Liquid. They are not your theme.
Shopify Functions run custom logic for discounts, cart transforms, payment customisation, delivery customisation and related checkout operations. They replace most Scripts. Functions are compiled, fast, and limited. A Script that looped every cart line with a pile of Ruby can fail the Function budget. Redesign the rule, do not paste the Script.
Web pixels and customer events replace many Additional Scripts use cases: analytics, ads pixels, and "fire this on thank you." Theme pixels and app pixels belong in the customer events pipeline so they respect sandboxing and, if you configured it, consent. Pasting a Facebook snippet into Additional Scripts was never a platform feature. It was a hole.
Plus stores can also use checkout branding APIs and Shopify-hosted checkout editor layouts. That is visual. It does not restore checkout.liquid HTML. If your old checkout injected a whole shipping-insurance widget via Liquid, that widget needs a UI extension or a supported app.
I keep storefront app blocks out of this ticket. Reviews on the PDP are Shopify app blocks for reviews and scripts. Checkout is a different runtime. Mixing them is how a GTM container gets loaded twice, which I treat as a GTM container optimization problem, not a theme problem.
How I migrate off Scripts and checkout.liquid
I start with an inventory in admin, not with a new app scaffold. Shopify's Scripts customisations report (where available) lists which Scripts still exist and suggested Function or app replacements. I also export Additional Scripts contents, checkout.liquid (if the file is still readable), and a list of apps that claim "checkout customisation."
Then I classify each customisation:
- Discount, BXGY, shipping-rate hide/show, payment method hide: Function or a well-supported discounts app.
- Extra field (gift message, VAT ID, packing note): checkout UI extension writing cart attributes or metafields the fulfilment process already reads.
- Tracking pixel: web pixel or GTM loaded through a pixel that only fires on checkout completed, with consent signals.
- HTML/CSS restyle: checkout branding and the checkout editor, not a CSS file in the theme.
- Upsell on thank-you: a thank-you extension or a dedicated post-purchase app that supports extensibility. Old Liquid upsells will vanish on upgrade.
I build on a Plus development store or a preview checkout. I never iterate UI extensions against the live payment step on a Friday.
Functions get a fixture suite: empty cart, one line, many lines, discounted plus stacking, B2B company location, market-specific currency. Scripts were allowed to be sloppy. Functions will time out or return nothing.
Pixels get a QA pass in GTM preview and GA4 DebugView on a test purchase. Theme rebuilds already drop purchase events. Checkout upgrades drop them again if you only tested the information step.
For stores I have shipped, checkout is where fashion photography has to get out of the way. The Their Nibs Shopify rebuild put the purchase journey first. Extensibility work should do the same: fewer widgets, working totals, honest shipping.
Production checklist against the 2026 dates
- Confirm plan: Plus vs non-Plus. The file list and the deadlines are not the same.
- In checkout settings, confirm whether Checkout Extensibility is already on. Screenshot the thank-you and order-status editor.
- Save copies of Additional Scripts, checkout.liquid (if present), and every Script. Treat this as a forensic export.
- List pixels and tags that fire on thank-you: GA4 purchase, Ads, Meta, loyalty, affiliate.
- Map each Script to a Function, an app, or "drop this rule."
- Map each Liquid widget to a UI extension target or a native checkout field.
- Implement Functions first when Scripts stop on June 30, 2026. Visual polish can wait. Money logic cannot.
- Implement web pixels before you turn off Additional Scripts. Compare purchase counts for a week.
- Walk guest checkout, logged-in checkout, Shop Pay, Apple Pay, Google Pay, and any local wallets you offer.
- Test discounts stacking: automatic discount plus code plus Function. Double discounts are a common Function bug.
- Test markets and duties if you sell cross-border. Shipping Functions that assume one country will hide rates.
- Load checkout with a slow phone and a content blocker. UI extensions that fetch on render will stall INP.
- Document for ops: where gift messages now appear on the order, not "in the old checkout box."
- After Plus auto-upgrade or the non-Plus August 2026 page upgrade, re-verify pixels the same day.
What breaks if you wait
Discount Scripts that disappear on June 30, 2026 are the expensive failure. Wholesale percentages, "hide this gateway for this SKU," and "free shipping over X except excluded collections" silently stop. Customer service will notice before engineering if you are not watching applied discount codes.
Thank-you pixels that die on auto-upgrade make Ads and GA4 look like revenue fell off a cliff. It did not. The purchase event never fired. That incident looks like a marketing problem for a week until someone checks DebugView.
Post-purchase upsells built as Liquid on the thank-you page vanish. If that was a material share of AOV, you need a replacement app or extension before the upgrade, not after.
Custom fields that only existed in checkout.liquid stop reaching fulfilment. Gift messages, delivery dates and engraving notes are the usual casualties. Warehouse staff cannot ship what the order object no longer stores.
Shop Pay and accelerated wallets skip UI you bolted onto the information step if you used unsupported injection. Extensibility targets are supposed to appear in wallets where Shopify allows them. Test wallets. Do not test only the long checkout.
GTM loaded both as a theme pixel and as a leftover Additional Script will double purchase. That inflates ROAS until someone reconciles against the gateway.
How I measure a completed checkout migration
I measure completed checkouts and matching analytics, not whether the thank-you page "looks the same." Gateway-captured orders versus GA4 purchase versus Ads conversions should move together after the cutover. If the gateway is stable and GA4 drops, the pixel failed. If both drop, the Function or a shipping rule failed.
I keep a pre-migration list of Script behaviours and tick them against live orders: discount applied, rate hidden, payment method hidden. One missed rule is a full incident.
I also watch checkout INP and drop-off from begin_checkout to purchase. UI extensions that add fields can help conversion (gift message) or hurt it (three extra required inputs). Field count is a product decision. Extensibility makes it easy to add junk. I default to less.
Related work on this site
Checkout is the part of Shopify I refuse to decorate. The Their Nibs rebuild treated the purchase path as the product, and the published outcome was 31% more conversions and 48% more orders. Offporter is Plus work on the other side: operations, partners, a storefront that still has to check out without a theme stunt. Extensibility should feel like that: infrastructure, not a second homepage.
FAQ
What are the Shopify checkout extensibility deadlines I should actually diary?
Diary June 30, 2026 for Shopify Scripts stopping, April 15, 2026 as the last Script edit if you still needed one, and the late August 2026 non-Plus thank-you and order-status upgrade. Plus checkout.liquid and Additional Scripts were already in the 2025 sunset. Confirm dates in admin. Shopify has moved these before.
Does Shopify checkout extensibility work without Plus?
Yes, for thank-you and order-status upgrades, pixels and many UI extension targets. Shopify Scripts and checkout.liquid were Plus-centric. Non-Plus stores still need Shopify checkout extensibility for tracking snippets and any thank-you customisation before the 2026 page upgrade.
Can I replace Shopify Scripts with a checkout UI extension?
Usually no. UI extensions draw interface. Shopify Scripts that changed discounts, shipping or payments belong in Shopify Functions (or a discounts app). A banner that explains a discount is a UI extension. The discount itself is a Function.
Will Shopify checkout extensibility restore my old Liquid HTML?
No. You get declared targets, branding tokens and Functions. You do not get a Liquid document you can paste a shipping widget into. If a vendor still tells you to edit checkout.liquid in 2026, they are selling a dead surface.
Keep reading
Contact if you want this kind of work on a live store.