magento_2:special-promotions

For more details see how the Special Promotions for Magento 2 extension works.

Add 16 additional promo actions to your default cart price rules. Run numerous promotions to easily attract customers with new irresistible offers and increase sales.

- Promotions for cheapest/most expensive items
- Deals with free products
- Create fixed and percent discounts
- Offer specials with quantity steps
- Launch promo campaigns based on the spent amount

General rules of working with coupons:

- Coupon code should be unique for each rule. It means, that you can't create different promotion rules for one coupon name. For example, you have two rules: A and B. The rule A: get a 10% discount by the coupon “amtest”. The rule B: get a 35% discount by the coupon “amdiscount”. If both rules have name “amtest”, then a customer will get 45% discount. You shouldn't use the same name for different coupons in order not to apply several rules for one coupon.
- Coupons name are not case-insensitive. Therefore, the coupon name “CHEAPEST” and the coupon name “cheapest” will be the same for the extension.

What is the difference between product **conditions** in the Actions tab and in the Conditions tab?

Conditions in the **'Conditions' tab** control *when* the rule will be applied. For example, if the Subtotal has reached a certain value or if there are some specific products in the cart.

Conditions on the Actions tab control to *which products* discount will be applied. For example, you can restrict discount application on the product from only a certain category.

To Configure general extension settings please go to **Stores → Configuration → Special Promotions**

**Check Special Options Values** - If the option is set to 'Yes' the custom options for the rule conditions will be enabled. Thus, you can use the ‘Custom option SKU’ condition, for example, to trigger a discount rule only when a particular Special Option was selected for a product. See the example of custom options below.

If you set custom options for any specific products in your store, you can use them for creating flexible rules. Specify the necessary custom option value or custom option SKU to apply only to particular products.

**Skip Items with Special Price** - Set this option to ‘Yes’, if you don't want to apply coupons and shopping cart price rules to the products with a special price.

Items with special prices from the Catalog Price Rules will be skipped as well.

**Skip Items with Tier Price** - Set this option to ‘Yes’, if don't want to apply coupons and shopping cart price rules to the products with tier price.

**Skip Configurable Items when Child has Special Price** - Set this option to ‘Yes’, if don't want to apply coupons and shopping cart price rules to configurable products if their child items have a special price.

**Show Discount Breakdown** - enable the option to display the list of discounts with discounted products. The customer will clearly see which products are discounted and what is the discount amount.

You can check if all the configurations and rules you've set up are applied correctly. The debug mode will enable you to see the amount of discount applied to each particular items. You will see this information on the cart page.

**Enable Debug Mode** - set to **Yes** to enable the debug mode. When enabled, you will see the discounts applied to each particular item in the cart. The feature is designed to let you make you sure that all the configurations and settings work as expected. It is not available to customers.

**Show Debug Information Only For** - specify IP addresses, separated by a comma, to which the debug mode is applied. If you leave this field empty, nothing will be displayed.

This is the example of how the debug mode works:

Under each item, on the left side, you'll see the applied rule id and its name. On the right side, on the opposite of the rules, you will see the amount of discount applied.

How to make so that your customers will instantly see the promotion campaigns you launch? The answer is evident - highlight them with banners and labels.

Please, go to **Marketing → Cart Price Rules → Add New Rule** button. Then, create any promotion based on the action, provided by the extension. Know how to configure any type of promotions in the section How to set up a promo rule? See the examples.

After all the necessary configuration is set up, open the **Highlight Promotion** tab.

At first, specify for which products the banners/labels should be shown. You can choose to display them for all products, for particular product categories or only for special products.

When displaying banners or labels for definite products, you should specify the necessary product categories or product SKUs.

Then choose which kind of banners to display:

1) **Top Banner On Product Page** - the banner will appear on top of product pages.

**On Hover Text** - specify the text that will be shown on a mouse hover.

**Link** - define the page to which the banner should lead.

Here's the example of how it will display on the frontend:

2) **After Product description Banner** - the banner will appear on product pages, after the products description.

Here's the frontend example:

Also, you can choose to provide products with catchy labels:

You can combine different banners types and show them together with banners.

