Posted: June 21, 2010 in Web

Magento does not natively give us the option to assign free shipping to specific items. This write-up details how to add this feature without editing any core code.

Compatibility

Here is a list of known Magento versions and shipping methods this technique works with, based on personal success and community feedback. Please comment if you can confirm other shipping methods or versions to add to this list.

1.4.x

  • UPS

1.5.x

  • UPS

1.6.x

  • UPS

1.7.x

  • UPS

Add free shipping option to products

The first thing we’ll want to do is create a product attribute giving us the option to allow free shipping on our products. I find it easier to make this a drop-down box, shown below.

Here’s the goal:

free shipping

1. Go to Catalog > Attributes > Manage Attributes

manage attributes

2. Click add new attribute

add new attribute

3. Fill in the fields as shown in the image below exactly. You may select your store name for the Scope if applicable. You may also name the Attribute Code something else, but keep it simple as we will be using this field later.

attribute properties

4. Make sure to select Yes for the following choices to make the free shipping option visible on the front-end and use the attribute for Price Rule Conditions.

frontend properties

5. Click Manage Label/Options from the left sidebar. The field under Admin is the text visible to administrators in the Magento backend (best to call this Free Shipping). Below, click add an option to make our drop-down choices. We only need to make one choice (Yes), which will turn free shipping on for a particular product. The admin field here will be the choice visible in the drop down menu. The field under your store name is the text front-end users will see. Position should be 1. Do not set this as default to avoid automatically giving all products a Yes value (that would be bad).

attribute label/options

6. Our attribute is made, but we need to assign this new attribute to an attribute set to actually use it when creating or editing our products. Go to Catalog > Attributes > Manage Attribute Sets

manage attribute sets

7. If you’re lucky, you’ve been using the default attribute set for your products. If you’re unlucky like me, you already have quite a few sets made. For this option to show up, you have to select each attribute set and perform step #8 to each one.

select attribute set

8. After clicking an attribute set, you will see the free shipping attribute we created over in the Unassigned Attributes column to the right. Click+drag the attribute into one of the sections to the left. You can put this item anywhere you want, and this will determine where it is available in the Manage Products area. Typically, the General or Prices section makes the most sense here. Remember to do this for every attribute set you want this available

move unassigned attribute

9. Now you should be able to go to Catalog > Manage Products and select a product from the list. Go to the section where you dragged the free shipping attribute under (General, in my case), and scroll down to find our new free shipping attribute.

select free shipping

Right now: Here’s what we have. We just added an option to allow free shipping for products. Leaving the selection blank will do nothing, but selecting Yes will eventually allow free shipping for this specific product. However, free shipping will not be applied to the product just yet. Read on to learn how to get Magento to assign free shipping to products that have this attribute assigned to Yes.



Make free shipping price rule

We have the interface set up, but now we have to make it function properly.

1. Click Promotions > Shopping Cart Price Rules

2. Click Add new rule

3. Give the rule a name and description (these are for administrator reference only). Set the status to Active. Be sure to to leave the “to date” blank, unless you want an expiration date for free shipping (note: if you set an expiration date, it will be site wide, not per product).

4. Ignore the Conditions tab. Instead, click Actions in the left sidebar.

5. Match your fields with the ones in the image below.

Apply: Percent of product price discount

Discount amount: 0

Maximum Qty Discount: 0

Discount Qty step: 0

Free shipping: For matching items only (very important)

Stop further rules processing: No

For the rules, keep the default “if ALL of these conditions are TRUE”. Click the plus sign to add a condition. Select Free Shipping from the list. Click the elipses and select Yes from the drop down (note: if Free Shipping is not in this list, refer back to step 4 in the last section, and make sure Use for price rule conditions is set to Yes).

6. Save the rule

Right now: We have added a Free shipping option to our products and created the conditions needed to apply the rule. The last thing we have to do is enable Magento’s core free shipping option…kind of.



Enable free shipping

As we already know, Magento’s core free shipping option only works for a minimum order amount; this is not what we’re after. However, we do need to activate Magento’s core free shipping function so it knows how to deal with our rule.

1. Click System > Configuration

2. Find Sales > Shipping Methods in the left sidebar.

3. The next step will be determined by your shipping method. I will cover external and internal calculators.

Internal calculators

1. If you are not using external calculators, select Free Shipping from this list.

