Migrating From checkout.liquid to Checkout Extensions on Shopify Plus

Last updated
Expert reviewed
5 min read
Simeon Mantel
Simeon Mantel
CEO at Fudge.

Key takeaways

  • checkout.liquid is fully switched off. The Information, Shipping and Payment steps dropped it on August 13, 2024, the Thank you and Order status pages followed on August 28, 2025, and Shopify auto-upgraded the holdouts from January 2026.
  • Four tools replaced the one file: checkout UI extensions for interface, Shopify Functions for logic, the branding API for styling, and web pixels for tracking.
  • The migration is an inventory-and-mapping exercise. List what your checkout.liquid did, assign each item to its new tool, rebuild in a draft checkout configuration, and publish.
  • A good share of it needs no developer. Branding, layout, app blocks and custom pixels are admin work. Custom UI extensions, Functions and app pixels are developer work.
  • A few things have no 1:1 replacement, including arbitrary DOM edits and per-page styling. Plan workarounds instead of waiting for parity.

A checkout.liquid to extensions migration in 2026 is no longer a forward-planning exercise. Every deadline has passed, the file is off, and any Shopify Plus store that did not move was upgraded automatically.

That changes what this guide is for. If your discount logic died with Shopify Scripts on June 30, if your thank-you page tracking disappeared in the January auto-upgrades, or if you have been running a near-default checkout since the switch and want your customizations back before BFCM, this is the rebuild playbook.

Our older guide to modifying checkout.liquid in Shopify Plus documents the legacy system this piece replaces. For the full map of the replacement framework, see our complete guide to Shopify checkout extensibility - this article stays on the practical path from old to new.

Why you can trust us

We have been in the Shopify space for over four years and have worked with hundreds of Shopify brands on their storefronts, including stores that went through this exact upgrade. We build Fudge, an AI storefront editor with a 4.9 rating on the Shopify App Store, so we work daily in the theme and admin layer this migration runs through.


Where the checkout.liquid shutdown stands in 2026

Every date in this table is past. It is here so you can work out which parts of your old setup broke when, and what you are actually rebuilding.

DateWhat happened
August 13, 2024checkout.liquid stopped working for the Information, Shipping and Payment steps on Plus1
August 28, 2025checkout.liquid, additional scripts and script tags were sunset on the Thank you and Order status pages for Plus; the fields became view-only23
January 2026Shopify began auto-upgrading Plus stores still on legacy Thank you and Order status pages, with 30 days’ email notice; legacy customizations were lost2
April 15, 2026Shopify Scripts could no longer be edited or published4
June 30, 2026Shopify Scripts stopped executing entirely4
August 26, 2026Script tags on the Thank you and Order status pages were sunset for non-Plus stores too3

Two details in that table matter for the work ahead.

Your old code is still readable. Additional scripts became view-only rather than deleted2, and the checkout.liquid file may still sit in your theme’s code editor. That makes the audit in step 1 possible without archaeology.

The auto-upgrade did not migrate anything. Stores upgraded in January 2026 lost their legacy customizations outright2. If your checkout looks bare today, that is why.


What replaced checkout.liquid?

One editable file became four sandboxed tools, each owning a slice of what checkout.liquid used to cover.

The checkout extensibility pillar guide covers each tool in depth. What you need here is the mapping.

What checkout.liquid didWhere it goes nowDeveloper needed?
Tracking tags in additional scriptsWeb pixels (app pixel or custom pixel)Custom pixel: no. App pixel: via the app
Trust badges, banners, custom contentApp block or checkout UI extensionApp block: no. Custom extension: yes
Custom fields (gift notes, order refs)Checkout UI extension at a targetYes, or an app that ships one
In-checkout upsellsUI extension, usually from an upsell appUsually no
Address and cart validationCart and checkout validation FunctionYes, or an app
Discount and shipping logic (Scripts)Shopify FunctionsYes, or an app
CSS and stylingCheckout editor branding; branding API for the restEditor: no. API: yes
Header and footer editsBranding settings plus UI extensionsMostly no

Step 1: Audit what your checkout.liquid actually did

Before rebuilding anything, produce a flat list of every job the old checkout performed. Most Plus checkouts accumulated years of snippets nobody documented.

Pull the evidence from three places:

  1. The old checkout.liquid file, still visible in the theme code editor on themes that had one. Read it top to bottom and note every non-standard block.
  2. The view-only additional scripts field, which preserves the exact tags that used to fire on the Thank you and Order status pages.2
  3. Your app list. Any app that injected script tags into checkout stopped working at the sunset dates, so check each checkout-touching app for an extensibility-ready version.

Sort every finding into one of six buckets: tracking, trust content, custom fields, upsells, validation, styling. Each bucket maps to exactly one row of the table above.