To create promotion rules please go to the admin panel → **Marketing** → **Cart Price Rules** and click **‘Add New Rule’** button.

These settings are common among most of the actions and work quite the same.

**Discount Amount (in %)**- the percentage of the fixed value which is deducted from the order totals when the promotion rule is activated.**Max Number of Sets Discount is Applied To**- the maximum number of items to which the discount can be applied. For example, if your promotion is set to apply a discount on each second product in the cart and you set this setting to '2', the discount will be applied only twice even if a customer has 5 or more items in the cart.**Max Amount of Discount**- sets the maximum discount amount that can be applied to one rule.**Discount Qty Step (Buy X)**- in most cases, this setting controls the step by which a discount will be iterated. For example, if you set '2', the discount will be applied to every second product in the cart: 2, 4, 6, etc.**At first apply discount to**- choose if you want to give a discount on the cheapest products first (tends to be the lower discount amount in total), or on the most expensive products first (for example, you want to motivate sales of high-price items using special offer).**Calculate Discount Based On**- this setting controls how the discount value is calculated.**Skip Items with Special Price**- when this option is enabled, the rule will be applied to all products in the cart except the items with the Special Price.**Apply to Shipping Amount**- when it's enabled, the discount will be applied to the sum of the Subtotal + the Shipping Rate.**Discard subsequent rules**- enable this option to stop the rules with lower priority when the rule with this setting is activated.

To help you understand the nuances of **Calculate Discount Based On** functionality, here is a detailed description of how the calculation will be made in the case of each selected option.

*Price (Special Price is Set)* - the calculation will be based on a)the price configured by any of the applied cart price rules or b)the special price, that was set in the product settings.

*Price After Previous Discount(s)* - the calculation will be based on the price configured after the previous discount(s) is applied.

*Original Price, Apply to Special Price (if present)* - the calculation will be based on the price before any changes are applied.

*Original Price, Apply to Original Price (skip if result is more than special price)* - the algorithm compares Special Price with Final Price after discount and chooses the value you need depending on module configuration. This option is helpful when it is required to limit discounts in case discounts from several sources apply to the same item. This way, you don't need to check each and every possible discount source for overlaps and don't spend excessive amounts of money on promo discounts.

The Cheapest action is designed to apply a discount based on the price of cheapest products in the shopping cart.

This rule is set up to give 10% discount on the cheapest product in the cart.

Let's have a look how to configure the settings for this action.

**Discount Amount (in %)** - set here the amount of the discount(%) you would like to give. In our case, it's 10%.

**Maximum Qty Discount is Applied To** - here, we set the maximum number of items to which the discount can be applied. For example, if your promotion is set to apply a discount on 1 cheapest product in the cart and you set this setting to '1', the discount will be applied only once. If you want to get a discount to 2 cheapest products in the cart - set this option to '2'. In our case, we set 1.

Please, make sure the value is more than zero. Otherwise, the whole order will have a 100% discount after coupon application.

**Max Amount of Discount** - set the maximum discount amount that can be applied to one rule. It means that no matter how you configured the previous settings, the final discount can be more than you specify here. In our case, we'll not set any limitations.

**Discount Qty Step (Buy X)** - here you specify a step by which a discount will be iterated. For example, if you set '2', the discount will be applied for every second product in the cart: 2, 4, 6, etc. In our case, we need to set '1'.

**Calculate Discount Based On** - this setting controls how the discount value is calculated.

**Skip Items with Special Price** - when this option is enabled, the rule will be applied to all products in the cart except the items with the Special Price.

**Apply to Shipping Amount** - enabled this option only if you want to apply the discount to the sum of the Subtotal + the Shipping Rate. We don't need this for our promotions, so we set to 'No'.

**Discard subsequent rules** - enable this option to stop other rules with lower priorities if this rule is applied. We don't need this for our promotions, so we set to 'No'.

Let's see the rule in action.

Example rule setup

The cheapest product, in this case, is 'Argus All-Weather Tank' which is priced at $22.00. The discount amount is $2.20 which is exactly 10% of $22.00. Spot on!

