Take the community feedback survey now.


 -  Commerce
Jul 6, 2016
  3893
(0 votes)

New campaign and promotion system in Episerver Commerce

It's been in development and testing with beta customer for a while and with Commerce 9.19.0 it has finally dropped the beta stamp!

A terminology issue - in the user interface we use the term "discount" and in code / APIs we use the term "Promotions".

Why a new promotion system?

Discounts are one of the most effective ways to incentivize a shopper to complete the purchase. It's therefore a central feature in any e-commerce product and needs to be easy to use, flexible and performant.

The old promotion system in Episerver Commerce is based on the rules engine, a part of Windows Workflow Foundation v3, which has been obsoleted by Microsoft. It's also using a fairly advanced and complex UI to define the promotions which is not at the usability level that we strive for. These were the primary factors driving us to re-write the promotion system.

The idea is that we (Episerver) will provide most of the basic types of promotions that will be needed, and allow complete customization for those that have needs beyond what we provide out-of-the-box. For the marketer / merchandizer that will use those promotions we have a simple "fill in the blanks" metaphor.

What is it - exactly?

The main parts are:

  • New campaign concept
  • Code-centric definition of promotions
  • New UI for managing campaigns and discounts
  • Extensible promotion engine

Let's go thru them one-by-one, starting with the campaign concept. In the old promotion system campaigns were only used to hold dates and associate a promotion with the campaign. Initially the new campaign concept is little more than that but in the near future you will see a lot more benefits with the new campaigns, such as instant tracking of order value per campaign etc. Technically it's a content type in Episerver CMS and can be imported/exported in the same way as any normal content in CMS.

Promotions consists of two parts, a promotion data that holds metadata about the promotion such as which products/categories that the promotion applies to, required quantity, type and value of the actual discount that can be awarded etc. The second part is the promotion processor which implements the actual logic of checking if the promotion condition has been fulfilled, as well as returning information about the reward (if any) that should be applied.

We have tried really hard to make it as easy as possible to create new promotion types, with a lot of the hard work being done by the underlying promotion engine. Source code for the built-in promotion types will shortly be published on GitHub.

A lot of work has also gone into the new UI to make the process of creating and managing your campaigns and discounts a quick and intuitive process. Please let us know if we've succeeded.

Finally the promotion engine that drives the whole thing. The design goals were performance, simplicity and extensibility. You can find detailed information for developers here: http://world.episerver.com/documentation/Items/Developers-Guide/Episerver-Commerce/9/Marketing/marketing/

What's next?

Removing the beta stamp doesn't mean that we're done. We will add more promotion types, more features in the UI, improve performance, add capabilities etc. Removing the beta stamp is a signal that we will not make breaking changes, we're happy with the stability and general usability of this feature.

...and please - if you have feedback let us know!

Jul 06, 2016

Comments

Please login to comment.
Latest blogs
A day in the life of an Optimizely OMVP - Opticon London 2025

This installment of a day in the life of an Optimizely OMVP gives an in-depth coverage of my trip down to London to attend Opticon London 2025 held...

Graham Carr | Oct 2, 2025

Optimizely Web Experimentation Using Real-Time Segments: A Step-by-Step Guide

  Introduction Personalization has become de facto standard for any digital channel to improve the user's engagement KPI’s.  Personalization uses...

Ratish | Oct 1, 2025 |

Trigger DXP Warmup Locally to Catch Bugs & Performance Issues Early

Here’s our documentation on warmup in DXP : 🔗 https://docs.developers.optimizely.com/digital-experience-platform/docs/warming-up-sites What I didn...

dada | Sep 29, 2025

Creating Opal Tools for Stott Robots Handler

This summer, the Netcel Development team and I took part in Optimizely’s Opal Hackathon. The challenge from Optimizely was to extend Opal’s abiliti...

Mark Stott | Sep 28, 2025

Integrating Commerce Search v3 (Vertex AI) with Optimizely Configured Commerce

Introduction This blog provides a technical guide for integrating Commerce Search v3, which leverages Google Cloud's Vertex AI Search, into an...

Vaibhav | Sep 27, 2025

A day in the life of an Optimizely MVP - Opti Graph Extensions add-on v1.0.0 released

I am pleased to announce that the official v1.0.0 of the Opti Graph Extensions add-on has now been released and is generally available. Refer to my...

Graham Carr | Sep 25, 2025