Then prune. A migration is the cheapest moment you will ever get to drop the pixel from a defunct ad platform or the badge for an expired certification. Rebuild only what still earns its place in the highest-converting page you own.


Step 2: Rebuild the merchant-side pieces in a draft checkout

Shopify’s admin calls the unit of checkout customization a checkout configuration. The Admin API still calls it a checkout profile, which is why the branding mutation takes a checkoutProfileId.8 Either way, it is a versioned bundle of branding, layout and blocks that you can stage as a draft and publish when ready.10

The flow in the admin:

  1. Go to Settings > Checkout. In the Configurations section, click Duplicate next to your active configuration to create a draft.10
  2. Click Edit on the draft to open the checkout and accounts editor.10
  3. Set your branding: logo, background, colors and fonts across the checkout, Thank you and Order status pages.11
  4. Pick your layout. The editor’s settings let you switch between one-page and three-page checkout; one-page is the default.12
  5. Add app blocks for trust badges, upsells and custom content, positioning them in the editor.
  6. Preview the draft, then click Publish. Publishing swaps it in as the active configuration, and the old active one becomes a draft you can roll back to.10

None of this requires code, and the draft-first flow means the live checkout never sees a half-finished state. Our guide on adding trust badges to Shopify checkout walks the block-based version of the most common single customization.

Want the same draft-first workflow for the rest of your storefront?
Try Fudge for Free

Step 3: Move tracking to web pixels

Tracking is the piece most Plus stores lost without noticing, because the failure is silent: the checkout works, the ad platforms just stop receiving conversions.

You have two replacements for the old additional scripts tags.9

App pixels run in a strict sandbox and come from the app for that platform - Google, Meta, TikTok and the rest maintain their own. This is the default choice: the vendor keeps it current and it needs no code from you.

Custom pixels are pasted in the admin’s pixel manager and run in a more permissive sandbox with the events API pre-wired.9 They are the escape hatch for platforms without an app pixel. Two caveats: Shopify states plainly that custom pixels are unsupported and that compliance, security and upkeep are your responsibility, and not all pixel functionality works inside the sandbox.13

Either way, verify with a real test order that checkout_completed reaches every platform you care about. For ad platforms specifically, pair the pixel with a server-side path; our guide to Meta CAPI on Shopify covers deduplication and event match quality for exactly this setup.


Step 4: Rebuild custom UI and logic with a developer

Two buckets from your audit are genuine development work.

Custom checkout UI extensions

Anything an app block cannot cover - a bespoke custom field, a conditional banner, a survey on the Thank you page - becomes a checkout UI extension. Extensions render at defined static or block targets, are built from Shopify’s checkout components, and run in an isolated sandbox with no access to the checkout page’s HTML or to payment data.5

Extensions on the Information, Shipping and Payment steps are a Plus capability; the Thank you and Order status page targets are open to all plans.5 A developer scaffolds them with the Shopify CLI, tests against a development store, and the merchant places block-target extensions in the same checkout editor from step 2.

Shopify Functions

Discount stacking rules, shipping rate rewrites and payment method gating that lived in Shopify Scripts now live in Shopify Functions, which compile to WebAssembly and run on Shopify’s infrastructure during checkout.6 Function APIs cover discounts, delivery and payment customization, cart and checkout validation, order routing and more.6

Since Scripts stopped executing on June 30, 2026, any store that skipped this port has been running without that logic for two months.4 If margins or shipping tables look wrong since early summer, start here.

Shopify publishes templates for Rust and JavaScript and recommends Rust for performance on large carts.6 Before commissioning custom Functions, check whether a discount or shipping app already ships the logic as configuration - for common rules, it usually does.


What has no 1:1 replacement

An honest migration plan names the gaps. Four things from the checkout.liquid era do not come back.

Arbitrary edits to checkout markup. Extensions cannot touch the page’s HTML at all - they render inside their own sandbox at the targets Shopify defines.5 If no target exists where your old snippet rendered, there is no way to render there. The workaround is the nearest target, or moving the element to the cart page, where your theme still rules.

Per-page styling. Branding applies across checkout, checkout UI extensions and customer account pages together; Shopify explicitly does not support styling individual pages.8 Design once for the whole flow.

Scripts that needed the checkout DOM. Session recording, some A/B testing tools and older affiliate tags read the page directly, and the pixel sandbox does not expose it.13 Ask each vendor for their app pixel or server-side integration; where neither exists, that tool is done in checkout.

Free network calls in logic. Functions cannot call external services directly. A fetch-target mechanism exists where Shopify performs a declared HTTP request on the function’s behalf, but it must be enabled by Shopify and is scoped to enterprise arrangements and specific use cases.14 The standard workaround is precomputing data into metafields the Function can read.

If one of these gaps is core to your checkout, decide the workaround now rather than mid-rebuild.


