A frozen order that sits in a depot over a weekend is not a delivery problem. It is a refund, a replacement, a bad review, and a customer who does not come back. The shipping method that caused it was offered by your own checkout, and the buyer picked it in good faith because it was cheaper and it was there.
What you want is narrow: when anything that spoils is in the basket, the slow options stop being offered. Everything else in the store carries on as before.
The native way
Shopify's answer is shipping profiles. You create a profile for your perishable products, attach only the fast methods to it, and leave everything else on the general profile. If your store sells nothing but frozen goods, this is genuinely the right tool and you can stop reading here.
Where it breaks
Profiles decide which rates exist for a product. They do not decide which rates a buyer may choose for a cart, and those two questions come apart the moment a basket is mixed.
Add a frozen item and a shelf-stable one to the same cart and Shopify has to reconcile two profiles at once. What the buyer sees is a rate list that still contains the slow option, and nothing prevents them selecting it for an order that is half perishable. The frozen half spoils exactly as it would have done.
The second problem is quieter and shows up months later. A shipping profile is a list of products — so is a checkout rule that names product IDs. Both have to be maintained by hand, and both fail the same way: someone adds a new frozen SKU on a Tuesday, nobody remembers the list, and it ships economy in July. There is no error, no warning, and no way to notice until a customer tells you.
The rule that closes it
When the cart contains a product tagged
perishable→ hide the delivery optionseconomy,standard.
Two things make this different from a list of product IDs.
It asks about the cart, so a mixed basket is covered. If anything perishable is in there, the slow methods are gone for that checkout — once, for the whole order.
It asks about a tag, so it covers products you have not created yet. Tag a new item perishable and the rule already applies to it. You do not edit the rule, and there is no list to fall out of date.
Tag once, then stop thinking about it
The tag is the part worth doing carefully, because everything else follows from it. Pick one word and use it everywhere — perishable covering frozen, chilled and fresh is usually better than three separate tags, since the shipping decision is the same for all three. If you already tag products for warehouse or ops reasons, reuse that tag rather than inventing a parallel one; two tags that mean the same thing will disagree eventually.
How the app makes a tag work at checkout
Worth knowing, because it explains the one caveat.
Shopify's checkout cannot look up a product's tags while a buyer is standing there — the rules that run at checkout are sealed before they ever reach your store, and your tags are not known at that point. Most apps stop at that limitation and ask you to paste product IDs instead.
Instead, this app works out which products carry your tag when you publish the rule, and checks the cart against that. The buyer sees no difference and the checkout is no slower. What it means for you is that the product list behind the rule is a snapshot, refreshed automatically: when you tag a new product, it is picked up within seconds, and within the hour in the worst case if something is temporarily unreachable.
If a tag matches no products at all, you are told when you publish rather than left with a rule that quietly does nothing.
Check it before it is live
Preview it twice: once with a cart containing a tagged item, once with a cart that has none. The first should lose the slow options; the second should be untouched. A rule that changes both carts is matching more than you meant.
Then run it in monitor mode for a week. Monitor mode evaluates every real checkout and records what the rule would have done without changing anything a buyer sees, so you find out how many orders this actually affects before it affects any of them. For a shipping restriction that number is often the surprise — either far higher than expected, which tells you the rule is worth having, or zero, which usually means the tag is on fewer products than you thought.