Shopify Scripts — the Ruby snippets that Plus stores used for years to customize discounts, shipping, and payment options — stopped executing on June 30, 2026. That date has passed. If your store had Scripts, they are not running anymore, whether or not anyone rebuilt them.
The stores that planned for it are fine. The ones we worry about are the stores where a Script was written in 2019 by an agency that no longer works there, and nobody remembers what it did. This post is the checklist we use to find that logic and put it back — on Shopify Functions, which is the replacement.
First: did you actually have Scripts?
The Script Editor app is where they lived. If it's still installed, open it and read every Script, even the disabled ones — disabled Scripts often document a business rule someone still expects to work. If the app was already uninstalled, look at your discounts, shipping settings, and checkout for behaviour that Shopify's native settings can't produce. Common tells:
- Tiered or volume pricing that isn't a native automatic discount (buy 3 get 15%, buy 6 get 25%).
- Wholesale or tagged-customer pricing applied automatically at checkout.
- Free shipping that depended on cart contents or customer tags rather than a simple threshold.
- Shipping methods hidden or renamed for certain products ("no express for hazmat").
- Payment methods hidden for some customers or order values ("no COD over $500").
- Gift-with-purchase logic that added a product for free.
Every one of those was almost certainly a Script. If it still appears to work, it's because someone rebuilt it — verify who and how, because it may be a temporary patch.
Where each Script goes now
Functions are Shopify's server-side extension points. Unlike Scripts (Plus only, Ruby, editable in the admin), Functions are compiled to WebAssembly, ship inside an app, and are available on more plans depending on the API. The mapping is fairly direct:
- Line-item and cart discounts → the Discount Function API (product, order, and shipping discounts now live under one API).
- Shipping method changes → Delivery Customization (hide, rename, reorder) and, for rate generation, the delivery option generator APIs.
- Payment method changes → Payment Customization (hide, rename, reorder).
- Bundles and gift-with-purchase → Cart Transform (merge, expand, or add line items).
- Blocking checkout under conditions → Cart and Checkout Validation.
Two practical differences catch people out. First, Functions run inside an app — either a public app that already does what you need, or a custom app your team owns. Second, they're configured through discount or customization records in the admin, not by editing code in a text box. Your merchandising team's workflow changes.
Build, buy, or both
For common patterns — volume discounts, B2B pricing tiers, basic free-gift rules — the App Store has mature Function-based apps and it's usually cheaper to configure one than to write your own. For genuinely bespoke logic ("apply the distributor's negotiated rate card from Business Central, then cap the discount at margin floor"), a custom Function is the honest answer, and it's less code than the old Script was once you've done one.
What we tell clients: don't rebuild every Script 1:1. Some of them existed to work around limitations Shopify has since removed natively — combinable discounts, B2B catalogs, and Markets pricing cover a lot of ground now. Rebuild what still needs to exist.
Test like it's a launch
Because the failure mode here is silent — a discount simply doesn't apply, and the customer pays more or abandons — we test Function migrations the same way we test a new store:
- Write down every rule from the old Scripts in plain language, with an example cart for each.
- Run each example cart on a development store with the Function installed and check the total to the cent.
- Check the combinations: two rules that could both apply, a discount code on top of an automatic discount, a tagged customer with a free-shipping cart.
- Watch real orders for a week and compare discount totals against the same week last month.
If discount revenue changed sharply after June 30 and nobody planned it, that's your signal that a Script quietly stopped.
The bigger cleanup
The Scripts deadline is a good excuse to audit everything else in checkout: which apps inject what, which customizations are still on checkout.liquid patterns (also gone), and whether the store is on Checkout Extensibility end to end. We cover that in the Shopify section of our internal audit playbook, and it's part of any Plus engagement we take on.
If you're not sure whether something is still running, that's exactly the situation to ask about. We'll read the store and tell you what we find — see Shopify Plus services, or book a free consultation. If your logic depends on an ERP or CRM, our integrations page covers how the rate cards and stock levels get into Shopify in the first place.