Shopify Functions: What You Can Customize Now That Scripts Are Going Away

14 min read
26 Aug, 2026

Functions are how you write custom business logic that runs inside Shopify's checkout — discount rules, delivery options, payment method behaviour, cart validation. They're a Plus capability, they replaced Scripts, and they run server-side on Shopify's infrastructure rather than as a script layered on top. If you're on Plus and still running Scripts, migration is the work in front of you. If you're not on Plus, Functions are the single most defensible reason to consider it — but only if you genuinely need logic that native discount and shipping settings can't express, which most stores don't.

AI Summary

Shopify Functions are custom server-side code units that extend Shopify's backend logic, available on Shopify Plus. They cover discount logic, delivery and shipping option customisation, payment method visibility and ordering, cart and checkout validation, and cart transformation such as bundling. Functions replaced Shopify Scripts, the earlier Ruby-based customisation layer, as part of Shopify's move to Checkout Extensibility and away from checkout.liquid. Functions run on Shopify's infrastructure rather than as an overlay, which improves performance and reliability compared with Scripts. They are written in languages compiling to WebAssembly, commonly Rust or JavaScript, and deployed as Shopify apps. Development typically requires a Plus-experienced developer. Stores not on Plus should first confirm whether native discount, shipping and payment settings can express their requirement before treating Functions as a reason to upgrade.

For years, the honest answer to "can we customise Shopify checkout?" was mostly no, and the workarounds were ugly. Scripts gave Plus merchants a way to bend discount and shipping behaviour, but they were a layer bolted onto a checkout that wasn't designed to be modified.

Functions changed the answer. They're custom logic that runs inside Shopify's own backend at the moment a decision gets made — what discount applies, which delivery options appear, whether this payment method shows, whether this cart is allowed to proceed. Not a script sitting on top of the checkout. Part of how the checkout works.

Two things follow from that, and they matter differently depending on where you are.

If you're on Plus running Scripts: Scripts are being retired as part of Shopify's move to Checkout Extensibility, and migration to Functions is work you need on a roadmap rather than a wishlist. This is the deadline-driven half of the article.

If you're not on Plus: Functions are the most defensible single reason to upgrade — and only if you genuinely need logic native settings can't express. Most stores that think they need custom discount code actually need a better-configured discount, which is free.

Shopify's checkout and extensibility roadmap has moved repeatedly, including deprecation timelines. Confirm current dates and capabilities on Shopify's developer documentation rather than relying on any article's stated timeline.

What Functions can actually do

Functions cover specific decision points in the purchase flow. The main ones:

Function typeWhat it controlsTypical use
DiscountsHow discounts calculate and combineTiered volume pricing, customer-segment pricing, complex BOGO logic, spend thresholds native rules can't express
Delivery customisationWhich shipping options appear and howHiding express for oversized items, reordering options, renaming methods by condition
Payment customisationWhich payment methods showHiding cash on delivery above an order value, restricting methods by region or customer type
Cart and checkout validationWhether a cart can proceedMinimum order quantities, restricted product combinations, B2B purchase rules, licence requirements
Cart transformHow line items are representedBundles that expand into components, custom pricing on grouped items

The pattern: Functions govern logic and rules, not appearance. If you want to change how checkout looks — add a field, insert content, change layout — that's Checkout UI Extensions, a different mechanism, and the pairing is covered in Shopify checkout setup. People conflate them constantly and then scope the wrong project.

The other thing worth naming: Functions run server-side on Shopify's infrastructure. That means they're fast, they don't add front-end weight, and they can't be bypassed by a customer manipulating the browser — which matters when the logic is enforcing a business rule rather than suggesting one.

Scripts are being retired — what that means for you

If you're a Plus merchant with Scripts in production, this is the section that matters.

Scripts were Shopify's earlier customisation layer, written in Ruby and running on the legacy checkout. Functions replace them as part of the broader move to Checkout Extensibility and away from checkout.liquid. The direction has been clear and consistent even as specific dates have shifted.

What migration actually involves:

  • Inventory what you're running. Most Plus stores have Scripts nobody documented, written by a developer who's moved on, doing something nobody can fully explain. Finding out what exists is genuinely step one.
  • Decide what still needs to exist. Some Scripts encode rules that stopped mattering years ago. Migration is a good moment to delete rather than port.
  • Rebuild, don't translate. Functions aren't Ruby and the architecture differs. This is a rewrite against different primitives, not a syntax conversion.
  • Test the combinations. Discount logic interacts — stacking rules, edge cases at thresholds, behaviour with gift cards and returns. This is where migrations break, and it breaks in production on the highest-volume day.
  • Don't do it during peak. Same rule as every other migration.

The risk of leaving it: when a deprecated system finally stops working, your discount logic stops applying or your shipping rules stop enforcing, in checkout, live. That's not a graceful degradation. Treat it as a scheduled project rather than something to handle when it breaks.

