← Articles · Shopify

Shopify Checkout Extensibility: What It Means for Plus Merchants

12 May 2025 · 3 min read

For years, Shopify Plus merchants customised their checkout using checkout.liquid — a Liquid template that gave you direct control over the checkout HTML. It was powerful, fragile, and a maintenance headache every time Shopify updated their checkout infrastructure.

That's gone now. Shopify has replaced it with Checkout Extensibility, a fundamentally different approach that trades raw template access for a structured, API-driven customisation model.

What changed

Instead of editing HTML templates, you now build checkout customisations using Checkout UI Extensions (React-based components that render in Shopify's checkout) and Shopify Functions (server-side logic for discounts, validation, and shipping).

The checkout itself is owned by Shopify. You can't change its core layout or override its styles arbitrarily. What you can do is inject components at defined extension points — before the shipping method selector, after the order summary, in the payment section, and so on.

Why this is actually better

I know the initial reaction for anyone who had a heavily customised checkout.liquid setup. It feels like losing control. But the old model had real problems.

Every checkout.liquid customisation was a liability. Shopify couldn't update their checkout infrastructure without risking breakage for merchants who'd modified the template. Security patches, performance improvements, new payment methods — all gated by backwards compatibility with custom templates.

With Checkout Extensibility, Shopify can evolve the checkout independently. Your extensions run in a sandboxed environment. They're versioned, they're testable, and they don't break when Shopify ships an update.

What you can build

The extension points cover most common customisation needs:

  • Custom fields — gift messages, delivery instructions, VAT numbers
  • Upsells and cross-sells — product recommendations at checkout
  • Loyalty and rewards — points display, redemption flows
  • Address validation — postcode lookups, address formatting
  • Payment customisation — hiding or reordering payment methods based on rules
  • Shipping customisation — filtering or renaming delivery options
  • Order validation — blocking checkout based on business rules

Shopify Functions handle the logic side: custom discount calculations, delivery rate filtering, and payment method validation. They run on Shopify's infrastructure, so there's no external server to manage. I've written a more detailed developer's guide to Shopify Functions if you want to dig deeper.

What you can't do (yet)

There are limitations. You can't completely redesign the checkout's visual appearance. You can't add arbitrary JavaScript. The extension points, while comprehensive, don't cover every possible location in the checkout flow.

For most brands, these constraints are acceptable. If your checkout customisation was purely cosmetic — matching brand colours and fonts — Shopify's branding settings now cover the basics. If it involved genuine functional changes, Checkout Extensibility probably handles it.

The migration path

If you're still on a checkout.liquid setup, the migration timeline is now. Shopify has been firm about deprecation dates, and the longer you wait, the more compressed your timeline becomes.

Start by auditing your current checkout customisations. List every modification, categorise them by type (visual, functional, data capture), and map each one to the available extension points. Some will translate directly. Others may need rethinking.

It's a real project — not a weekend task — but the result is a checkout that's faster, more secure, and won't break without warning. For a look at where all of this is heading, see my thoughts on the future of Shopify checkout.

Need help with this?

If you're working on something related and could use an extra pair of hands, I'm available for project work. No obligation — just a conversation.

Get in touch →