Shopify Scripts were small pieces of Ruby code that let Shopify Plus stores customize checkout: tiered discounts, shipping rules, and which payment methods showed. They stopped running on June 30, 2026, replaced by Shopify Functions, which do the same jobs as installable apps on every plan.
- Scripts were Plus-only and powered discount, shipping, and payment logic at checkout.
- They stopped executing June 30, 2026, and the window to edit them had already closed April 15.
- Shopify Functions replace them, delivered as no-code apps that run on every plan and are faster.
- If your checkout logic quietly changed and you never migrated, a dead Script is the first thing to check.
Shopify Scripts were small pieces of Ruby code that ran during checkout on Shopify Plus stores. They let a merchant change what happened at checkout without touching the theme: a spend threshold that turned shipping free, a discount that only applied to a customer tag, a payment method hidden from certain carts. Most store owners never saw them as "code." They just knew the cart did the right thing.
They stopped running on June 30, 2026, and Shopify replaced them with a newer system called Functions. If you have heard the word "Scripts" in a nervous email from your agency or a Shopify notice and want the plain version of what they were and why their end matters, this is that guide.
I have been on all three sides of this. As an early Shopify employee I watched the checkout platform get built. As a merchant at WIN Brands Group I ran stores that leaned on this exact kind of checkout logic. As an advisor I have walked brands through the switch. So this is the version I would give a store owner over coffee, not the developer changelog. If you want the step-by-step recovery playbook instead, that lives in the full guide to life after Shopify Scripts.
A rule that ran
at checkout, in
the background.
A Shopify Script was a small program that ran the instant a shopper reached checkout. It looked at the cart, the customer, and the order, then adjusted something: a price, a shipping option, a payment method. It did this on Shopify's servers, in a language called Ruby, and it never appeared on the storefront as anything a customer would recognize as software.
Here is the useful mental model. Your theme controls how the store looks. Your apps add features. A Script was a rule that silently rewrote part of the checkout math for specific carts. "If this customer is tagged wholesale, use the wholesale price." "If the cart is over $75, make shipping free." "If the order ships to a country we do not support with this gateway, hide that payment option." Small rules, real money.
Two things about Scripts are worth fixing in your head, because they explain everything that follows. First, they were a Shopify Plus feature. Stores on the standard plans never had them, so their checkout customization was already handled by apps. Second, they were invisible by design. A working Script produced no banner, no admin note, nothing. It just made the cart behave. That invisibility is exactly why their shutdown caught so many stores off guard.
Three types, three
jobs at your
checkout.
Scripts came in three flavors, and knowing which ones a store used is the whole game, because the fix differs by type. Nearly every real-world use of Scripts falls into one of these three buckets. The table lays them out with the everyday version of what each one did.
| Script Type | What It Controlled | Everyday Example |
|---|---|---|
Line Item Pricing & discounts |
The price of individual items in the cart, and any discount applied to them. |
Most common Buy three, save ten percent. Bundle pricing. A discount that only fires for a "VIP" customer tag. |
Shipping Rates & options |
Which shipping methods appeared at checkout and what they cost. |
Common Free shipping over $75. Hiding a carrier for certain regions. A cheaper rate for loyalty members. |
Payment Method visibility |
Which payment methods showed, in what order, and to whom. |
Quietest Hiding an option for a country. Reordering gateways. Showing a method only above a cart size. |
If you are not sure which types your store ran, that is normal, and there is a report inside your admin that spells it out. I will point you to it in the "what to do now" section. For now, the thing to notice is that all three touch money or the buying experience directly. There was no such thing as a cosmetic Script.
This is the kind of platform call I help DTC operators make. If it is landing, the form takes two minutes.
Small code,
load-bearing
money.
Store owners underrate this part. A Script was often the only thing holding up a pricing promise a business had made to its customers. The wholesale buyer who was told they get 30 percent off. The loyalty tier that comes with free shipping. The promotion that stacks a code on top of an automatic discount. Take away the Script and the promise does not throw an error. It just stops being true.
That is different from most things that break on a website. When a theme breaks, you see it. When an app fails, you usually get an alert. A Script that stops running leaves the checkout looking completely normal while charging the wrong number. The store keeps taking orders. The totals are just off, in whatever direction the missing rule used to correct.
The most expensive place this shows up is B2B and wholesale. Across the Plus stores I have operated and advised, the wholesale pricing, the net-terms options, and the account-specific rules were the logic most likely to be sitting in a Script, and the least likely to get tested by the owner, because owners shop their own store as a retail customer. A wholesale buyer seeing retail prices is not a cosmetic bug. It is a broken contract.
"The dangerous Scripts were never the flashy ones. They were the quiet pricing rules a developer wired in three years ago that everyone forgot were load-bearing until the number at checkout was suddenly wrong."
So when people ask why a batch of Ruby code that most merchants never touched is worth understanding, that is the answer. Scripts were cheap to build, invisible in operation, and responsible for a real slice of what your store charged. That combination is exactly what makes their removal a thing to take seriously rather than a technical footnote.
Two dates.
Both now
behind us.
Shopify announced the Scripts deprecation back in 2024 and pushed the final deadline twice before it held. There were two dates that mattered, and as of July 2026 both have passed ([shopify.dev changelog, Shopify Scripts deprecation](https://shopify.dev/changelog/shopify-scripts-will-be-deprecated-on-june-30-2026)).
April 15, 2026 was when Shopify turned off the ability to create or edit Scripts. Anything already live stayed running, but frozen. From that day, no fixing a bug, no nudging a discount threshold, no tweaking a shipping rule. What was there was what you were stuck with.
June 30, 2026 was the hard stop. Every Script stopped executing. Discounts no longer applied, shipping rules no longer fired, payment logic no longer ran. Since July 1, shoppers have been hitting checkout without any of the customization those Scripts used to add.
It was fair to be skeptical of the date right up to the end, since the first two deadlines slipped. This one did not. The editing window closed in April as promised, the replacement platform was mature, and the plug came out on schedule. The stores that bet on one more extension are the ones cleaning up now.
If you migrated,
nothing. If you
didn't, read this.
The honest answer to "what does this mean for me" splits cleanly in two. If your team already rebuilt your checkout logic on Functions or a Functions-based app before June 30, the end of Scripts means nothing to you. Your checkout kept working, and you can move on. This is the outcome most well-supported Plus stores landed in.
If you did not migrate, the meaning is more concrete: some of your checkout is now behaving as if the customization was never there. And because a dead Script is silent, you may not know yet. These are the symptoms that point at a stopped Script rather than a random bug.
- 01 A tiered, bundle, or customer-tag discount stopped applying at checkout, or the cart total is higher than it should be for a qualifying order.
- 02 A free-shipping threshold no longer kicks in, or a carrier option you used to hide is showing again.
- 03 A payment method you deliberately hid is back, or gateways are in the wrong order.
- 04 A logged-in wholesale buyer sees retail pricing, or negotiated terms and tiers are gone. This one is the most expensive and the least visible.
Who is actually exposed here? Plus stores, and the longer a store has been on Plus, the higher the odds. A brand that has run on Plus for years has usually accumulated a Script or two that a past developer added and nobody documented. That is the trap: the risk is highest exactly where the institutional memory is thinnest. If you are weighing whether Plus still earns its cost given all this, that question is worth its own look, and I break it down in the real triggers for moving to Shopify Plus.
Functions do the
same jobs,
only better.
Shopify Functions are the replacement, and for most merchants the swap is a real upgrade rather than a downgrade dressed up as one. Functions handle the same discount, shipping, and payment logic Scripts did. The difference is how they run and who can use them.
Three things changed for the better. Functions run on every Shopify plan, not just Plus, so checkout customization is no longer gated behind the top tier. Most merchants get them through no-code apps in the Shopify App Store, so the common jobs (tiered discounts, BOGO, free-shipping thresholds, hiding payment methods) no longer need a developer. And they are faster: Functions compile to WebAssembly and run under a hard 5-millisecond cap, so they do not add the checkout latency a heavy Script could under peak load ([shopify.dev, About Shopify Functions](https://shopify.dev/docs/apps/build/functions)).
| Question | Shopify Scripts | Shopify Functions |
|---|---|---|
Who can use it? |
Shopify Plus only |
Every Shopify plan |
Do I need a developer? |
Yes, Ruby code |
Usually no, no-code apps cover the common cases |
Is it fast? |
Variable, could lag under load |
Under a hard 5ms cap, no slowdown |
Is it still supported? |
No, off since June 30, 2026 |
Yes, Shopify's long-term platform |
There is a nuance on plans worth knowing. Any store can install a public app that uses Functions under the hood, which is how most no-code migrations happen. Only Plus stores can deploy fully custom, private Functions built specifically for their business. So if you are on a standard plan, the app route is your path, and for the vast majority of stores that is plenty. For app founders, the same shift opened a real building opportunity, which I cover in the checkout extensibility and Functions opportunity.
Three moves,
in order of
urgency.
If you have read this far and are not sure where your store stands, you do not need a project plan yet. You need to answer one question: did anything at your checkout change on its own? Three moves get you there, and the good news is the deadline pressure is gone, so nothing here is a scramble.
That is the short version. The full recovery playbook, with the migration paths, the cost of each, the edge cases that do not port cleanly, and a step-by-step plan, is the companion to this piece: what to do now that Shopify Scripts are switched off. If you are rethinking your broader setup while you are in here, it is also a fair moment to look at what actually belongs in your Shopify stack at each revenue stage.
Questions I keep
getting asked.
If your Scripts situation is tangled, custom B2B pricing, a stack of undocumented rules, or you just want a second set of eyes before you commit to a migration path, that is the kind of call I help operators make. The DTC brand practice is where we work it through. The form takes two minutes: start the conversation.
Scaling a consumer brand?
I work with a deliberately small number of DTC operators. I've run brands at this scale myself, from $5M past $100M. Not theory. If you're in that range, the form takes two minutes.
Start a conversation More about Taylor →