The broader checkout migration context sits with checkout customization specialists.

Do you actually need Functions?

Before treating Functions as a reason to upgrade, check whether you need them at all. Most stores don't, and the ones that do usually know exactly why.

Try native first. Shopify's built-in discount system handles a great deal — automatic discounts, codes, combinations, thresholds, buy-X-get-Y. Shipping settings handle zones, weight and price-based rates, and free shipping thresholds. The setup guides are Shopify discounts setup and shipping setup. A large share of "we need custom discount logic" conversations end when someone configures the native discount properly.

Then check apps. Many discount, bundle and shipping-rule apps exist precisely because merchants needed logic beyond native settings, and plenty run on Functions themselves. Buying an app that already solved your problem beats commissioning a build — the same judgement that separates a Shopify specialist from a generalist, covered in expert vs generalist developers.

Genuine Functions territory:

  • Pricing logic depending on customer attributes, contract terms or account-specific rules
  • B2B rules — minimum quantities, restricted combinations, account-based pricing tiers
  • Delivery or payment rules conditional on product properties like weight, hazard class or licence requirements
  • Bundle logic where the cart representation itself needs to change
  • Rules that must be enforced server-side because the business depends on them holding

If none of those describe you, Functions aren't your reason to move to Plus. The wider question of whether you've genuinely outgrown your setup is in signs you've outgrown your Shopify setup.

How Functions work, practically

Enough to scope a project and evaluate a developer, without needing to write any yourself.

Functions are code, deployed as apps. They're written in languages compiling to WebAssembly — commonly Rust or JavaScript — and deployed through a Shopify app, either a custom app for your store or a public one. That means a Functions project has an app lifecycle: development, deployment, versioning, updates.

They run server-side and fast. Shopify enforces performance limits, which is why Functions don't slow checkout the way front-end scripts do.

They're configurable after deployment. Good Functions are built so the rules are adjustable through settings rather than hard-coded, which means your team can change a threshold without a developer. Ask for this explicitly — a Function with hard-coded values means a ticket every time a rule changes, which is the same trap as a hard-coded theme.

What this implies for hiring: this isn't general Shopify work. A developer excellent at Liquid themes may never have shipped a Function. Ask for Functions specifically — what they've built, in what language, and how they handled testing discount interactions. Vagueness there is your answer.

Ongoing ownership matters too. A Function is code you now own, needing maintenance as Shopify's APIs evolve. Establish who maintains it before the build, not after the developer disengages.

What it costs and where projects go wrong

Cost. Functions development is specialist Plus work and priced accordingly — the ranges by project type are in Shopify Plus development cost. A single well-scoped Function is a contained project; a suite of interacting discount and validation rules with a Scripts migration behind it is a substantial engagement.

Where projects go wrong:

  • Building before checking native. The most expensive avoidable mistake, and it happens because the developer was asked to build rather than asked whether to build.
  • Hard-coding the rules. Guarantees a developer ticket every time a threshold changes.
  • Not testing interactions. Discounts stack, conflict and behave oddly at boundaries. Test combinations, not just individual rules.
  • Forgetting the edge cases. Returns, partial refunds, gift cards, draft orders, subscription renewals — all touch discount logic and all surface later.
  • No documentation. Exactly how stores end up with Scripts nobody understands. Don't recreate that problem with Functions.
  • Treating it as a one-off. Functions need maintenance as APIs change.

Who to hire: Shopify Functions development experts for the build, checkout customization for wider checkout work, and Plus consulting if you're still deciding whether the upgrade is justified. Regional lists: United States, United Kingdom, Australia, Canada, Germany.

Still running Scripts, or need logic native settings can't express?

Matias Lopez
ML
Front-End DeveloperArgentinaFrom $70
4.96(153 reviews)
shopexpertsscore
85

I have over five years of experience in web development using technologies such as Shopify, Angular, Node.js, JavaScript, React, Vue, MongoDB, MySQL, and PHP. My journey with Shopify started when I joined Hey Carson, now known as 'Shop Experts', successfully completing their trial period. I have gained significant experience in Shopify development. I've worked in complex tasks such as integrating Shopify apps, Shopify Admin API, custom design development, apps extensions development, theme development and much more. Over the past few years, I've acquired what I believe is a solid understanding of Shopify development, which helps me deliver high-quality solutions to the clients I've worked with.

Sumit Chakradhar
SC
Shopify Plus EngineerNepalFrom $100
4.96(127 reviews)
shopexpertsscore
100

10+ years, 500+ Shopify store owners, and countless successful projects—I'm a top-rated Shopify expert dedicated to helping brands improve their store's conversion, speed, functionality, and aesthetics. As the longest-serving developer at Shopexperts (formerly HeyCarson), I've built my reputation on meticulous attention to detail, reliability, and unwavering commitment to client success. My work speaks for itself —check out reviews from past clients who can attest to my dedication and results-driven approach.

