Skip to main content

Magento buy one, get one free (different products)

· 7 min read

In this series, we cover Magento price cart rules in depth. This is the second part of our promo series, and it will deal with the Magento buy x get y free for different products.

Advanced promotions creation in Magento - part 3

Other articles in these series:

Magento out-of-the-box BOGO promotion works only for the same product

As we saw in part 2 of this guide, the Magento out-of-the-box buy x get y promotion only works for multiple quantities of the same products.

That is, for the following examples, the Magento built-in buy x get y promo won’t work:

  • 1+1 on t-shirts (cheapest)
  • Buy a watch, get a bag for free
  • 3 for 2 on all products

To implement these promotions, we will need an advanced promotions extension for Magento. In the following examples, we will use the Mexbs Additional Promotions extension.

Lets see how to implement the promotions above using the extension.

1+1 on t-shirts (cheapest)

This promotion applies a 100% discount to half of the cheapest t-shirts. For example, if the customer adds 4 different t-shirts, 2 of the cheapest will be free.

Promo configuration

To configure it, choose “N + M / Percent Discount” in the “Apply” field

Magento price cart rule configuration, the N+M action type is selected.

We need to define the promo configuration so that it behaves exactly as we want. Let's see how to do that in this specific example and discuss all the fields and their meanings:

We fill the fields in the following way:

  • Buy [ 1 ] items, Get the subsequent [ 1 ] items with [ 100 ]% discount - because our promo is 1+1
  • Category is one of 31,32 - because these are the categories of the t-shirts in our store (women’s t-shirts and men’s t-shirts)
  • [label for upsell cart hints—singular: [ t-shirt ], plural: [ t-shirts ]]—these are the hint messages that will appear in the cart, encouraging the customer to add more items. For example, “Get another t-shirt for free.” We will discuss the upsell cart hints later in detail.
  • Ordered by [most expensive] - the promo extension first looks at what items not to discount, so if we order by most expensive, the cheapest ones will get the discount
  • Discount method = Edge - the extension has two methods of discounting
  • Discount each alternative item (that is, discount method = Spread Out). In this case, the extension orders the items and discounts each alternative one (in our example one yes and one no)
  • Discount a sequence of items (that is, discount method - Edge). In this case, the extension orders the items and discounts them subsequently (in our example, the cheapest half of them).

Save the promo.

Promo results
Adding two different t-shirts to the cart

In the cart and the mini-cart, we can see that if we add two different t-shirts, we get the cheapest one for free.

Magento minicart with two t-shirts. The promotion is applied and the cheapest t-shirt is discounted

Adding four t-shirts to the cart

Similarly, if we add four t-shirts, we get the two cheapest t-shirts for free.

Magento minicart with four t-shirts. The promotion is applied and the two cheapest t-shirt are discounted

Magento 2 buy x get y free - where x and y are different product groups

Buy a watch, get a bag for free

Another type of BOGO promotion is when the two products belong to different groups/categories.

For example: Buy a watch, get a bag for free

Unlike in the previous example, where the 1+1 promo was valid within the same category (t-shirts), here, one product belongs to one category, “watches,” and the discounted product belongs to another category, “bags.”

Let's see how to configure it using the Mexbs Additional Promotions extension.

Promo configuration

To configure it, choose “BOGO: Buy x, get different y / Percent Discount” in the “Apply” field.

Magento price cart rule - actions list. The selected action is BOGO - percent discount

Let’s see how we configure the cart rule:

Let’s explain the rule fields in detail:

  • Buy [ 1 ] items for which ALL of the following conditions are TRUE—the 1 identifies the number of watches you need to add to get a free bag. (If we insert 2 instead, the promo will be “Buy two watches to get a bag for free”
  • Category is 12 - this is the category ID of watches in our Magento store.
  • [label for upsell cart hints—singular: [ watch ], plural: [ watches ]]—these are the hint messages that will appear in the cart, encouraging the customer to add more items. For example, “Add another watch to get another bag for free.” So, the word “watch” is taken from this configuration. We will discuss the upsell cart hints in detail later in this series.
  • Get the [ 1 ] first [ cheapest ] items - we want to discount the 1 cheapest bag for each watch added. (If we change the 1 to 2, the promo will be “Buy a watch to get two bags free”)
  • [label for upsell cart hints—singular: [ bag ], plural: [ bags ] ]—Similar to before, the cart hints will use these keywords to encourage the customer to complete his purchase.
  • Category is 10 - this is the category ID of the bags in our Magento store.

Save the promo.

Promo results
Adding a watch and a bag to the cart

Magento minicart with one watch and one bag. The bag is discounted.

We can see that a 100% discount is applied to the bag.

Two watches and a bag in the cart

If we add another watch, so we have two watches and one bag in the cart, we will see the hint message saying, “Add one t-shirt to get the next t-shirt for free!”.

Magento cart with two watches and one bag. The bag is discounted, and there is a cart hint message showing up, telling the customer to add another bag for free.

Two watches and two bags in the cart

If we add another bag, we will see that both of the bags got discounted.

Magento minicart with two watches and two bags in it. Both bags are discounted.

One watch and two bags in the cart

If we remove one watch, so we now have a watch and two bags, we will see that the cheapest bag will get discounted.

Magento cart with two watches and one bag. The bag is discounted, and there is a cart hint message showing up, telling the customer to add another bag for free.

Wrap-up

This article taught us how to configure the buy x, get y free promotion in Magento 2 for different products. Note that this is impossible with Magento out-of-the-box, so we had to use an advanced promotions extension for Magento. We looked at the most classic examples of advanced promotions: “1+1 on t-shirts” and “Buy a watch, get a bag for free.”

In the next articles, we will discuss more complex BOGO promotions that we can create with the Additional Promotions extension. For example, “3 for 2 on all products,” “Buy watch and bag, and get a free bottle,” “2+2 on orders above $100,” and “1+2 on t-shirts in your birthday month.”