2. Set Enabled to Yes. Here’s the trick: Set the Minimum order amount to some outrageous number, like 9999999999.99. This lets us enable free shipping without having to worry about false positives.

Using a shipping provider (UPS, USPS, FedEx, DHL)

1. In my case, I use UPS for my shipping calculator. The other providers offer similar fields, so you should be able to follow along.

2. Fill in all appropriate fields, such as Gateway URL, allowed methods, etc. This data can be found on your shipping provider’s website. (This information must be correct for Magento to reach the 3rd party calculator. Also, your shipping account must be in production mode)

3. We’re most interested in the Free Method option. In my case, I want my products to receive Free Ground Shipping. Free shipping with minimum order amount is set to disabled. I still set my Minimum order amount to some outrageous number like 9999999999.99 just in case. This lets us enable free shipping without having to worry about false positives.

4. Enable the provider.

5. Test the free shipping rule by editing a product, select Yes for free shipping, add it to the cart, and run the Estimate shipping and tax quote. I chose Free Ground Shipping, so this is reflected by the quote generator.

Right now: At this point, you can create or edit a product, select Yes from the free shipping drop-down box, and that product will receive free shipping. If users have an item with and without free shipping, it will only get applied to the ones with free shipping enabled (assuming you followed step 5 in the first section by selecting For matching items only). You could call it quits here, or read on to learn how to let customers know which items have free shipping enabled.



Show free shipping dialogue to customers on front-end

Here’s the goal:

1. Locate the template file you want to add the Free Shipping text to, a product page, for instance. Finding specific template files is outside the scope of this tutorial.

2. Assuming you named your rule the same attribute code I did (free_shipping_discount) in step 3 of the first section, paste the following code wherever you want the free shipping text to show. The first line checks if the item has free shipping, second line displays the text, then end the if statement.

<?php
if ($_product->getFreeShippingDiscount()) :
    echo '<span class="freeShip">'.$_product->getAttributeText('free_shipping_discount').'</span>';
endif ?>

3. Notice I put the text to a p tag with a class. You can alter this however you wish. This lets me style the text and assign a background image to complete the effect.

4. It is best practice to also include this code on the shopping cart page since free shipping only applies to specific items. This will let users know which items in their cart receive free shipping.

The cart.phtml page requires a different call. Use the code below in your template/checkout/cart/item/default.phtml:

<!-- if item has free shipping -->
<?php
    echo '<span class="free-ship">'.Mage::getModel('catalog/product')->load($this->getProduct()->getId())->getAttributeText('free_shipping_discount').'</span>';
?>

I graduated from LSU with a B.F.A. in Graphic Design and a minor in Art History. My passions are web design and front-end development with over 10 years of experience.


1 Trackbacks/Pingbacks
  1. Pingback: Free Catalogue Postage in Magento | David Boyce on December 2, 2012
