Scripts are gone, and the replacement is more capable and harder to reach at the same time. That's the honest one-line summary of Shopify Functions, and the rest of this post unpacks it: what each Function API actually does, what the platform allows, and how to tell whether your idea needs a developer or just the right app.
The part nobody says clearly enough
A Function is not a script. There's no code box in the admin. Functions are compiled programs (WebAssembly) that ship inside an app and run on Shopify's servers during checkout.
How that app reaches your store decides everything:
- Public apps from the App Store that contain Functions work on every plan.
- Custom apps built for one store and containing Functions require Shopify Plus. That's Shopify's rule, not an app developer's upsell.
So the decision tree is short. If a public app already does what you need, install it. If your need is custom and you're on Plus, a developer builds you a small custom app. If your need is custom and you're not on Plus, you either adapt to an existing app's shape or look at Shopify's no-code options like Checkout Blocks, which we'll cover in its own series.
What each API actually does
The current Function APIs, in plain English:
| API | What it controls |
|---|---|
| Discount | Product, order, and shipping discounts with your logic: tiers, member pricing, stacking rules |
| Cart Transform | Rewrites cart lines: merge components into bundles, expand kits, update line titles and images |
| Cart & Checkout Validation | Blocks checkout with a message when rules aren't met: limits, minimums, address rules |
| Payment Customization | Hides, renames, and reorders payment methods by order, customer, or market |
| Delivery Customization | Hides, renames, and reorders shipping options the same way |
| Fulfillment Constraints | Forces items to fulfill together or from the same location |
| Order Routing Location Rule | Ranks which location fulfills an order, by your rules |
| Local Pickup / Pickup Point Generators | Generates pickup options and external pickup-point networks at checkout |
The full API documentation lives at shopify.dev/docs/api/functions. If you want the applied version, we put together The Shopify Functions Playbook: 25 concrete builds across those APIs, free, with the constraints stated per idea.
The constraints that shape what's buildable
Functions run inside checkout, so Shopify enforces discipline that Scripts never had:
- Deterministic only. No randomness, no clocks, no network calls in most APIs. The same input always produces the same output.
- Hard performance budgets. There are instruction-count limits, and Shopify recommends Rust over JavaScript for anything complex or anything touching every line of large carts.
- Configuration flows through metafields and cart attributes. A Function can't call your ERP mid-checkout. Whatever it needs to know (VIP flags, bundle definitions, thresholds) has to already be on the customer, product, or cart.
These constraints are good news in disguise: checkout stays fast, and Function behavior is testable and predictable in a way Scripts never quite were.
So: do you need a developer?
Three questions settle it.
- Does a public app already do this? Genuinely check first. Lots of Function-powered apps exist for bundles, shipping rules, and payment hiding.
- Is your logic store-specific? Pricing rules tied to your ERP fields, validation tied to your operations, bundles tied to your catalog structure: that's custom territory.
- Are you on Plus? Custom Functions apps need it. If you're not, the conversation changes to public apps and no-code tooling rather than custom code.
If you land on "custom," that's a small, well-bounded app project, not a replatform. We've built on Shopify for over a decade, migrated plenty of stores off Scripts, and we'll tell you plainly if your idea doesn't need us. Start with the playbook, and if something in it fits your store, get in touch.

Comments
Every comment here comes from a verified email. Write yours, confirm from your inbox, and it's live.
Loading comments…