Chocolate, cheese, cut flowers, anything frozen: a five-day economy service is not a cheaper way to ship it, it is a way to ruin it. You want that option to disappear from checkout whenever one of those products is in the cart — and to keep disappearing as the catalogue grows, without anyone having to remember.
Why Shopify's native tool nearly works
Shipping profiles are the native answer, and for a small, stable set of products they are a reasonable one. Put the perishables in their own profile, give it only the fast services, done.
Two things break it:
- A profile is a list you maintain by hand. Every new perishable product has to be remembered into it. The cost of forgetting is a ruined parcel and an unhappy customer, with no error message anywhere in between.
- A profile reasons about products; a parcel is a cart. One bar of chocolate alongside four books is a chocolate parcel. Profiles have no clean answer for the mixed cart, and the mixed cart is common.
Step 1 — let a rule decide what's perishable
In Rules2Tag, derive the tag from something already true about the product rather than from anyone's memory:
When a product's type is
Chocolate→ add the tagperishable.
Product type, vendor, collection membership, a word in the title — whatever actually distinguishes them in your catalogue. The test of a good criterion is whether it covers the product you will add next month without anybody thinking about it.
Then backfill, and spot-check a handful of results. A tagging rule that is 95% right is a rule that ruins one parcel in twenty.
Step 2 — let the checkout read it
In Ruleproof:
Hide the shipping option Economy when the cart contains a product tagged
perishable.
Note the phrasing: when the cart contains, not "for perishable products". That is what makes the mixed cart correct without a second rule.
The one mechanical detail worth knowing
Shopify cannot look up product tags while a customer is checking out — the checkout has a hard budget for what it may ask about, and a tag lookup does not fit inside it.
So the app resolves the tag into a list of products when you publish the rule, and checks against that list at checkout. A product tagged after that point is picked up by a repair sweep within the hour, usually within seconds.
This is not a limitation you have to work around, but it is one you should know before you discover it:
- Tag a product and it is covered in minutes, not instantly.
- The app shows how old its snapshot is, so you can check rather than guess.
- If you have just added a perishable product and are about to run a campaign on it, give it a moment.
Test the join, not the halves
Both halves of this recipe fail silently, and in different directions. A product that should be tagged and isn't gets offered economy shipping. A product wrongly tagged loses a shipping option nobody notices is gone.
So test the combination:
- Preview the checkout rule with a tagged product in the cart. Economy should be gone.
- Preview with an untagged one. Economy should be there.
- Preview a mixed cart — one tagged item, several not. Economy should be gone. This is the case the shipping-profile approach gets wrong, so it is the one worth confirming.
- After publishing, tag one new product and re-check within the hour.
What each app is doing
| Where it runs | What it decides | |
|---|---|---|
| Rules2Tag | On your store, as the catalogue changes | Which products are perishable |
| Ruleproof | Inside Shopify's checkout | Which shipping options this cart may use |
The catalogue changes constantly and checkout has to decide instantly. Those are different problems with different constraints, which is why they are different apps — and why the tag is the interface between them.
Both have a free plan, so the whole recipe can be built and watched before it costs anything.