**The Most Expensive** action works just the same as **The Cheapest**, but instead of calculating discount based on cheapest product, it checks the price of most expensive product instead.

Sample rule setup

Please, make sure the **'Maximum Qty Discount is Applied To'** value is more than zero. Otherwise, the whole order will have a 100% discount after coupon application.

The rule is set to give 10% discount on most expensive product. And here's the result

'Fusion Backpack' is the most expensive product in this case priced at $59.00. 10% of that value will be $5.90, and looking at Discount value we see a match.

With this action you can configure promotions like 'Get $10 off every $300 in the cart'.

Sample rule

This rule is set to give $1 every $20 spent. This it how it looks in action

Subtotal value is $135.00. Our discount should apply 6 times (135/20=6.75, rounding to the lower value) and give $6 discount. Which it does!

This rule group can be used when you want to give a discount on certain product or selection of products, but only if there is specific, different, product present in the cart. Example promotion: 'Buy White Shirt and get Red Bow-tie with 15% discount'.

Let's set up a rule like **'Buy Pushup Grips and get fitness video with 15% discount'**. This is how the rule might look like

This one requires some explanation.

**Promo Categories** and **Promo SKU** sections is where you define the Y product in **Buy X get Y** formula. Product X is defined in condition tree at the bottom. So you can use any attribute as condition for Product X, but Product Y can be defined only by SKU or category.

Also please note **Number of X Products** and **Number of Y Products** fields. In my example we have 'one for one' logic, but if you want to, for example, give discount like **Buy 5 X and get 2 Y** then 'Number of X Products' should be set to '5' and 'Number of Y Products' to '2'.

But let's see how our rule works now

The discount amount is $2.10 which is exactly 15% of $14 for our fitness video.

Please note that due to certain limitations of Magento 2 logic, it is required to set up at least one condition in the **Define X product** configurations section.

In case the mentioned above configuration is left blank, you'll get a validation error notification.

This action works exactly the same as **Percent Discount: Buy X get Y Free** above, but it will give fixed amount of discount instead of percent discount.

This action works exactly the same as **Percent Discount: Buy X get Y Free** above, but it will set fixed price for **Product Y** instead of percent discount.

This action can be used in promotions like **Get 20% off each 5-th product in the cart**.

The action applies the discount for each N-th item in the cart.

Let's set up a rule **Get 10% off each second item in the cart**. The rule will look like this

Then let's see how it worked on our cart here

Note, that the discount will be applied to each second item in the cart - the **Use For** field is set to **All Products in Shopping Cart**. Since **Each N-th** setting was set to '2' and quantity of ' LifeLong Fitness IV' is lower than that value, then the discount can't be applied to this item. But we have 6 Pushup Grips in the cart. 6/2=3, so we can apply the discount to three Pushup Grips items. Price of 1 item is $19, 10% of $19 will be $1.9. Multiply $1.9 by 3 and we get **$5.7 total discount**. Match!

This action works exactly the same as **Percent Discount: each 2-d, 4-th, 6-th with 15% Off** above, but it will give fixed amount of discount instead of percent discount.

This action works exactly the same as **Fixed Discount: each 3-d, 6-th, 9-th with $15 Off** above, but it will give a fixed price for each N-th product instead of a fixed amount of discount.

Set up the **At first apply discount to** setting to sort the products, to which the rule is applied, starting from the cheapest or the most expensive ones. When it is set to **Cheapest products**, then the discount will be applied to the cheapest products first.

The examples above illustrate the ability to apply discounts to all products in the cart. At the same time, the extension allows you to tune the group of “Each N-th” actions so that discounts will be applied only to identical products in the cart. For instance, you’re going to run the promotion “Get each second same product with 10% discount”. To set up the action, fill in the fields as illustrated below:

The field, which controls the application of discounts to the same products – the **Use For** field – should be set to **The Same Product in Shopping Cart**.

See, how it works.

At first discount will be applied to the second item of Affirm Water Bottle and will constitute $0.7. Then, the discount will be applied to each second item of Pursuit Lumaflex™ Tone Band products. The discount amount equals to $4,8 (3 * $1,6 = $4.8). To the Luma Yoga For Life product, the discount won’t be applied as the cart contains only one item of a kind. The total discount amount is $5.50.

