Shopify Scripts stop running on June 30, 2026. No extensions, no grace period. If your store uses Scripts for BOGO deals, tiered discounts, or free gift logic, that checkout customization disappears in less than two months. The fix: set up Shopify Functions for custom discounts before the deadline hits.
Functions are already live, but most merchants haven't touched them yet. A Shopify Community thread from April 2026 showed dozens of Plus merchants who hadn't started migrating, even after Shopify locked Script editing on April 15. If that's you, this guide covers what Functions are, how they replace your Scripts, and how to set them up without writing code.
What Are Shopify Functions and Why Are They Better Than Scripts?
Scripts were Ruby snippets that ran inside the Shopify checkout. They worked, but they were slow, Plus-only, and limited to three types: line items, shipping, and payments.
Functions are compiled WebAssembly modules that execute inside Shopify's infrastructure in under 5 milliseconds. No cold starts. No performance tax on your checkout. And the biggest change: Functions work on every Shopify plan, not just Plus.
That means the tiered pricing and BOGO logic that used to cost $2,000/month in Plus fees plus a developer to maintain is now available to stores on Basic, Shopify, and Advanced plans — either through apps or custom builds.
Functions also cover more ground than Scripts ever did. Beyond discounts, they handle cart transforms, checkout validation, delivery customization, payment customization, and order routing. Scripts couldn't touch any of those.
Check What Scripts You're Actually Running
Before you migrate anything, figure out what you have. Shopify provides a Scripts customizations report in your admin — go to Settings → Checkout → Scripts to see every active Script.
Most stores run one of five common Scripts:
- BOGO (Buy One Get One) — buy product A, get product B free or discounted
- Free gift with purchase — cart exceeds $X, a specific item gets 100% off
- Tiered discounts — buy 2 save 10%, buy 5 save 20%, buy 10 save 30%
- Tagged customer discounts — VIP or wholesale customers get automatic pricing
- Shipping overrides — free shipping above a threshold, or rate modifications by region
Write down exactly which Scripts you're using and what they do. You'll need this list to pick the right replacement method.
Three Ways to Replace Your Scripts (Pick the One That Fits)
You don't have to build anything from scratch. Shopify gives you three migration paths, and the right one depends on how complex your discount logic is.
Option 1: Shopify's Native Discounts
Shopify's built-in automatic discounts now cover a lot of what Scripts used to do. Basic percentage-off deals, fixed-amount discounts, BOGO offers, and free shipping thresholds can all be set up in Discounts → Create discount without any app or code.
If your Script did something straightforward — like "10% off all orders over $100" — you probably don't need a Function at all. Shopify's native tool handles it. (If you haven't started any migration steps yet, read our Scripts migration guide first for the full context.)
Option 2: Install a Functions-Powered App
This is the right move for most merchants. If your discount logic is more complex — tiered pricing, conditional BOGO, customer-tag-based pricing, stacked discounts — a Functions-powered app from the Shopify App Store gives you the same checkout-level logic without writing code.
Several apps are built entirely on the Functions API:
- Kite: Discount & Free Gift — handles BOGO, free gifts, tiered discounts, and shipping promos through a visual interface
- AIOD (All in One Automatic Discount) — supports tiered discounts, BOGO, volume discounts, and works with Shopify POS
- Dealeasy — volume discounts, product bundles, BXGY offers, and tiered cart discounts
The setup for most of these takes 15–30 minutes. You pick your discount type, set your conditions, and the app creates the Function behind the scenes. For a broader comparison of options, see our best Shopify discount apps roundup.
Option 3: Build a Custom Function
If your Script has store-specific logic that no app covers — like discounting only items from a specific vendor when a tagged customer has exactly 3 items in the cart on a Tuesday — you'll need a custom Function.
Custom Functions require the Shopify CLI, a TOML configuration file, a GraphQL input query, and code that compiles to WebAssembly. Shopify recommends Rust, but any language that compiles to Wasm works. This path requires a developer.
For most stores, Option 2 is the sweet spot. You get the power of Functions without the development cost.
How to Set Up a Discount Function Using an App (Step by Step)
Here's the general process. The exact screens vary by app, but the workflow is the same:
- Install a Functions-powered discount app from the Shopify App Store. Check that the app listing mentions "Shopify Functions" or "Functions API" — this confirms it uses the modern infrastructure, not a workaround.
- Create a new discount rule. Choose the type: percentage off, fixed amount, BOGO, free gift, or tiered/volume pricing.
- Set your conditions. This is where you recreate your Script logic. Common conditions include minimum cart value, minimum quantity, specific products or collections, customer tags, and date ranges.
- Choose automatic or code-based. Automatic discounts apply at checkout without a code. Code-based ones require the customer to enter a code. A single Function can apply discounts across product, order, and shipping classes.
- Test with a real checkout. Place a test order that triggers your conditions. Verify the discount amount matches what your old Script would have applied.
- Disable your old Script. Once the Function-powered discount works correctly, turn off the corresponding Script in Settings → Checkout → Scripts.
Don't run both the Script and the Function simultaneously for the same discount. They'll conflict, and customers might get double discounts.
Recreating the 5 Most Common Scripts
Here's how each common Script type maps to Functions:
BOGO (Buy X Get Y): Use a product discount Function with a "buy X get Y" condition. Most apps have a dedicated BOGO template. Set the "get" product to 100% off for true BOGO, or a percentage for partial discounts.
Free gift with purchase: Same as BOGO, but triggered by cart value instead of a specific product. Set the condition to "cart total ≥ $X" and the gift product to 100% off. Make sure the gift product is set to auto-add to the cart — some apps handle this, others require you to use a cart transform Function.
Tiered discounts: Use a volume discount Function. Set quantity breaks with corresponding percentages: 2+ items = 10% off, 5+ = 20%, 10+ = 30%. The app calculates and applies the right tier automatically at checkout.
Customer-tag discounts: Use a product or order discount Function with a customer tag condition. Tag your VIP or wholesale customers in Shopify admin, then set the Function to apply their pricing when the tag matches. This is one area where EasySell's quantity discount tiers work well — you can show volume pricing directly on the product page so customers see their savings before checkout.
Shipping overrides: Use a delivery customization Function instead of a discount Function. This lets you rename, reorder, or hide shipping rates based on cart contents, customer location, or order value. Free shipping thresholds can also be handled by Shopify's native automatic discount.
What to Do Before June 30
You have less than two months. Here's the priority order:
- Audit your Scripts this week. List every active Script and what it does. If you don't know, check Settings → Checkout → Scripts in your Shopify admin.
- Test native discounts first. If Shopify's built-in automatic discounts can replace your Script, use them. Fewer apps means fewer dependencies.
- Install and configure a Functions app for anything native can't handle. Give yourself at least 2 weeks to test before relying on it.
- Run parallel for a week. Keep your Script active while the new Function is live on a test product or collection. Compare the discount outputs. Only disable the Script once you've confirmed they match.
- Disable Scripts before June 30. Don't wait for Shopify to kill them. Turning them off yourself lets you control the timing and catch issues while you can still revert.
If you're on a Plus plan and used Scripts for complex stacked discounts, start with Option 2 (an app) rather than trying to build custom Functions. You can always move to custom later — but missing the deadline with no replacement is worse than using an app that covers 90% of your logic.
The one upside to this forced migration: Functions are faster, available on every plan, and more capable than Scripts ever were. Your checkout just got an upgrade — you just need to claim it before June 30.