Muhammad Asad ullah baig
MA
Theme DeveloperPakistanFrom $100
5.00(13 reviews)
shopexpertsscore
100

Turn Your Shopify Store Into a Reliable Sales Engine If you're looking for a Shopify developer who understands both the technical side and the business outcomes behind it, you're in the right place. As a Shopify Certified Developer with 10+ years of hands-on experience, I've worked with 100+ brands across fashion, apparel, beauty, food, fitness, and electronics to build stores that are fast, scalable, and built to convert. Whether you're a founder launching your first store or an established brand ready to level up, I bring the expertise to get you there. What Gets Delivered: Every project is approached with one goal, growth. Here's what that looks like in practice: Custom Shopify Theme Development — Figma and Adobe XD designs transformed into clean, maintainable Liquid-based themes optimized for performance and long-term scalability Store Redesigns & UX Improvements — Navigation restructured, friction points removed, and user journeys refined to drive more conversions without disrupting live traffic Speed & Performance Optimization — Core Web Vitals improvements, faster page load times, and technical SEO fixes that directly impact search rankings and reduce bounce rate Custom Feature Development — Bundles, upsells, subscriptions, loyalty programs, and third-party API integrations tailored to specific business models Store Migrations & Ongoing Support — Smooth, low-risk platform migrations and dependable technical maintenance that keep operations running without interruption Why Brands Keep Coming Back: Every architecture decision, layout choice, and integration is guided by one question: Does this help the business grow? Clean code and structured development aren't just standards — they're what make a store reliable at scale. Founders launching from scratch, in-house teams needing a trusted technical collaborator, and agencies looking for a dependable Shopify specialist, all have found long-term value in this kind of partnership. Ready to Grow Your Shopify Store? Whether it's a full custom build, a performance overhaul, or targeted improvements to boost conversions, let's map out a clear path forward. Reach out to discuss your goals and what's possible.

Frequently asked questions about Shopify Functions

What are Shopify Functions?
Shopify Functions are custom server-side code units that extend Shopify's backend logic at specific decision points in the purchase flow. They control how discounts calculate and combine, which delivery options appear, which payment methods show, whether a cart passes validation, and how line items are represented for bundling. Functions are available on Shopify Plus and run on Shopify's own infrastructure rather than as a script layered on top of checkout, which makes them fast and impossible to bypass from the browser.
What is the difference between Shopify Functions and Scripts?
Scripts were Shopify's earlier Ruby-based customisation layer running on the legacy checkout. Functions replace them as part of Shopify's move to Checkout Extensibility and away from checkout.liquid. Functions run server-side on Shopify's infrastructure rather than as an overlay, are written in languages compiling to WebAssembly such as Rust or JavaScript, and are deployed as Shopify apps. Migration is a rebuild against different primitives rather than a syntax conversion.
What is the difference between Functions and Checkout UI Extensions?
Functions govern logic and rules; Checkout UI Extensions govern appearance and interface. If you want to change how a discount calculates, which shipping options appear or whether a cart can proceed, that is a Function. If you want to add a field, insert content or change the layout of the checkout page, that is a UI Extension. These are frequently confused, which leads to projects being scoped against the wrong mechanism.
Do you need Shopify Plus for custom discount logic?
Only if you genuinely need logic that native settings cannot express. Shopify's built-in discount system handles automatic discounts, codes, combinations, thresholds and buy-X-get-Y, and native shipping settings handle zones, weight and price-based rates. Many merchants who believe they need custom discount code actually need a properly configured native discount, which costs nothing. Check native settings first, then check whether an existing app solves it, before treating Functions as a reason to upgrade to Plus.
How do you migrate from Shopify Scripts to Functions?
Start by inventorying what Scripts you are actually running, since most Plus stores have undocumented Scripts written by developers who have moved on. Decide which rules still need to exist, because migration is a good moment to delete rather than port. Rebuild rather than translate, as Functions use different architecture and languages. Test discount interactions and edge cases including returns, gift cards and draft orders. Do not schedule the migration during peak trading.
What should you ask a developer before commissioning a Function?
Ask for Functions experience specifically rather than general Shopify development, since a developer skilled in Liquid themes may never have shipped one. Ask what Functions they have built, in which language, and how they tested discount interactions. Also require that rules be configurable through settings rather than hard-coded, so your team can adjust a threshold without raising a developer ticket, and agree who maintains the Function afterwards as Shopify's APIs evolve.

Next step

If you're on Plus with Scripts in production, inventory them this quarter and put the migration on a roadmap. That's a scheduled project now or an outage later.

If you're evaluating Functions as a reason to move to Plus, configure your native discounts properly first and check whether an app already solves it. If the requirement survives both tests, it's real — and Functions are the right answer.

For a Scripts audit, a Functions build, or an honest read on whether you need either, browse Shopify Functions development experts or Plus consulting specialists. Free matching, verified experience, no commissions.