---
title: Promotions
slug: commerce-connect-14/docs/new_promotions
docTags: 
createdAt: 2026-07-23T10:25:32.050Z
---

Components mentioned here are available in the `EPiServer.Commerce.Marketing` namespace.

A promotion is a marketing tool used to increase sales of certain products or product lines. There are three promotion types.

- `EntryPromotion` – Applies reward to a specific entry.
- `OrderPromotion` – Applies reward to entire order.
- `ShippingPromotion` – Applies reward to order's shipping cost.

## Included promotion types

### Item promotions

- **Cheapest items for free** – Buy at least X items, get the cheapest Y for free.
- **Most expensive items for free** – Buy at least X items, get the most expensive Y for free.
- **Buy products for fixed price** – Buy X items from catalog entries for a fixed price.
- **Buy products for discount from other selection** – Buy at least X items, get a discount on selected items.
- **Buy products for discount on all selections** – Buy at least X items, get a discount on all.
- **Buy products for discount in same category** – Get a discount on all items in the selected category.
- **Spend for discounted selection** – Spend an amount to receive a discount on selected items.
- **Spend for free items** – Spend an amount to receive gift items.

### Order promotions

- **Spend for discount on order** – Spend an amount to receive a discount on the total order value.
- **Buy products and get discount on order** – Buy at least X items, get a discount on the total order value.

### Shipping promotions

- **Spend for discount on shipping cost** – Spend an amount to get a discount on shipping cost.
- **Buy products for discount on shipping cost.** Buy at least X items to get a discount on shipping cost.
- **Buy products for free shipping** – Buy at least X items and get free shipping.
- **Spend for free shipping** – Spend an amount to get free shipping.

If an order has several shipments, the shipping discount only applies to the shipment with the highest shipping cost.

For example: Shipment 1 has a shipping cost of $39.76. Shipment 2 in the same order form has a shipping cost of $28.00. If you apply a 10% discount, the discount amount is $3.98.

## Extend promotions example

Sometimes it is useful to add properties to promotions for marketing purposes, but use the base processor for evaluation.

```csharp
using EPiServer.Commerce.Marketing;
    using EPiServer.Commerce.Marketing.Promotions;
    using EPiServer.Core;
    using EPiServer.DataAbstraction;
    using EPiServer.DataAnnotations;
    using System.ComponentModel.DataAnnotations;
    
    namespace EPiServer.Commerce.Sample.Models.Discounts
      {
        [ContentType(GUID = "530a7f07-8d12-4625-bda3-8e135a10b74d")]
        [AvailableContentTypes(Include = new[] { typeof (PromotionData) })] 
        public class MyCompanyBuyQuantityGetItemDiscount: BuyQuantityGetItemDiscount
          {
            [Display(Order = 13, GroupName = SystemTabNames.PageHeader, Prompt = "Other Info")]
            public virtual string OtherInfo { get; set; }
          }
      }
```

## Use render templates

Promotion content uses normal rendering templates as described here. By default, only partial views are available for promotion content.

```csharp
using System.Web.Mvc;
    using EPiServer.Framework.DataAnnotations;
    using EPiServer.Web.Mvc;
    
    namespace MyOptimizelySite.Controllers
      {
        [TemplateDescriptor(Default = true)]
        public class MyCompanyBuyQuantityGetItemDiscountPartialController : PartialContentController<MyCompanyBuyQuantityGetItemDiscount>
          {
            public ActionResult Index(MyCompanyBuyQuantityGetItemDiscount currentDiscount)
              {
                // Implementation of action view the page. 
                return View(currentDiscount);
              }
          }
      }
```

**Example:** The corresponding rendering view for displaying the promotion partial view.

```csharp
@using EPiServer.Core
    @using EPiServer.Web.Mvc.Html
    
    @model EPiServer.Commerce.Sample.Models.Discounts.MyCompanyBuyQuantityGetItemDiscount 
    
    <h1>
        @Html.DisplayFor(m => m.Name)
    </h1>
    <h3>
        @Html.PropertyFor(m => m.Description)
    </h3>
    <p>
        @Html.PropertyFor(m => m.OtherInfo)
    </p>
```

**Related blog post:** [Old promotion system is (already) dead, long live the new promotion system](https://world.optimizely.com/blogs/Quan-Mai/Dates/2018/3/old-promotion-system-is-dead-long-live-the-new-promotion-system-/)
