I'm using magento 1.7 Community Edition (CE) I want to setup this promo rule If a customer buys 3 t-shirts from the same category (category 8), he/she will get the third one for free

I set the condition like this:

If ALL of these conditions are TRUE : If total quantity equals or greater than 3 for a subselection of items in cart matching ALL of these conditions: Category is 8
and then The Action: Apply: percent of product price discount Discount amount: 100 Max quantity discount is applied to: 1

Apply the rule only to cart items matching the following conditions (leave blank for all items) If ALL of these conditions are TRUE : Category is 8

The problem is that The Action rule will go though every single row in the cart and discount it for 100% for example if I buy 3 different t-shirts (A, B, C from category 8) and a pants (category 9) it will discount the three t-shirt for 100% so I only pay for the pants. The rule only work if I buy 3 t-shirt of the same sku, it will discount just one of them, but if I buy 3 t-shirt of the same category it will discount all of it for 100%...

My question is how do I set this shopping cart price rule so that it only discount 1 product per category (category 8) not only per sku.

1 Answer 1


Buy X get Y free using the promo rules never produces the results you want which is why I wrote a module for it a few years ago. Have a look at my Buy X Get Y Free module, it has a Category X get Y free feature which will do exactly what you want - Buy 3 items from category 8 - add a free item to the cart.

You can see it working here - buy two or more sauces and you get free spaghetti!

  • Your extension, while still useful in other cases, forces a specific "gift product", this is not what OP asked for. The question asks for every Nth product from category X to be free, not add a separate "gift product" as there is no way of knowing what the third/free product will be before hand.
    – kb.
    Commented May 25, 2016 at 12:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.