Let’s compare the result with the one we can obtain by applying the discount for all products in the cart.

**Note!** Keep in mind that for this case the **Use For** field should be set to **All Products in Shopping Cart**. Also pay attention to the **At first apply discount to** field: according to the example, the discount will be applied to the most expensive products in the cart first.

For the products we've chosen in the previous example, discount amount will constitute $7.10 ($0,7 + $1,6 * 4 = $7.10):

Now it’s time for you to decide which of the ways of discount application meets your business strategy.

This action can be used in promotions like **10% off on all products after fifth one!**

The trick with this action is that you can give discount not only on all products after certain threshold is reached, but you can set the rule to give discount for each second, third, and so forth instead.

This is what **Each Product (step)** and **After N** setting control.

For example, we've set **After N** to '3' (as we wanted to discount items after the third one) and **Each Product (step)** to '2' (to give discount for each second item). How the rule will be applied in this case you can see from the diagram below:

But that is not all. To better understand how the calculation logic works, below you can find step-by-step explanation:

- From total quantity of products in the cart value set in
**After N**setting is subtracted. - Result of previous operation then divided by the value from
**Each Product (step)**. - Then all products in the cart are sorted by price, from lowest price to highest.
- Discount will be applied to products with lowest price after the third one (according to the
**After N**setting, the 1st, the 2nd and the 3rd products are ignored).

Example of the above. Let's say we've set **After N** to '3', **Each Product (step)** is set to '2' and in the cart we have products priced $10, $20, $30, $40, $50 and $60. And we want to give 10% discount. So let's work the steps:

- Total qty is '6',
**After N**is '3'. 6-3=3. **Each Product (step)**is '2', so 3/2=1.5, rounding to bigger value and getting *2*. Then we're going to apply discount on**two products**.- After sorting the products we have this array: $10, $20, $30, $40, $50, $60
- $40 and $50 products are the cheapest in this case, as the first three items are ignored. 10% of $40 is $4 and 10% of $50 is $5. 4+5=9. Quick math. So the resulting discount will be $9.

**Get 20% off any product after the fifth one in the cart** sounds like a nice enough promotion, let's try it.

Here's how the rule might look like in this case

And this is how it will affect the cart

If you've checked the explanation on action login above then you can calculate the result yourself. Otherwise this is how the result was achieved:

- Total qty is '7',
**After N**is '5'. 7-5=2. **Each Product (step)**is '1', so 2/1=2. Then we're going to apply discount on**two products**.- After sorting the products we have this array: $14, $19, $19, $19, $19, $19, $36
- According to the
**After N**rule, the first five items are ignored, so the discount will be applied to $19 and $36 products. 20% of $19 is $3.80 and 20% of $36 is $7.20. 3.8+7.2=11. So the resulting discount will be $11. Exact match!

This action works exactly the same as **Percent Discount: each 1st, 3rd, 5th with 15% 0ff after 5 items added to the cart** above, but it will give fixed amount of discount instead of percent discount.

This action works exactly the same as **Fixed Discount: each 3d, 7th, 11th with $15 0ff after 5 items added to the cart** above, but it will set a fixed price for the product instead of a fixed amount of discount.

Keep in mind, that you can choose to which products, matching the rule conditions, discounts should be applied first:

**Get 5 shirts for $200** promotion is an example of how this action can be used.

The logic behind this action is quite simple:

**Discount Amount**is a price for the group of items**Discount Qty Step (Buy X)**value determines how many products will be in one group.**Max Amount of Discount**- the max. discount amount that can be got with the rule.- Products in the cart are sorted by the price, from lowest to highest.
- Products in the cart are divided into groups and each group has a discount applied individually.

Example can be seen below.

The example #1

Let's try making simple rule without product restrictions

This rule is set to apply fixed price of $50 for group of three products. Any products, no restrictions. But if you want to limit the products which will be used in calculation and hence have discount applied, please use conditions tree in Actions tab to define these products.

