Checkout extensibility, rewired.
Checkout UI Extensions, Functions, and Web Pixels on Shopify Plus. Migrate off checkout.liquid before the sunset. Upsell, custom fields, loyalty, compliance, all on the new extension surfaces.
checkout.liquid is already gone. Here is what replaces it.
Shopify deprecated the checkout.liquid template for Plus merchants through 2024. Information, Shipping, and Payment page customizations ended August 2024; Thank You and Order Status followed. If you are still on checkout.liquid in 2026, your checkout is losing features every quarter and blocking new Shopify releases. Every customization you had maps to a new surface. This page is the map.
| Date | What ended | Replacement |
|---|---|---|
| 2023 | Shopify Scripts deprecation announced | Migration path to Shopify Functions published. Functions docs shipped. |
| Aug 2024 | Information, Shipping, Payment checkout.liquid ended | Checkout UI Extensions on the Purchase surface. |
| 2024 | Thank You page checkout.liquid deprecation | Checkout UI Extensions on the Thank You surface. |
| 2024 | Order Status page checkout.liquid deprecation | Checkout UI Extensions on the Order Status surface. |
| Ongoing | Shopify Scripts fully sunset | Shopify Functions mandatory for discounts, delivery, payment customization. |
| Now | New Shopify checkout features Plus-only | Deploy only to merchants on the new extensibility surfaces. |
The deprecation is not a warning; it is a line that has already been crossed. Plus merchants still on checkout.liquid are running a checkout that Shopify no longer ships features into. Every quarter that passes, the feature gap widens. The audit in § 10 produces a concrete migration plan within two weeks.
Every checkout.liquid pattern has a new home.
In three years of checkout.liquid work across Plus merchants, we inventoried the patterns that actually existed in production. Every one maps to a named replacement surface. Below is the translation table.
| Legacy pattern | New surface | Gain |
|---|---|---|
| Custom cart line-item note field | Checkout UI Extension @ cart-line-items | Keyed per line rather than cart-level. |
| Compliance wording before payment | Checkout UI Extension @ payment | Renders server-side, indexed in checkout analytics. |
| Country- or product-specific discount | Shopify Function (discount) | Sub-millisecond evaluation, free within limits. |
| Shipping method re-order | Shopify Function (delivery customization) | Native in checkout, no JS flash on render. |
| Hide cash-on-delivery above a cart total | Shopify Function (payment customization) | Deterministic, no race conditions. |
| Post-purchase upsell | Checkout UI Extension @ Thank You | Better mobile performance, one-click accept. |
| Review collection widget | Checkout UI Extension @ Thank You | Higher submission rate than email follow-up. |
| Pixel firing on purchase | Web Pixel + Meta CAPI | Server-side, survives iOS privacy changes. |
| Custom order-status tracking view | Checkout UI Extension @ Order Status | Embeds carrier tracking cleanly. |
| Subscription management link | Customer Account UI Extension | Shopify-native, no redirect to app. |
Old checkout torn away. New surfaces underneath.
Purchase. Thank You. Order Status. Customer Account.
Every Checkout UI Extension targets one of four surfaces. Each has a fixed set of named render targets, a distinct access context, and a distinct engagement profile. A well-planned checkout build puts the right feature on the right surface; put a review widget on the Purchase surface and your conversion drops.
Purchase
Information, Shipping, Payment, Review steps.
- Custom fields (VAT, gift notes)
- Compliance copy
- Loyalty points preview
- Product bundles visible
Thank You
Post-purchase confirmation page.
- One-click upsell
- Review collection
- Referral invite
- Welcome-to-loyalty
Order Status
Tracking page customers return to.
- Carrier tracking embed
- Reorder prompt
- Edit order (address, items)
- Support contact
Customer Account
Logged-in account area.
- Subscription manager
- Loyalty balance
- Past orders list
- Saved address book
Scripts out. Functions in.
Shopify Scripts shipped in 2016 as Ruby code that ran server-side during checkout. Shopify Functions replaced them with WebAssembly code written in Rust, JavaScript, or TypeScript. Four function types matter in production. The migration is mechanical and well-documented; the engineering value is in knowing which Function does what.
Discount
Buy-X-get-Y, tiered, loyalty-earned, free shipping over threshold. Replaces every Shopify Scripts discount pattern cleanly.
Delivery Customization
Rename, re-order, or hide shipping methods. Conditional on cart contents, customer tags, or destination.
Payment Customization
Hide or re-order payment options. Classic case: hide cash-on-delivery above a cart threshold or to high-fraud-risk regions.
Cart Transform
Expand parent SKUs into children (bundles), merge duplicates, apply automatic upgrades. The most powerful and least understood Function type.
Six upsell shapes. Each one measured.
Bundle upgrade in cart
Cart transform Function presents a bundled price when 3+ items in one collection sit in cart.
Free shipping threshold
Discount Function displays "$X to free shipping" in cart; extension renders progress bar.
Post-purchase one-click
Thank You page extension offers a complementary SKU at a Thank-You-only price, one-click accept.
Gift wrapping at payment
Purchase surface extension adds a paid gift-wrap line item before payment step.
Subscribe-and-save upgrade
Cart line extension offers subscription conversion on one-time items with percent discount.
Referral invite Thank You
Thank You extension shows a share-with-friend block with pre-written message.
Checkout changes ship behind flags.
Checkout is the last surface you want to ship with bugs. Every extension release runs through a documented test matrix covering device, region, payment method, and cart composition. Nothing lands on 100% of traffic on day one.
| Axis | Test coverage before 100% rollout |
|---|---|
| Device | iOS Safari, Android Chrome, iPad, desktop Chrome, desktop Firefox, desktop Safari. |
| Region | All primary markets tested; language, currency, tax all verified per region. |
| Payment method | Shop Pay, Apple Pay, Google Pay, PayPal, credit card, Shop Pay Installments, BNPL if enabled. |
| Cart composition | Single item, multi-item, mixed categories, subscription + one-time, gift card, digital + physical. |
| Rollout | 5% traffic for 7 days, 25% for 3 days, 50% for 3 days, 100% if metrics hold. |
| Kill switch | Shopify Admin feature flag toggle to full rollback within 60 seconds if a critical metric degrades. |
What breaks checkouts on real traffic.
BFCM load
Shopify Functions run within strict latency budgets. Under BFCM load, unoptimised Functions return empty, which silently drops discounts. We test every Function under 10× typical throughput before peak week.
PCI scope
Checkout extensions run in a sandboxed renderer with no access to card data. Confirmed on every build via Shopify's PCI shared responsibility matrix; no merchant scope expands because of extensions.
Tax interactions
Discount Functions and Cart Transform Functions interact with tax calculation. A discount applied after tax versus before tax changes the taxable base; mis-configuration can silently under-report VAT.
Subscription checkout
ReCharge and Shopify Subscriptions both have specific rules for what extensions can modify in a subscription cart. We validate the extension set against both before merging.
One Plus merchant. Eight-week migration.
A Big Game Sports-archetype athletic brand on Plus ran four checkout.liquid customizations that had accumulated over three years. The ask: migrate off before the deprecation line, no AOV regression, measurable post-purchase upsell improvement.
What shipped: 4 Checkout UI Extensions (cart-line custom field, compliance copy, shipping upsell, post-purchase bundle), 2 Shopify Functions (free shipping discount, CoD hide over $500), 1 Web Pixel (Meta CAPI server-side), customer account subscription manager. Rollout: 5% for 10 days, 25% for 5 days, 100% on day 45. Zero rollbacks.
Four shapes.
Audit
Inventory of checkout.liquid customizations, replacement map, migration plan.
Migration
Full off-checkout.liquid migration with feature parity plus measurable lift.
Upsell build
Post-purchase upsell, cart bundles, cross-sell on Thank You surface.
Retainer
Ongoing Functions, extensions, Web Pixels maintenance.
Who a checkout rebuild actually helps.
- Shopify Plus with existing checkout.liquid customizations still live.
- Running Shopify Scripts that need to migrate to Functions.
- AOV under $80 with no post-purchase upsell currently shipping.
- Subscription brand using checkout-liquid-rendered subscription toggles.
- Multi-market checkout with region-specific compliance requirements.
- Shopify Basic or Advanced (non-Plus). Bespoke checkout requires Plus.
- Already on Checkout UI Extensions with a strong AOV and no feature gap.
- Zero checkout.liquid code today and no plan to customize the checkout.
- Under $500K per year where Plus itself is already over-budget.
Seven questions Plus teams ask.
When does checkout.liquid stop working?
Shopify deprecated checkout.liquid for all Plus merchants in 2024, with the Information, Shipping, and Payment step customizations ending in August 2024 and the Thank You plus Order Status page customizations following. Merchants on legacy checkout.liquid have experienced degraded features and are blocked from new checkout features shipped on the new extensibility surfaces. A migration is not optional for any Plus merchant still on checkout.liquid.
What replaces checkout.liquid customizations?
Four extension surfaces replace it: Checkout UI Extensions for visual customization across Purchase, Thank You, Order Status, and Customer Account pages; Shopify Functions for discounts, delivery customization, payment customization, and cart transform; Web Pixels for server-side analytics that survive Safari and iOS privacy changes; and Shopify Apps for any deeper integration. Every checkout.liquid pattern we have migrated maps cleanly to one or two of these four.
Can we keep our existing checkout upsell on the new surfaces?
Yes. Most post-purchase upsells on checkout.liquid map directly to a Thank You page UI Extension, usually with better conversion because the new surface is native to Shopify and renders server-side. In-checkout product recommendations map to a Purchase page extension with product pick logic expressed in a Shopify Function. The migration audit names the exact replacement for every upsell element currently in your checkout.
Do Checkout UI Extensions work on non-Plus Shopify plans?
Limited. Shopify has opened some extension surfaces to all plans for app-distributed extensions, but merchant-owned checkout customization remains primarily a Shopify Plus feature. If you are on Shopify Advanced or lower, your practical path is installing extension-based apps from the Shopify App Store rather than building bespoke extensions. Full bespoke checkout engineering requires Plus.
How long does a checkout.liquid migration take?
A typical migration runs 6 to 10 weeks. Week one is the audit: every current checkout.liquid customization is inventoried and mapped to its replacement surface. Weeks two through five build the extensions and Functions. Weeks six and seven run in parallel with the existing checkout via feature flags. Weeks eight through ten are cutover, AB testing where useful, and post-launch monitoring. Simpler checkouts with only Thank You customizations finish in 3 to 5 weeks.
What are Shopify Functions and where do they fit?
Shopify Functions are server-side Wasm code that Shopify runs inside the checkout pipeline. They replace what used to live in Shopify Scripts plus some checkout.liquid logic. Four function types matter in practice: discounts (buy-X-get-Y, tiered, loyalty-earned), delivery customization (rename, re-order, hide methods), payment customization (hide or re-order payment options), and cart transform (bundles, expanded parent-child items). Functions are free to run up to generous limits and execute in single-digit milliseconds.
Will a checkout migration affect our conversion rate?
Short-term risk is real and we manage it with feature flags and a staged rollout. Long-term, the new surfaces typically lift conversion because they are faster, more mobile-optimized, and better integrated with Shop Pay. Our rollout pattern is: build extensions in parallel with the existing checkout, route 5% of traffic to the new surfaces, measure for 7 to 10 days, then ramp in 20% increments. If the new surface underperforms on any critical metric, we halt and investigate before continuing.
Two-week audit. Migration plan. Scoped quote.
Every Plus merchant still on checkout.liquid is running a checkout that Shopify no longer builds features into. The audit produces a concrete migration plan plus a scoped quote. Decide from there.
Book my 30-minute checkout audit call