This project is read-only.


Buy 2 get the 3rd one free discounts


Version 3.50 already has some enhancements. It allows to specify to which quantity a discount is applied. But it has quite limited functionality (not applied multiple times, not automatically added) -

Notifications about discounted products and automatical way to add "free" products. One more issue is that you have to manually add "free" product to the cart. So we need to find a way to notify a customer about this free product. We should show a message on the product page i.e. "Buy one more and get a free gift" or "Buy product Y for a discount" etc. We only way to implement it is the following. Load ALL products on the shopping cart page. Calculate price for EACH of them considering discounts and all possible discount requirements. If price is 0 and some discount is applied, then add this product to the cart. But it'll simply kill the performance. Of course, we can implement kind of rules (e.g. "if product 1 with qty 2 is in the cart, then add qty 3") but this way we'll lose all advantages of "Discount" entity (e.g. start/end dates. discount requirements, etc). Of course, we can also use tier prices to apply such discounts. It's the easiest way to go if you're talking about the same products.

Forums source:
Closed Jan 27, 2015 at 8:13 AM by AndreyMaz
Split to work items 12511 and 12512


filu wrote Jan 5, 2012 at 9:28 PM

The main idea is for the store owner to apply a FREE price to one (or maybe more) of the "cheapest" items in a shopping cart.

So if a user buyx XX items, 1 or more will be free.

Conceptually we need to select 2 values (1st value is the total number of items that need to be purchased in order to activate the FREE price, 2nd value is the number of products to be free - starting from the lowest price).

For example 5-2 means that IF a user buys 5 products, the 2 cheapest products will be free.
If we want to handle the current thread request, the values will be 3-1 where IF the user buys 3 items, the cheapest one will be free.

Ideally the store owner should be able to apply this to certain items (maybe if it's not to complicated), or to exempt certain items from the bundle ...or to exempt items that already discounted.

mickk80 wrote Jun 12, 2012 at 3:36 AM

Would be great to have an item like a Bike and then if you purchase you get a helmet and a bike bottle included within the checkout.

nopSolutions wrote Nov 29, 2012 at 6:53 PM

Hard to implement with the current price calculation engine

BrianARice wrote May 30, 2013 at 7:54 AM

It would be nice to be able to choose a category... and define buy n of these and get 1 free.

thomen wrote Jul 3, 2013 at 11:39 PM

The upsell could show messages on the product page i.e. "Buy one more and get a free gift" or "Buy product Y for a discount" etc

greenkrow wrote Aug 24, 2013 at 6:28 PM

I'm looking for something similar, specifically for a discount to be able to applied based on quantity purchased. If 10 are purchased there is a 1 per item discount, if 20 are purchased there is a 1.50 per item discount. This is to encourage bulk buying. So either a 1 discount or a percentage discount or both.

infinito62 wrote Aug 25, 2013 at 11:52 PM

Sure, still usefull is "Apply discount if cart is over X.XX".

charlesrobinson wrote Nov 13, 2013 at 3:36 PM

Hi there,

I see this work item lost its 3.2 status. Is this being moved to 3.3? This particular work item (imo) is a very strategic feature needed for this platform to compete against the competitors. If there is anyway to get this back onto the 3.2 roadmap please heavily consider it.
I wrote my own buy x get y off (based on $), but the problem with it is you have add it several times for higher quantity. ie, In my buy 2 get z $ discounted, I need to add discount rule for buy 4 get $x off, buy 6 get $y off, etc. Once the last defined quantity has been surprised the discount no longer gets applied to the later ones. (In my case its ok)
What I really want to do is replace the $ reduction with just a Free status and be able to target (lowest cost item in cart, etc). The challenge though for me is, given the current price calc architecture, it seems very hard to implement (as mentioned in an earlier comment).
So, if we can't get this back on the 3.2 roadmap, would you meet us developers half way, and give us enough architecture changes/hooks to accomplish some of this? You could write your official plugins in 3.3, but at least starting in 3.2 we could create our own.

TriarLogic wrote Nov 23, 2013 at 7:18 PM

Although this plugin doesn't hit several scenarios of buy 2 get 1 free that are requested in this thread, you can accomplish some with this plugin at a product level if you put the actual value of product rather than a percentage.
Buy X, Save Y

kaunuk wrote Feb 16, 2014 at 8:20 AM

To NopSolutions:
Hard to implement with the current price calculation engine
But that is how all the shops working.
I'll be happy if everyone will have discounts "buy 2 products for 4$ and get 3-rd product priced 14$ for free"
It's definitely have to be priced depend

cooperchen wrote Jun 16, 2014 at 9:42 AM

In my case, I wish discount from quantity. In original Schema just hvae DiscountPercentage and DiscountAmount, may be add a DiscountQuantity can solved all we need,

GarethBlain wrote Oct 2, 2014 at 4:15 PM

For me a buy two products and get the third free should allow for a list of products that can be purchased (be that one or 10) and for every 3 of ANY of those products that are in the cart the cheapest of them is free. SO if someone had say 7 of any of the products in the cart then the cheapest two of them would be discounted.