Some explanation is required here. Let's work the logic steps:

**Discount Qty Step (Buy X)**is set to '3'. We have 5 products in the cart so discount will be applied only once.- After sorting products in the cart by the price we have this array: $14, $19, $19, $19, $19
- $14, $19, and $19 products are the cheapest three in the cart, so the discount will be applied to them.

Calculations:
14+19+19=52. **$52 is the original price** of these three products. But we've set to give a fixed price of $50 for a group. So the total discount will be **$52-$50=$2**. Looks like exactly what we have in Discount line.

The example #2

According to the rule, the groups will be formed of 3 items and the price for each set will be $30.

All the items in the cart are sorted by the price, thus, we have the following array: 2 2 19 19 45 45 54 54 54

The extension selects first 3 items. Their sum (23) is less than the price for the group in the rule (30). Thus, the first element is skipped and the extension selects the next 3 elements, started with the second element: 2+19+19 = 40. The sum is bigger than the price for the group in the rule (30), so the discount will be the following: 40 – 30 = 10

As the rule doesn't have any discount limits, the extension continues forming the groups for the discount.

The next group is 45 45 54. The sum(45+45+54 = 144) is bigger than the price for the group (30), so the discount is 144 - 30 = 114

The next group is 54 54. The number of items is less than it should be for making up the group, so the extension doesn't calculate the discount.

The final discount is 10+114=124

This action works the same as **Fixed Price: Each 5 items for $50** but instead of giving the fixed price for a group of products, it applies a percent discount to them.

This action can be used in promotions like **Buy shirt, pants and shoes just for $100** and alike.

Let's have a look what does the settings mean for this action.

**Discount Amount** - product set's price

**Max Number of Sets Discount Applied To** - the max number of sets that can be gathered by the rule. (If you leave this field empty the number of sets is unlimited.)