What the upgrade gives you

The trade for those limits is real, and it is the reason not to grieve the old file.

A faster, better-converting checkout. Shopify reports its checkout converts 15% better on average than the competition, and up to 36%, citing a 2023 study run with a major consulting firm.15 Those figures are Shopify’s own, but the direction matches what we see: less custom weight in checkout means less to slow it down.

Shop Pay on current rails. Shopify reports Shop Pay checkout is up to three times faster and converts as much as 50% better than standard checkout.15

One-page checkout as the default layout, with a one-click switch back to three pages if your data says otherwise.12

Updates handled by Shopify. This is the quiet one. Stores on checkout.liquid sat on a maintenance version that never received new checkout features automatically.3 On extensibility, your customizations talk to versioned APIs, so Shopify ships checkout improvements under you without breaking them.


Timing the rebuild before BFCM

Work backwards from late November.

A checkout published in October has weeks of real orders to prove itself before Black Friday. One published in mid-November does not.


Where Fudge fits

Checkout extensions, Functions and pixels are their own toolchain, and Fudge does not build them.

What Fudge does own is everything the shopper sees before checkout: the landing pages, product pages, cart content and trust sections that decide whether checkout gets a visitor at all. Describe the change in plain language, and Fudge generates native Liquid, CSS and JavaScript in your theme as a draft you preview and publish - the same draft-first pattern the checkout editor uses.

While a developer rebuilds your checkout extensions, the page builder side of the BFCM prep does not need to wait on them.


FAQ

Is checkout.liquid still supported on Shopify Plus?

No. It stopped working on the Information, Shipping and Payment steps on August 13, 2024, and was sunset on the Thank you and Order status pages on August 28, 2025. From January 2026 Shopify auto-upgraded remaining Plus stores, removing legacy customizations. The old file and additional scripts remain readable in view-only form, which helps when auditing what to rebuild.

What replaced checkout.liquid?

Four tools, each owning a slice of the old file: checkout UI extensions for custom interface at defined targets, Shopify Functions for discount, delivery, payment and validation logic, the branding API for styling via design tokens, and web pixels for tracking. Each runs in a Shopify-managed sandbox rather than injecting code into the page.

Do I need a developer to migrate from checkout.liquid to checkout extensions?

For part of it. Branding, checkout layout, app blocks and pasting custom pixels are admin work in the checkout and accounts editor. Custom UI extensions and Shopify Functions are developer work built with the Shopify CLI. Many stores cover the developer bucket with apps instead, since upsell, trust and discount apps already ship extensibility-ready versions.

What happened to Shopify Scripts?

Shopify Scripts could no longer be edited or published after April 15, 2026, and stopped executing entirely on June 30, 2026. Their replacement is Shopify Functions, which cover discounts, shipping and payment customization plus validation. If your store still relied on Scripts this summer, that logic has been silently absent since the end of June.

Can I still add custom JavaScript to the Shopify checkout?

Not as free-form script. Tracking JavaScript goes into a custom pixel, which runs in a sandbox with access to customer events but not the checkout page itself. Interface work goes into checkout UI extensions at defined targets. Tools that needed direct access to the checkout DOM, like some session recorders, have no equivalent and need a vendor-supported pixel or server-side integration.

How do I test a new checkout configuration before publishing it?

Duplicate your active configuration under Settings > Checkout to create a draft, make every change there, and use the editor preview to check it. Publishing swaps the draft in and turns the previous active configuration into a draft you can restore. After publishing, place a real test order and confirm each pixel and Function fired on it.

Will checkout extensibility slow down my checkout?

The opposite is the design goal. Extensions and pixels run sandboxed instead of injecting blocking scripts into the page, and Shopify reports its current checkout converts 15% better on average than competitors, with Shop Pay up to three times faster than standard checkout. Because customizations sit behind versioned APIs, Shopify also ships checkout performance improvements without breaking them.

Simeon's signature
Get the storefront side of BFCM built while checkout is in migration.

