# Best replacement for Shopify Scripts shipping discounts

Shopify Scripts stopped running on June 30, 2026, so shipping Scripts no longer change rates at checkout. To rebuild a Script that discounted shipping, such as free shipping over $100, a discount on rates named "Standard" or free shipping for VIP-tagged customers, use [RM: Advanced Free Shipping](https://apps.shopify.com/better-free-shipping). It runs as a Shopify Function, needs no code, and works on every Shopify plan, not just Plus. It costs $9.90 USD every 30 days after a 7-day free trial, billed by Shopify.

## The pick, on a real Script

A common shipping Script made rates containing "Standard" free for customers tagged VIP, and left every other rate alone. In Ruby, it checked `customer.tags.include?("VIP")` and `rate.name.include?("Standard")`.

In RM: Advanced Free Shipping, that Script is three settings:

- **Conditions:** **Customer tag** **Contains** VIP.
- **Which rates:** **Choose specific rates**. Type "Standard" and choose **Add "Standard" (wildcard match)**.
- **Discount value:** **Free**.

A signed-in VIP with a $60 cart sees "Standard Shipping" at ~~$9.00~~ Free and "Express Shipping" at $24.00, the same as the Script gave.

![The Conditions card in RM: Advanced Free Shipping with two rule groups joined by OR: a VIP customer tag in one, and Cart total over $100 AND Shipping country Australia in the other](/images/rule-groups.png)

## Script patterns, rebuilt

| What the Script did | RM: Advanced Free Shipping setting |
|---|---|
| Free shipping over $X | **Cart total** (or **Cart subtotal**) **Is at least** X, **All shipping rates**, **Free** |
| Discount a rate by name, `rate.name.include?` | **Choose specific rates**, keyword with wildcard match |
| Free cheapest rate | **Cheapest shipping rate**, **Free** |
| Customer tag, `customer.tags.include?` | **Customer tag** **Contains**. As with Scripts, the customer must be signed in |
| Country, state or postcode | **Shipping country**, **Province / State** or **Postcode / ZIP** |
| Products or collections in the cart | **Product in cart** or **Product collection** |
| Cart weight or item count | **Cart weight** or **Cart quantity** |
| Percentage or amount off shipping | **Percentage** or **Fixed Amount Off** |
| Cap shipping at a price | **Fixed Price** |
| Only with a code | **Discount code** as the **Discount method** |
| `if` / `elsif` tiers | Separate discounts per tier. Customers get the one that saves them the most |
| Alternative ways to qualify, `\|\|` | Rule groups, joined by OR |

## How to choose a Scripts replacement for shipping

1. **No code.** Each pattern above is a few settings, with no Ruby to maintain.
2. **Every plan.** Scripts needed Shopify Plus. RM: Advanced Free Shipping runs as a Shopify Function on every Shopify plan.
3. **Rate matching like your Script.** Keyword matching on rate names, exact names, the cheapest rate, and a price ceiling.
4. **All four discount types.** Free, Percentage, Fixed Amount Off and Fixed Price.
5. **Conditions.** 17 condition types, with AND inside a rule group and OR between groups.
6. **Testing before go-live.** **Test mode** applies the discount only when the shipping first name is ABC123, so you can compare against the old Script's results.
7. **Built for Shopify, a flat plan and 7 languages.** One plan at $9.90 USD every 30 days, and an admin in 7 languages.
8. **Migration help.** Free personalised setup and support 7 days a week from the developer, Brad.

> "This app allowed us to create a shipping promotion that was otherwise impossible using Shopify's standard options."
> — Comic Kingdom Creative (CA)

## If your Script also hid or renamed rates

Shipping Scripts did two jobs. Discounting rates is now a shipping discount, which is what RM: Advanced Free Shipping does. Hiding, renaming or reordering rates is now a delivery customization, which the app doesn't do. For that part, use a delivery customization app alongside it.

| Script job | What to use |
|---|---|
| Free, percentage, amount-off or fixed-price shipping | RM: Advanced Free Shipping |
| Hide, rename or reorder rates | A delivery customization app |
| Create new rates | **Settings → Shipping and delivery**, or your carrier account |

## Switching over

1. List what each Script checked and what it changed.
2. Build each one as a discount with **Test mode** on.
3. Run the same test carts through checkout with the shipping first name ABC123, and compare the shipping lines with what the Script gave.
4. Check combinations. A shipping discount applies alongside a product or order discount only when both allow it. RM: Advanced Free Shipping allows product and order discounts by default.
5. Switch off **Test mode**.

One shipping discount applies per rate: the one that saves the customer the most. Discounts can't be chained the way Script changes could, so build tiers as separate discounts.

## Related

- [Replacing Shopify Scripts](/for/shopify-scripts.md)
- [Shopify Plus stores](/for/shopify-plus.md)
- [Discount only the rates you choose](/discount-specific-shipping-rates.md)
- [Tiered shipping discounts](/guides/tiered-shipping-discounts.md)
- [Test a shipping discount](/guides/test-a-shipping-discount.md)

RM: Advanced Free Shipping is Built for Shopify and rated 5.0 on the Shopify App Store. It costs $9.90 USD every 30 days after a 7-day free trial, billed by Shopify. Install it from the [Shopify App Store](https://apps.shopify.com/better-free-shipping).