**Max Amount of Discount** - the max discount amount that can be applied. (the discount for the set is the difference between the sum of all products' prices in the set and the price for the set)|

**Promo SKU** - here you put down the SKUs of the products that make up the set.

As an example, I will set a promotion, where I give 50% discount for a purchase of a combination of Pushup Grips, Watch, and fitness video. Here's my rule

I have only products from the product set in the cart, the total for products is $14+$19+$54=$87.00 and 50% of that value is $43.50. Seems correct.

Please pay attention to ** Set Items by SKU** and **Set Items by Category IDs** fields. Here you define which products will be in the product set.

You can define categories instead of manually listing product SKUs. This makes it possible for customers to choose any products they want from the specified categories.

Say, you've listed 2 categories: Video Download and Fitness Equipment. This means that the customer's set will constitute of 2 products: any product from the Video Download category + any product from the Fitness Equipment category.

Here's an example of a configuration:

Please note that if you listed the ID of 1 category only, then only one product (the cheapest) will receive a discount.

For example, you have 5 categories for 'Bags'. You set only one 'Bag' category in the rule. In such cases, when a customer adds several bags, the discount will be applied only to the cheapest bag item in the cart.

This action works exactly the same as **Percent discount for product set** above, but it will give a fixed amount of discount instead of percent discount.

**The example #1 Two sets**

We created a promo rule, that offers a set for $20. The set is comprised of the following items. Go-Get'r Pushup Grips, Clamber Watch and Antonia Racer Tank.

The result:

In the example, there are 2 of each promo items in the cart, thus, 2 sets can be created. According to this:

The discount is: (38+108+4) – 2*20 = 110

The subtotal is: 240 – 110 = 130

**The example #2 Compatibility with another cart price rule**

The configuration of the rule #1 (The priority is 0)

The configuration of the rule #2 (The priority is 1)

The result:

In this example, the products Go-Get'r Pushup Grips, Clamber Watch, Antonia Racer Tank can be made up as a set for $20 (watch the rule with 0 priority).

In the example, there are 2 or more promo items in the cart, so 2 sets can be created.

The discount for this set will be the following: (38+108+4) – 2*20 = 110

2 of 3 Clamber Watches was got into the first set. But the remaining Clamber Watch item can be grouped in another set for $30( watch the set with the priority 1).

The discount for this set: (54+45) – 30= 69

The discount for 3 sets: 69+110 = 179

The subtotal: 294 – 179 = 115

**The example #3**

Now let's change the priorities of the rules from the example #2.

Clamber Watch и Overnight Duffle are grouped in a set for $30 with the rule's priority 0. As there are 2 Clamber Watch and 2 Overnight Duffle items in the cart, we can create 2 sets.

Thus, the discount is: (54*2+45*2) – 30*2 = 138

After the first set was grouped, only 1 Clamber Watch item left. Therefore, for the rule with the priority 1 only one set for $20 can be created.

The discount: (19+54+2) – 20 = 55

The final discount for 3 sets: 138+55 = 193

The subtotal: 294 – 193 = 101

**The example #4 The rule with the specified max.amount of discount **

In this example, we restrict the max.amount of the discount that can be applied to the rule. The discount shouldn't be more than $100.

As we have 2 of each promo items in the cart, 2 sets for $20 can be grouped.

The discount is: (38+108+4) – 2*20 = 110

But according to the rule, we have a restriction on the max. discount amount for the set ($100), so in this case, the discount that will be applied is $100.

The subtotal: 294 – 100 = 194

**The example #5 The rule with the specified max. number of sets **

The result:

As we have 2 of each promo items in the cart, 2 sets for $20 can be grouped.

But according to the rule, we have a restriction on the max.number of sets that can be formed (1), so in this case, the discount will be applied just for 1 set.

The discount will be the following: (19+54+2) – 20 = 55

The subtotal: 294-55=239

**The example #6 The rule with the specified max. amount of discount and specified max. number of sets**

As we have 2 of each promo items in the cart, 2 sets for $20 can be grouped.

The discount is: (19+54+2) – 20 = 55

But according to the rule, we have a restriction on the max. number of sets that can be formed (1), so in this case, the discount will be applied just for 1 set.

Also, we have a restriction on the max. discount amount for the set ($30), so in this case, the maximum discount that can be applied is $30.

The final discount is: 294 – 30 = 264

The subtotal is: 294 - 30 = 264

**Special Promotions Pro for Magento 2** expands **Special Promotions for Magento 2** capabilities by introducing a set of conditions that check customers' purchase history and account details.

**Customer Attributes**condition group will check the values of attributes saved in the customer's account.**Purchases History - Number of Completed Orders**will check the orders placed on the store and select customers which completed defined number of orders**Purchases History - Total Sales Amount**will sum up totals of completed orders placed by the same customer and compare the results with the value defined in condition.**Orders subselection**is very similar to**Number of Completed Orders**and**Total Sales Amount**but allows to define orders statuses and order dates which will be checked, instead of checking all orders with Complete status only as for the conditions above.

Now you can set a limit of times your promo rule could be applied by your customers globally in general.

For example, you want to organize a *give away with a 50% discount for the first 100 customers* who would use your prom coupon. In order to set such a limitation please navigate to **Marketing → Cart Price Rules** and then **add new rule** or **edit existing**.

Then specify the number of times you want the rule to available to be triggered in the field **'Global Users Limit'**, e.g. 100 times. It means that only 100 customers would be able to buy something in your store with a discount applied for this rule.

After the number on the counter from the field **'Current users'** would exceed the number you've set above, the rule would not be longer applied for all further new users.

**Loyalty Program for Magento 2** extension has all the features from both **Special Promotions for Magento 2** and **Special Promotions Pro for Magento 2** modules but also adds a page to a customer account where you can display information about the loyalty program you run on your store with goals, levels and discounts for each level along with the purchase history overview.

Extensions settings are located here: **Stores** - **Configuration** - **Amasty Extensions** - **Loyalty Program**.

Enabling the **Customer Account** feature will allow you to add a description of your loyalty program. You can use simple HTML tags to style the text in the **Description** field.

This is how the result of settings above may look like on the **Loyalty Program** page:

To further promote your discounted items, consider offering them as **cross-sells and upsells** on the related product and cart pages.

magento_2/special-promotions.txt · Last modified: 2021/02/19 08:44 by arhipenko