I am working with a possible client about a new website, and one of the features that they have requested is to have table rate shipping based upon order total, and to have free shipping for $100 or more. This is normally easy and setup directly in the table rates. But there’s a catch.

There are a number of products that need to negate the free shipping if any of them are in the cart. Fortunately, this is doable using Shopping Cart Price rules. Here is how to do it:

Step 1:
Enable your table rates, download the CSV (making sure you are viewing the config on the website level), modify it and then upload your rates. Do not offer any free shipping in your CSV. Keep the Free Shipping method disabled.

Step 2:
Create your Shopping Cart Price rule. I’ve included images below to help explain it. Essentially, you need to set it up to look for a cart subtotal that is equal or greater than $100, and to make sure that there are no excluded products in the cart. You do this under the conditions tab. (Just change the “sku1, sku2, sku3″ etc. to the SKU’s of the products you want to exclude)

What this does is offers the free shipping method (even though it is disabled) if the shopping cart total is $100 or more and does not include any excluded products. If there are any excluded products in the cart, the free shipping method will never be offered.

Somehow the free shipping doesn’t work when you’re using Table Rates like Guy describes (tested on 1.4.0 and 1.4.1). Luckily there appears to be a fix for this. Haven’t tested it, but will do so later this day…

For some reason I can’t get this to work as you describe. We are on Magento 1.3.2.4.
We use table rate shipping and UPS shipping. Free shipping only appears for UPS (when free method is set) or when Free shipping is enabled with an amount of 10000 (so it won’t be appear on orders less that do not match the rule). The table rate shipping is never free, always the amount specified in the csv file. Am I missing something or is this method for version 1.4?