Sooner or later a merchant asks for something inside checkout: a delivery-date picker, a gift message, a rule that hides a payment method for certain orders, a wholesale discount nobody sells as an app. The first question isn't "how do we build it?" but "which Shopify plan does this need?", because the answer decides whether the job costs a few days or a plan upgrade.
Here's how we map checkout requests to plans, based on Shopify's developer docs as of November 2026.
The three tools you'll use
Since checkout.liquid was retired, checkout is customised with three things:
- Checkout UI extensions: React-style components rendered at defined extension targets in checkout, the Thank you page and the Order status page.
- Shopify Functions: server-side logic (compiled to WebAssembly) that Shopify runs for discounts, delivery customisations, payment customisations, cart validation and more.
- Checkout branding: colours, fonts, corner radius and so on, via the checkout editor or the GraphQL Admin API.
Each one has its own plan rules.
Rule 1: UI in the information, shipping and payment steps is Plus-only
Shopify's docs are explicit: Checkout UI extensions for the information, shipping and payment steps are available only to stores on a Shopify Plus plan.
So these are Plus jobs:
- a delivery-date or time-slot picker on the shipping step
- a "gift message" field that writes to an order metafield
- an upsell block or loyalty-points banner inside checkout
- B2B purchase-order number fields on the payment step
On standard plans you can still add extensions to the Thank you and Order status pages. That's often enough for post-purchase surveys, tracking links or a "join our loyalty programme" prompt. Ask whether the field has to be collected before payment. If it can be collected after, you may not need Plus.
// Thank you page extension: works on non-Plus stores
// (React syntax; newer API versions use Shopify's Preact-based components, same targets)
import {reactExtension, Banner, Link} from '@shopify/ui-extensions-react/checkout';
export default reactExtension('purchase.thank-you.block.render', () => (
<Banner title="Track your order">
You'll get tracking by email. Questions? <Link to="/pages/contact">Contact us</Link>.
</Banner>
));
Rule 2: Functions from public apps work on all plans; custom Functions need Plus
This is the one that catches teams out. Shopify Functions run on every plan except Starter, but only when they ship inside a public app from the Shopify App Store. Shopify's docs state that only stores on a Shopify Plus plan can use custom apps that contain Shopify Function APIs.
In practice:
| Request | Non-Plus route | Plus route |
|---|---|---|
| Tiered volume discount | Public discount app | Custom discount Function |
| Hide COD above a threshold | Public payment-customisation app | Custom payment Function |
| Rename or reorder shipping rates | Public delivery-customisation app | Custom delivery Function |
| Block checkout if cart breaks a rule | Public validation app | Custom cart/checkout validation Function |
Before quoting custom work for a non-Plus store, spend twenty minutes in the App Store. If a public app already implements the Function you need, the merchant gets it without upgrading. If the logic is truly bespoke (customer-tag pricing tied to an ERP, say), you're looking at Plus or a public app you'd have to build and list.
A minimal discount Function input query looks like this:
query RunInput {
cart {
lines {
quantity
merchandise {
... on ProductVariant { id }
}
}
buyerIdentity {
customer { hasAnyTag(tags: ["wholesale"]) }
}
}
}
The logic is the same on any plan. What changes is how it can be distributed.
Rule 3: API-driven checkout branding is Plus
All plans can use the checkout editor's branding settings. Applying deeper branding through the GraphQL Admin API (checkoutBrandingUpsert) is a Plus capability. If a brand needs pixel-level control (custom typography scales, section-level colour schemes), plan for Plus.
Other limits that push stores to Plus
Checkout isn't the only reason. From Shopify's plan comparison:
- API rate limits: standard on Basic and Grow, up to 2x on select APIs on Advanced, up to 10x on Plus. Heavy ERP or inventory syncs feel this first.
- B2B catalogs: up to 3 on standard plans, unlimited on Plus.
- Headless storefronts: 1 on standard plans, 25 on Plus.
- Staff accounts: 15 on Advanced, unlimited on Plus.
A quick triage checklist
When a checkout request comes in:
- [ ] Does it need UI before payment (information, shipping or payment step)? If yes, it needs Plus.
- [ ] Can it live on the Thank you or Order status page instead? Then it works on any plan.
- [ ] Is it discount, shipping, payment or validation logic? Search the App Store for a public app with a Function first.
- [ ] Is the logic bespoke to this merchant? Then it's a custom app with Functions, which needs Plus.
- [ ] Does it involve API-level branding, more than 3 B2B catalogs, or higher API limits? Those also need Plus.
Getting this right at the scoping stage saves an awkward conversation halfway through a build. If you'd rather hand the whole thing to a team that does this every week, our Shopify development services cover checkout extensions and Functions on every plan, including Plus.
FAQ
Can I still edit checkout.liquid?
No. Shopify replaced checkout.liquid with checkout extensibility (UI extensions, Functions and branding). Stores that used it had to upgrade.
Do Shopify Functions work on the Basic plan?
Yes, when they come from a public App Store app. Custom apps containing Functions need Plus.
Is a Thank you page extension enough for a post-purchase survey?
Usually yes, and it works on non-Plus plans.
Where do I check the current rules?
Shopify's docs on checkout customisation technologies and Checkout UI extensions. Plan availability changes, so check them before quoting.
Written by Sushil Barwal at Dzimark, a web, Shopify and AI development company working with businesses in the USA, UK, Canada and Australia.
Top comments (0)