95 Responses to Free shipping for certain products in Magento
  1. Jerry

    Great Article. I have been looking for a solution to exclude certain items from Free shipping for a while now. Thank you very much!

    One Question though….can you explain how to assign a background image to the text displayed on the template file. I have the text, but I need to add an image. Thanks!

  2. Jerry

    Cannot seem to get this code to work on cart.phtml
    ————————————
    getFreeShippingDiscount()):>
    getAttributeText(‘free_shipping_discount’).”>

    —————————————-

    Does it need to be edited?

  3. Jason Cross

    The cart page requires some different code. Thanks for reminding me to put that up. I’ve updated the post above. As for the background image, this is just basic CSS explained further here: http://www.w3schools.com/css/pr_background-image.asp http://xhtml.com/en/css/reference/background-image/

  4. mistryman

    Hi there we seem to be having problems getting the free shipping to work…

    We have gone through the information you provided, but still have an issue of shipping cost showing up on a free postage item

    please can you assist

    thanks

  5. Jason Cross

    Can you be a bit more descriptive? What version of Magento are you running, and do you have a link to your dev site? It seems like you’re not getting the “UPS Ground $0.00″ option after selecting Yes for an item?

    I recently had to add this functionality to a Magento 1.4 install, and it worked flawlessly. Although, I did have to go over the steps with a fine-tooth comb because I had accidentally skipped something. Can you try going over every step, matching your settings with the images, just one last time?

  6. mistryman

    The value of attribute “Free Postage” must be unique.

    why do we get this message now?

    cheers

  7. Jason Cross

    If you’re following through the steps again, you will have to give the attribute a unique Attribute Code (free_shipping_discount in my example). Though you don’t actually have to recreate this attribute at all; just check to make sure the Attribute Properties match up with my images.

  8. Jerry

    Perfect. Code for checkout works great! Thanks!

  9. Roger

    This is great article. what I been looking for. anyways, how do I get the image to appear below or or above the price on product page? I’m trying to set up discount “10%” but this discount would not apply to all the products. my attribute > Catalog Input Type > drop-down. Yes and No. working fine. but I want an image and the image to appear under the price or above the price. Thanks
    Magento ver. 1.4.1.0

  10. Jason Cross

    Hey Roger,
    You can work with the same bit of code above. Place it into the following file: /app/design/frontend/default/YOURTHEME/template/catalog/product/view.phtml

    Look in there for


    < ? php getChildHtml('alert_urls') ? >

    You could place the code above this line, and it should display your attribute above the price box.

    Then, you can make this an image by:


    span.free-ship { display: block; width: 24px; height: 24px; text-align: -9999em; background: url(images/some-image.jpg) no-repeat; }

  11. Roger

    Thanks Jason for your reply – this is great.

    just so I’m clear on this. I paste this below code into
    /app/design/frontend/default/YOURTHEME/template/catalog/product/view.phtml

    load($this->getProduct()->getId())->getAttributeText(‘free_shipping_discount’).”;
    ?>

    where do I put the CSS code?
    span.free-ship { display: block; width: 24px; height: 24px; text-align: -9999em; background: url(images/some-image.jpg) no-repeat; }

    Regards,

  12. Jason Cross

    Correct. You’ll want to put the CSS into /skin/frontend/default/YOURTHEME/css/main.css. You’ll alos have to be sure to include your image in /skin/frontend/default/YOURTHEME/images/, and your call to the images folder will need to go up a directory first (../images/)

  13. Roger

    i cant seem to get this to work. I pasted the code

    getChildHtml(‘alert_urls’) ?>

    getFreeShippingDiscount()):>
    getAttributeText(‘free_shipping_discount’).”>

    I created an attribute “free_shipping_discount” as well as the attribute sets…
    on one of the product listings change the status to yes – the text is not displaying under Sign up for price alert – however this does appear in my “additional tab” as “Discount: Yes”

  14. Eric

    Hi, I am using Magento ver. 1.5.1.0. I have gone through your config steps multiple times to make sure i didnt miss anything but when i get to my checkout page the free shipping option is not showing. It shows fine for the attributes on the product config. I am using UPS external and have set up as specified. Any advice would be greatly appreciated.

  15. Manel

    Hello, I used your code in Magento v1.5.0.1 and is not working. Nothing showed at product page.

    Only can show the value of free shipping calling this: Mage::getModel(‘catalog/product’)->load($this->getProduct()->getId())->getAttributeText(‘free_shipping_discount’)

    Using conditional if free_shipping is yes, don’t solves my problem.
    Can you help me to show the free shipping text in product page?
    Thank you so much!!

  16. seema fating

    Great article.I have been set up as per instruction.I am using UPS but in shopping cart the option value not selected when product is freeshipping.can you help me to show selected option.

  17. jen

    this does not work for me, ive been through this step by step over and over, and still do not get free shipping. Using 1.5

  18. Jason Cross

    @jen
    This article was written for Magento 1.4.2, but should be applicable to 1.5. Did you get the attribute setup? Does the user get an option during checkout to select free shipping? Does it just not apply the free shipping once selected? Can you be more specific with your issue?

  19. NIcholas Darley

    Hey Jason, i will be doing this tutorial tomorrow, but one question is there a way to duplicate this but get a quick shipping icon? Some of the products my clients sells can be shipped out in under 2 days all the rest take a couple weeks, so on the ones that ship out within 2 days we would like a quick ship icon notifying the customer this will ship out within 2 days.

    thanks

  20. Jason Cross

    You should be able to perform all the steps as many times as needed to setup custom attributes. Just be sure to name each attribute something unique, and reference that name when setting up your Shopping Cart Price Rules and when referencing the attribute in your template pages.

  21. NIcholas Darley

    thank you and how would i change it from saying Free Ground Shipping to just Free Shipping and then from that to another attribute called Quick Ship?

  22. Jason Cross

    @Nicholas
    You can change the text for the frontend when creating the attribute. Click Manage Label / Options in the left sidebar, then put whatever you want in the fields. You can specify different text for the backend and frontend if needed.

  23. Nicholas Darley

    I can’t find this in the manage attributes area

    “Make sure to select Yes for the following choices to make the free shipping option visible on the front-end and use the attribute for Price Rule Conditions.”

  24. Ghassen Khemiri

    Hi,
    I am new on magento
    I am using magento 1.5 and free-shipping option
    is there a way to set the delivery date to +1 day
    that means if a client buy today it can only select a date from tomorow.

    thank you in advance for the answer.

  25. Aizal

    Hi Jason,

    I followed the instructions like yours but doesn’t seems to work in 1.6.
    Right now, regardless the flat rate and free shipping option turned off, they both will still be showed on the cart checkout.

  26. Jason Cross

    @Ghassen – I’m sure there is a way to do this, but I do not have a solution readily available for you. You may want to search on where that date selection bit is coming from.

  27. Jason Cross

    @Aizal – I have only tested this up to Magento 1.42, and some other users have it working in 1.5 judging by the comments above. V1.6 may very well have changed the logic that makes this method work.

  28. Makoto

    Thanks for this article! I searched around all over the net for the solution, but every site was wrong. The one small detail that your article included, that others did not was setting the configuration –> Shipping options and setting a minium order amount to a high value. Great article! Thanks!

  29. Kyle

    Thanks so much for this Jason. I have an issue as my attribute options are tad different. I made a Yes and No option for my Free Shipping attribute. How should my code look for both product view and cart if I only want the attribute value to show when YES is selected and do nothing when No is selected? I am looking to make this attribute a required field for our store but I can only accomplish this if I set a NO option for the attribute.

  30. Jason Cross

    @Kyle – I would imagine you can still follow the steps above, and just not associate anything with the “No” value. It would accomplish your goal of requiring the user to set a value here, then it would only activate free shipping if that value is “Yes.” Does that make sense?

  31. Ernest

    Greatly appreciate this post, I followed it to the tea, except I still had a few issues at the end. I am using Magento Version 1.3.2.4, so I don’t think it has anything to do with an older version, but it might.

    I had an issue with adding an item qualified for free shipping, and then another item that wasn’t. What would happen is that item that does not qualify for free shipping, doesn’t even provide me with the basic UPS shipping options, it isn’t visible.

    When I add that item separately without the free shipping item, then the shipping options appear. When it’s included with the free shipping item, then the basic shipping options aren’t available.

    I’m not quite sure what is triggering this to happen, as it should show the shipping options as if the item was separate from the free shipping item. Somehow when the free shipping item is included in the cart, it’s overriding the other item’s shipping options and removing it from the checkout. If you or anyone else has any input on this matter, I would greatly appreciate it.

    Thank You So Much for your help, Great Tutorial!

  32. Tracy

    This method kicks butt! I have struggled with the shopping cart rules and tried using just that as recommended by quite a few sites. However, when a product with shipping was added to the order, the customer would be given a choice of either a table shipping rate OR free shipping – it’s a no brainer what the customer would choose. Now, the free shipping products are just that and any additional products have their shipping calculated by weight and that is the ONLY option presented to the customer – which is exactly what I wanted. You saved my butt. Your screen shots were a big help too.

    Very helpful!

  33. Jason Cross

    @Tracy – Thanks! I’m glad it helped. Can you share what version of Magento you used it on?

  34. MaEK

    When I paste getFreeShippingDiscount()):> getAttributeText(‘free_shipping_discount’).”> < ?php endif. in view.phtml, it showed the letter as it is…it means there is no free shipping text and only this getFreeShippingDiscount()):> getAttributeText(‘free_shipping_discount’).”> < ?php endif. appeared.

    Could you advise me what was wrong? Actually, I don't know php very well…

  35. MaEK

    I just realize that space and . is ommited in your code and I edited it…I am php beginner…haha… I get Free shipping…in product page haha…

  36. Jason Cross

    @MaEK – Thanks for pointing that out; it looks like the code beautifier is doing some wonky things. I’ll see about sorting that out.

  37. GBC

    Hey Jason, thanks for the info! I’ve tried this on 1.5.0.1 – there are a few areas where the interface on Magento is slightly different, but I’ve been able to get it to work. I also found as MaEK did that the PHP had some bad characters in it, so here is what worked for me (hopefully the characters will remain intact:

    getFreeShippingDiscount()): ?>
    getAttributeText(‘free_shipping_discount’).” ?>

    In implementing this, I was also wanting to make is so that the Free Shipping control in Admin could control if the “Free Shipping” message was displayed, so that if a product met the price criteria (over $100 let’s say) and the attribute on the product was selected as Yes, Free Shipping would be displayed only if the product was over $100; if the product attribute was selected as Yes but the product was less than $100 the Free Shipping wouldn’t be displayed.

    I tried setting the “Free Shipping with Minimum Order Amount” to Enabled in the Admin and setting the “Minimum Order Amount for Free Shipping” amount in both Free Shipping and UPS area but the rule is ignored. Any thoughts on making this work?

  38. Jason Cross

    @GBC – Thank you for reminding me about the syntax highlighting. I have updated the code, and it should be easy to see and copy for you now.

    As for your “Free shipping if $100 or more” question, that should be easy to do by adding to the Shopping Cart Price Rule. Click the green plus icon and add “Row total in cart equals or greater than 100.00″ (screenshot below). I have not tested this, but it should work for you.

    Free shipping if item is over $100

  39. GBC

    Hmmm – I just tried this and no go. I set the product to Yes on a product that was under $100 and set the limit as you showed and also set the minimum in the Free Shipping and UPS area at $100, but the “Free Shipping” still appeared. Not sure if I should have it set in all places or not.

    One other question: I noticed on your screen shot of the product page you have the Free Shipping next to the Add to Cart button. I’ve tried placing the code on the various lines in the view.phtml file but it either appears above or below the Add to Cart area. Is there a separate file where I should be adding the code rather than view.phtml to get it next to the Add to Cart?

  40. GBC

    Hey Jason, in thinking about it, the Free Shipping notification can’t automatically appear based on the cart rule. What the cart rule does is make it so that the customer can get the free shipping if they meet the criteria, but the message is always displayed.

    With this in mind, I changed the message to “Free Ground Shipping for items over $100!” and set it to Yes for all products, but then made the rule as you showed above, so once the item is added to the cart, they can get free ground shipping. As a side note, this rule ignores anything set up in the System>Configuration>Shipping Methods of the Admin. It would be nice to have the actually message only appear based on the rule, but I don’t see how that could work.

  41. Jason Cross

    @GBC – I just tested an idea to get your message hiding from irrelevant products, and I found a solution. Building onto the example, just add an extra if statement to determine if the price of the product is greater than 100:

    <?php
    // Determine if product has Free Shipping set to yes
    if ($_product->getFreeShippingDiscount()) :
        // Determine if product costs more than 100
        if($_product->getPrice() > '100'):
            // Show Free Shipping text if both conditions are true
            echo '<span class="freeShip">'.$_product->getAttributeText('free_shipping_discount').'</span>';
        endif;
    endif;
    ?>
    

    To answer your other question, I have this code in /app/design/frontend/default/yourtheme/catalog/product/view.phtml

  42. GBC

    Thank you – this works very well!

    I’m guessing this is a theme thing, but for me, to get the Free Shipping to display in line with the Add To Cart I ended up modifying “addtocart.phtml” in /public_html/app/design/frontend/base/default/template/catalog/product/view

    I think the final thing that would be useful would be for the Free Shipping to also show up in the catalog view, so people can see which items have free shipping and which don’t.

  43. Christian

    I recognised a problem with this great tutorial with Magento v4.5.1.0, when enabling ‘Use Flat Catalog Product’. Suddenly shipping fees where displayed during the checkout process (in product details ‘free shiping’ was still shown correctly and in the shopping basket everything worked as expected).
    It took me a long time to find the solution because I could not find any correlation between these settings.

    Simply set the value of ‘Used for sorting in product listing’ of the ‘free_shipping_discount’ attribute to ‘Yes’ in step 4.

    Any explanations to this behavior are welcome :)

    Christian

  44. paul

    Just BRILLIANT, works perfectly on 1.4.1.1
    Thanks for taking the time to write this up.

  45. Doug

    I know this article is dated at this point but I am still using Magento 1.4.x and have just tried this. I did just the first part of this – only what can be done within the magento control panel without editing the php or template files directly. It did not work. In the UPS estimator, ground still shows the rate and applies it to the order even though only 1 item, which has free shipping set to yes, is in the cart. I am using the UPS live rates.

    Any ideas as to why the 0.00 rate does not show for ground or why the full rate is still applied to the order?

  46. Dyce

    Working perfectly. Just implemented it for Magento 1.6.2 and it just works! Thanks bro!

  47. Rose

    I applied this to version 1.7 and its working perfectly! Thanks loads! Now I’m trying to get an image up instead of the words “Free Ground Shipping”. I assume that in this version it would be in /skin/frontend/default/default/css/styles.css instead of main.css. However-where am I supposed to place it. I know this is a newbie kind of question but I hope you can help. Thanks again!

  48. Jason Cross

    @Rose – You can place the image in /your/theme/images directory. Since you’re using default, it’s default/default/images. What I do is call that load that image through CSS by using the background-image property. Hope that helps!

  49. Cyrus

    Hi, i try this setting on my website. If the customer just buy the free shipping product, the shopping cart is free shipping. But if the customer but a free shipping product and a non-free shipping product, the whole shopping cart will be free shipping too.
    Is there any method that set a category is free shipping but others are charged?

  50. Jason Cross

    @Cyrus – It sounds like you skipped over step 5 in the second section. When creating the shopping cart price rules, there’s an option with “for matching items only.” Be sure to select that. For your second question, you may be able to add another rule along with “Free Shipping is Yes” that says “Category is MyCategory.

  51. Rahul

    Hello, this is very useful to create free shipping for products. But I am looking for something advance i.e. free shipping for particular products only for 10 states in US other then that it will not be free shipping. Please help me out with solution.

    Thanks,
    Rahul

  52. Jason Cross

    @Rahul – You will have to do some matching for the zip codes within those 10 states, unless they’ve introduced a way to match the ship to state itself.

  53. Deb Hogan

    HELP! Everything is working but the very last step. I have enabled free shipping on two products and don’t have it on the other two (this is a development website). I can see at the individual product level that the messages are displayed properly. Also OK in the cart. But when I put in a valid zip code, not matter what I have, UPS ALWAYS calculates a shipping prices. I never see $0.00 as an option. Suggestions???

  54. Jason Cross

    @Deb – Seems like you may have skipped a step in the shopping price rules, specifically step #5 in the Make free shipping price rule section. Need to select “for matching items only” and setup the conditions to enable free shipping if all conditions are true. Otherwise, can you clarify which version of Magento you are using? So far, this has proven successful on versions 1.4-1.5 based on people’s responses.

  55. Deb Hogan

    Hi Jason,
    I found my problem! I am using Magento 1.7 and the only change I had to make (silly me) was to make the rule “Active”. It defaults to Inactive when you set it up. You had that in your directions, but I missed that step. Thanks for the info! It saved me a ton of time.

  56. Jason Cross

    @Deb – No problem, I’m glad you figured it out. And that confirms this technique should work up to version 1.7.

  57. Ankit

    That looks great but,
    When I add a fee shipping product and a normal product it fails and shows a combine shipping price.
    any solution to this??

  58. Jason Cross

    @Ankit – As mentioned previously, you must have skipped over the step in shopping cart price rules (step #5) where you must select “for matching items only.”

  59. krista

    I’m curious if Ankit ever got it to work… I have the same problem and double, triple, and quadruple checked I have “for matching items only” selected and still can’t get it. The item on it’s own in the shopping cart works great, but as soon as I add another one, I get the total of the 2. I do have an extension installed that does my shipping (flat rate per item basis) so I’m not sure if there’s a conflict or what.

  60. krista

    Edit: I tested this method on a fresh magento install, it appears that it is in fact my extension that is conflicting.

  61. Jason Cross

    @krista – Thanks for the follow-up. Can you tell us what extension you’re using, so others can be aware? Thanks!

  62. Hugh

    I have the method set up in CE 1.7 with no extensions and it works great with UPS but I can’t seem to get it to work with the USPS set up the same manner. Any ideas?

  63. Jason Cross

    @Hugh – I have not personally used this method with USPS, so I cannot assist there. Thanks for confirming that it works with UPS on 1.7.

  64. john v

    Great job! This was a monkey on my back. Saved me a 100 emails a day from customers

  65. Kingston

    This is great! Is it also possible to show a button on the product grid? Above the product price in the product grid? Should be awesome! Can you help me with this?

  66. Dave

    Great stuff. Adjusted Magento backend according to directions. All working as it should.

    Have revised Grid, List, Cart, Product pages/views.
    Not all code worked on each individual page.
    Provided unique CSS class for styling on each page.

    Here’s what worked for me on each page:
    Product:

    List & Grid:

    getFreeShippingDiscount()): ?>
    <?php echo '’.$_product->getAttributeText(‘free_shipping_discount’).”;
    endif; ?>

    Cart:
    <?php
    echo '’.Mage::getModel(‘catalog/product’)->load($this->getProduct()->getId())->getAttributeText(‘free_shipping_discount’).”;
    ?>

    Product:
    getFreeShippingDiscount()) :
    // Show Free Shipping text if both conditions are true
    echo ”.Mage::getModel(‘catalog/product’)->load($this->getProduct()->getId())->getAttributeText(‘free_shipping_discount’).”;
    endif;
    ?>

  67. Will

    Jason, have you had anyone successfully do this with Magento 1.7? I’m having trouble with the Shopping Cart rules, they don’t seem to be working.

  68. Jason Cross

    @Will – I have not received a confirmation for 1.7. Let me know if you’re able to figure it out!

  69. Will

    Yeah, can’t seem to get it. Changed the attribute to a Yes/No but that didn’t help. I’m pretty sure it’s in the shopping cart rules because the rest seems to work. It shows up on the product pages as free shipping, but when they go to checkout there’s no free shipping choice… will keep you in the loop

  70. Matheus Siqueira

    Hello! I’m quite new to Magento so maybe this is a stupid question. But I needed to show the shipping text in the frontend only when “YES” in the Free Shipping atribute in product. In order to hide some shipping options at the check-out I needed to create also a “NO” option in the atribute so I can filter the objects. My problem is that the following code works fine, but it shows the “free shipping” text independent if this option is selected as “YES” or “NO”:

    <?php
    echo '’.Mage::getModel(‘catalog/product’)->load($this->getProduct()->getId())->getAttributeText(‘free_shipping_discount’).”;
    ?>

    Thanks!

  71. Neha

    OMG Thanku so much This is great

  72. Roc

    Thanks for sharing this great article since I have been searching for a solution like this(set the Minimum order amount to some outrageous number this is the key point for me : )). It works nice on Magento 1.7+ but the only problem is when I apply this rule it also affect the other shipping method. Like: I add one free shipping item into cart, during checkout the free shipping term appears with no problem($0 as I set) but the flat rate becomes $0 too(Indeed I have set it to $5). Does anyone met the same problem?

  73. Hemant

    Hello its working for magento 1.7.2…Thax a lot…!!!

  74. Hemant

    sorry its not working for magento 1.7.2….:(

  75. Hemant

    I would like to provide free shipping for a few products and regular shipping for all others. I am new to Magento and when I enable Free Shipping in the control panel, it offers it to all products. How can I assign free shipping to only select products?

    Thanks!

  76. Jason Cross

    @Hamant,

    You skipped a very important step where you must specify “for this product only.” Read through the article again for correct Shopping Cart Price rules.

  77. John Gray

    Setting “Minimum order amount” to an outrageous number was the key for me. I was trying to use Magento’s Free Shipping method as store pick up for particular state/province in conjunction with “Shopping Cart Price Rule”. But it did not work until I set “Minimum order amount” to an outrageous number like 999999999. Thanks for mentioning that!

  78. Carlos

    Hi Jason, everything works fine if I have all the products with free shipping. But if I add another item that hasn’t free shipping, fedex calculated the shipping for all products, including those that have free shipping.
    Any idea?
    http://awesomescreenshot.com/0221g28o17
    http://awesomescreenshot.com/06f1g28qc5
    Magento 1.7.0.2
    Thanks

  79. Carlos

    Hi all, any idea to my problem?
    Thanks

  80. Immense Networks

    @Carlos – You seem to be having the same problem as others in the comments. There is a checkbox to “only affect selected items” in one of the steps above that I assume you overlooked. Try to sort that out and let us know if it helps.

  81. Carlos

    Hi, thanks for your reply. All steps are fine.
    I think that I found the problem: I had configured as Free Method in Fedex: “Ground”.
    According to the weight of the products in the cart, appeared correctly or not (http://awesomescreenshot.com/0ea1gta7bbhttp://awesomescreenshot.com/0fb1gtai53) , so I gather that is was configured “Ground” for sending with a minimum weight (I will confirm with my client).
    I changed from “Ground” to the “Home Delivery” option and works correctly.
    Thank you very much for your interest.

    http://awesomescreenshot.com/0061gt8x5a
    http://awesomescreenshot.com/0751gt9074
    http://awesomescreenshot.com/0a01gt9if1
    http://awesomescreenshot.com/02e1gt8u1c

  82. Sarvagya

    Hello ,
    I just need to know one thing, i have a scenario where i need free shipping by two ways:
    First one is free shipping on product basis.
    Second one is free shipping when total order amount exceeds $100 .
    So by this way can i achieve this thing as you have mentioned on keeping minimum order amount much higher.

  83. arpit tiwari

    Wooo…. great article… thanks allot

  84. Hemant

    Hello Jason

    can you please helped me out for buy 2 get 1 free.. i will try multiple time from google. but still am not satisfied. Please Reply ASAP. Thank you.

    Regards,
    Hemant Ahir
    India, Gujrat

  85. webdesign4me

    Great article, thanks for that. I just can’t believe how cumbersome it is to enable something as simple and basic as free shipping in Magento… Never ever will I build a webshop in Magento again.

  86. Adam

    Thanks so much! This really helped after quite a bit of frustration trying to get free shipping to work with UPS. You are an awesome person :)

  87. Mudasser

    Very nice post on the free shipping stuff. I have one question though on the last part.

    You have written

    “Right now: At this point, you can create or edit a product, select Yes from the free shipping drop-down box, and that product will receive free shipping. If users have an item with and without free shipping, it will only get applied to the ones with free shipping enabled (assuming you followed step 5 in the first section by selecting For matching items only). You could call it quits here, or read on to learn how to let customers know which items have free shipping enabled.”

    What I want to confirm is that if I have mixed products in the cart i.e. one that have free shipping and one that does not. In this case, I will see free shipping option and also other options. Will the shipping rate in other options be exclusive of the free item’s rate?

    For example Item A is marked free shipping but if not marked free, its shipping cost for a specific address is $5.0. Product B’s rate is $4.0 for the same address. Now if A is marked free, I expect to see free option and another option for $4.0 (shipping cost of product B). Would it work this way or will I still see $9.0?

    Please advise.
    Mudasser

  88. Patrick

    Hi,

    Thank you for this really nice feature.

    I have a small problem though;
    I want to use the most simple way of this feature, that is to be able to slect per product free shipping yes or no. So only show the free shipping option at checkout (If selected at product) and nothing else. this works fine, however I also see the other available shipping methods. Could you tell me what I can do, so only the free shipping methods shows and the other methods are hidden?

    Thank you!

    Patrick

  89. KJames

    Hi Jason, very helpful post. I tried the steps mentioned here and works fine BUT when I combine it with table rates it doesn’t work. It’s ignoring the price rule and uses the table rates.

    I am using 1.7.2 by the way, anyone encountered this problem? any help, please thanks a lot!

  90. Mojalefa

    I was going to use the Free Shippping for orders above a certain amount only, then through google searches I found this article, have just followed all the steps & the last one that gave me issues was my template view.phtml but with much patience & thorough checking, glad to report that it is now working perfectly. Thank you very much.

    Anyway I can make the text in step 5 (Manage Labels) bold or change it’s colour?

  91. Gary

    Thanks, this was just what I needed. I’m using 1.8.0 and it the free shipping is working beautifully.

  92. Gerjan

    Hi, thx for this post. As descriped still works in 1.8.1 :) however I have one little issue; I use the table rates and customers get free shipping for order over €50,- Some products however can have free shipping even under €50,00 because I can ship them in an envelope. But with the combination of tabel rates and free shipping products it goes wrong.
    E.g. product X €45,00 (tabel rates) + product Y € 10,00 (free shipping) = €55,00 but the table rate for shipping is still applied although the ammount is above €50,-
    Is there any way I can get it to work like I want to?

  93. Gerjan

    So it’s actually the same problem as KJames wrote before me >.<

  94. Gerjan

    Dont want to spam, but I figured it out :)

    Apply to Shipping Amount: Yes
    Free Shipping: No
    Stop further Rules Processing: Yes

    Doesn’t soun logic to me, but maybe don’t uderstand what Magent exactly means here. But I kept changing the setting and combinations until this one finaly gave me the result I needed.

    Hope this helps others to get it done. GL

Leave a comment

Did this article help you? Do you have a different opinion? Feel free to leave a comment or ask questions.