Free Shipping by Collection on Shopify (Without Plus)
Short answer: Shopify can limit a free shipping minimum to specific collections, but only with a discount code the customer enters. Automatic discounts count the whole cart. To apply “spend $X in these collections” automatically, you need an app built on Shopify Functions (small pieces of code that run inside Shopify’s checkout). Public apps with Shopify Functions work on any plan, so you don’t need Shopify Plus.
What does “free shipping by collection” actually mean?
A common version: a store sells premium goods alongside cheap add-ons. The owner wants free shipping to kick in once a customer spends $150 on the premium collection, not once they’ve padded the cart with $150 of accessories.
That is a rule about which items count toward the threshold. It sounds small, and it is the exact thing standard checkout settings handle awkwardly. It comes up a lot in stores with mixed ranges, similar to the product-mix problems I describe in 5 signs your Shopify store has outgrown its setup.
What can Shopify do natively?
According to Shopify’s free shipping discount documentation, you can create a free shipping discount as a code or an automatic discount. Some details that matter here:
- Minimum purchase amounts count product prices only, never taxes.
- For discount codes, if the discount applies to specific products or collections, only those items contribute toward the minimum.
- For automatic discounts, the minimum applies to all products.
- Free shipping applies to shipping rates only, and you can exclude rates above a set amount, but not named rates.
So the native answer is: yes with a code, no automatically. That is workable if you are happy for customers to type a code. Most stores aren’t. Codes add friction, get shared on voucher sites, and lose people at checkout.
I’ve summarised Shopify’s documentation as it reads today. Check the page before you commit to a design, because platform behaviour changes.
What are the options when native settings fall short?
There are three realistic routes:
- Use a collection-limited discount code. Cheapest and fastest. Best for one-off promotions where entering a code is fine.
- Install a public app built on Shopify Functions. The rule applies automatically at checkout with no code. This is the route I’d recommend for a standing, always-on rule.
- Build a custom Function. Full control, but there’s a catch.
Why does the plan matter?
Shopify’s Functions documentation draws a clear line. Stores on any plan can use public apps distributed through the App Store that contain Functions. Only stores on Shopify Plus (Shopify’s top-tier plan) can use custom apps that contain Function APIs, and some capabilities are Plus-only.
That means a store on Basic, Shopify or Advanced can’t commission a custom Function for itself, but it can install a public app that already includes one. For most merchants below Plus, that makes route two the practical answer. If you’re curious how this changed the landscape after Scripts ended, see Shopify Scripts are gone.
Where does Parcel Rules fit?
Parcel Rules is an app I built for exactly this gap. It runs on Shopify Functions, so its rules apply natively at checkout on Basic, Shopify and Advanced plans. Its free shipping by collection rule gives free shipping once a shopper spends enough on chosen collections, without counting the rest of the cart.
It also covers a few neighbouring rules: delivery zones by postcode, a free gift with purchase, required checkout fields such as a delivery date or PO number, and delivery rate rules that hide or reorder rates above a spend threshold. If you only need a one-off promotion, a discount code is cheaper. If you need the rule on permanently, an app saves you from repeating yourself.
I’ve written more about my two apps in the Vaulted Downloads and Parcel Rules case study.
How should I choose?
A quick test I use:
- Is it a one-off promotion? Use a discount code limited to the collection.
- Is it a permanent rule? Use a Functions-based app so it applies automatically.
- Is the logic truly unusual for your business? Only then think about custom work, and check your plan first.
Whatever you pick, test with a real cart before it goes live: a cart with only qualifying items, one with a mix, and one just under the threshold. Mixed carts are where these rules usually surprise you.
Need something more specific than a threshold?
Shipping logic gets complicated fast once you add regions, product groups and delivery dates. If you’ve hit the edge of what settings and apps can do, have a look at how I approach Shopify and ecommerce work, or tell me what your checkout needs to do and I’ll help you find the simplest way to get there.
Frequently asked questions
Can Shopify offer free shipping based on spend in a specific collection?
Partly. According to Shopify's help centre, a free shipping discount code can limit its minimum purchase to specific products or collections, so only those items count. Automatic discounts apply their minimum to all products. So the native route works with a code, not automatically.
Do I need Shopify Plus to customise shipping rules?
Not if you use a public app. Shopify says stores on any plan can use public apps that contain Shopify Functions. Only Plus stores can use custom apps containing Function APIs. A packaged app can deliver collection-based shipping rules at checkout on Basic, Shopify and Advanced plans.
Why does the whole cart total count toward my free shipping threshold?
Because that is how Shopify's automatic free shipping discounts work: their minimum purchase applies to all products. If you only want certain collections to count toward the threshold, you need either a discount code limited to those collections or a Function-based app that applies the rule automatically.
Can free shipping apply to only some shipping rates?
Not to named rates, according to Shopify's help centre. You can exclude shipping rates above a set amount from the discount, but you can't pick individual rates by name. For finer control over which delivery options show and in what order, rate rules in a Functions-based app are the usual answer.