Skip to main content

Buying 3 and paying for 2

Let's create a BOGO campaign for customers who buy 3 items from a given list of products or categories of products to get the cheapest one of them for free.

Let's imagine our business is a supermarket. We want to give our customers the cheapest pack of cookies for free every time they purchase 3 packs out of 6 different types of cookies. They will get the 2 cheapest packs of cookies for free if they purchase 6, the 3 cheapest if they purchase 9, and so on.

To do this, in a standard campaign, let's create:

  1. A cart item filter to filter items by item category (in our example, cookies).
  2. A cart item filter to:
    • Know how many 3-pack groups of cookies are in the cart.
    • Sort eligible items in the cart from cheapest to most expensive.
  3. A promotion rule to issue the cheapest pack of cookies for free for every 3 packs that the customer buys.

Filtering the cart items by item category

Let's filter the cart by item category to find all the packs of cookies that belong to the eligible type. This allows us to use this information to create more filters.

Filter items by condition:

  • Attribute is Item category (Item).


    Alternatively, select SKU of item (Item) or any other item attribute that suits your campaign needs.

  • Is one of cookies1, cookies2, cookies3, cookies4, cookies5 and cookies6.

  • Save as filter_items.

To the right of the filter name, you can see the type of this filter is list of Cart Items. This means that the filter will be available wherever other lists, such as the list of cart items, are available.

Sorting and grouping eligible items

Let's create a second cart item filter to do the following:

  • Sort the eligible items in ascending order of their price.

    This gives us the list of items to discount by priority so we can discount the cheapest items in the cart.

  • Divide all eligible packs of cookies in the cart by 3.

    This tells us how many free items a customer can get in the same session.


This doesn't select the cheapest items in each trio of items, but merely the cheapest items amongst the items eligible for a discount, regardless of grouping.

  • Start with this list of cart items is filter_items.
  • Add Filter Step: Sort items by attribute.
    • Sort by: Price of item (Item), where price is Ascending.
  • Add Filter Step: Select the first No. of items:
    • Cart item filter is filter_items item count.
    • Formula is ROUND_DOWN(filter_items item count)/3.
      • Insert the cart item filter using the Attribute Selector, then select the text [Bindings.filter_items.Count] to display the rounding options.
      • In the text field, you can type /3 after the filter name.
  • Save as groups_of_3_with_cheapest_item_first.

The filter type is list of Cart items.

Giving the cheapest item for free for every 3 items the customer buys

Let's build a promotion rule to apply our BOGO offer. When a customer purchases 3 packs of cookies, they will see a 100% discount applied to the cheapest of them.

Let's name the rule 3x2 offer. It has 1 condition and 1 effect.


You can add more conditions that suit your campaign needs.


Check attribute value:

  • Cart item filter is filter_items item count.
  • Is greater than or equal to 1.


Discount individual items:

  • List of items is groups_of_3_with_cheapest_item_first.
  • Discount name is 3rd item 100% off.
  • Discount value is Price of item*100%.