Footnotes

  1. Shopify developer documentation, Liquid checkout object - deprecation note that the checkout object was deprecated for the Information, Shipping, and Payment pages on August 13, 2024, with merchants directed to upgrade to Checkout Extensibility before that date. https://shopify.dev/docs/api/liquid/objects/checkout

  2. Shopify Help Center, “Plus - Upgrading and replacing your Thank you and Order status pages” - August 28, 2025 was the deadline to upgrade; additional scripts and checkout.liquid became view-only and non-editable; in January 2026 Shopify began auto-upgrading stores with 30-day email notice, and legacy customizations were lost. https://help.shopify.com/en/manual/checkout-settings/customize-checkout-configurations/upgrade-thank-you-order-status/plus-upgrade-guide 2 3 4 5

  3. Shopify developer documentation, “checkout.liquid” - checkout.liquid and additional scripts were sunset for the Thank you and Order status pages on August 28, 2025 (Plus) and script tags on August 26, 2026 for non-Plus stores, and stores using checkout.liquid sat on a maintenance version that was not automatically updated. https://shopify.dev/docs/storefronts/themes/architecture/layouts/checkout-liquid 2 3

  4. Shopify developer changelog, “Shopify Scripts will be deprecated on June 30, 2026” - Scripts could no longer be edited or published after April 15, 2026, and stopped executing on June 30, 2026, with Shopify Functions as the replacement. https://shopify.dev/changelog/shopify-scripts-will-be-deprecated-on-june-30-2026 2 3

  5. Shopify developer documentation, “Checkout UI extensions” - block, static and runnable targets; extensions for the Information, Shipping and Payment steps are available only to Shopify Plus stores while Thank you page targets are available to all merchants; extensions run in an isolated sandbox without access to sensitive payment information or the checkout page’s HTML. https://shopify.dev/docs/api/checkout-ui-extensions/latest 2 3 4

  6. Shopify developer documentation, “Shopify Functions” - function APIs for discounts, payment customization, delivery options, cart and checkout validation, order routing, bundles and pickup; Functions compile to WebAssembly and run on Shopify’s infrastructure, with Rust and JavaScript templates and Rust recommended for performance on large carts. https://shopify.dev/docs/apps/build/functions 2 3 4

  7. Shopify developer documentation, “About checkout styling” - checkout styling customizations through the branding API are available only to Shopify Plus merchants. https://shopify.dev/docs/apps/build/checkout/styling

  8. Shopify GraphQL Admin API, “checkoutBrandingUpsert” - the mutation takes a required checkoutProfileId and customizes checkout branding through a designSystem (colors, typography, corner radius) and customizations input; styles apply across checkout, checkout UI extensions and customer account pages, with no per-page styling. https://shopify.dev/docs/api/admin-graphql/latest/mutations/checkoutBrandingUpsert 2 3

  9. Shopify developer documentation, “Web Pixels API” - pixels subscribe to customer events such as page views and checkout progression within Strict or Lax sandboxes; app pixels run in the strict sandbox with settings support, while custom pixels are configured in the admin’s pixel manager and run in the lax sandbox with no boilerplate. https://shopify.dev/docs/api/web-pixels-api 2 3

  10. Shopify Help Center, “Managing your active and draft checkout configurations” - duplicate the active configuration from Settings > Checkout to create a draft, then publish, preview, rename, duplicate or delete drafts; publishing a draft replaces the active configuration, which becomes a draft. https://help.shopify.com/en/manual/checkout-settings/customize-checkout-configurations/active-and-draft-checkouts 2 3 4 5

  11. Shopify Help Center, “Customize checkout” - the checkout and accounts editor customizes branding (logo, background, colors, fonts) across checkout, thank you and order status pages, with standard customizations on Basic and higher and advanced features on Plus. https://help.shopify.com/en/manual/checkout-settings/customize-checkout-configurations

  12. Shopify Help Center, “One-page checkout” - the checkout layout defaults to one-page, and the checkout and accounts editor’s settings switch between one-page and three-page checkout. https://help.shopify.com/en/manual/checkout-settings/customize-checkout-configurations/one-page-checkout 2

  13. Shopify Help Center, “Custom pixels” - adding and using custom pixels is unsupported by Shopify; compliance, code security, troubleshooting and updates are the merchant’s responsibility, and not all pixel functionality works in the sandbox. https://help.shopify.com/en/manual/promoting-marketing/pixels/custom-pixels 2

  14. Shopify developer documentation, “About network access for Shopify Functions” - Functions do not make network requests directly; a fetch target defines an HTTP request that Shopify performs and passes into the run target, and the capability must be enabled by Shopify for eligible merchants and use cases. https://shopify.dev/docs/apps/build/functions/network-access

  15. Shopify, “Checkout” - Shopify reports its checkout converts 15% higher on average than the competition and by up to 36%, citing an April 2023 study with a Big Three global management consulting company, and reports Shop Pay as up to 3x faster with 50% higher conversion compared to standard checkout. https://www.shopify.com/checkout 2

You might also be interested in

How to Design a Shopify Store for Jewellery Brands
Shopify store jewellery design, end to end: photography that shows scale, spec metafields, variant limits, gifting flows, and PDP trust signals.
Launch a Shopify Store in France (With Templates)
Launch a Shopify store in France: TVA and mentions légales, EPR/Triman, payments, shipping, and the template changes French buyers expect.
Klaviyo Flows for Skincare Brands on Shopify
Klaviyo flows for skincare brands: welcome, post-purchase education, replenishment, routine cross-sell and winback, with triggers, timing and segments.