Quan Mai
May 6, 2020
visibility 9021
star star star star star
(5 votes)

New "feature" in Commerce 13.16: Marketing UI statistics has been reworked

We released this feature a while back, but as the release notes are usually overlooked, the change might be seen as a bug. 

It's not a bug, it's a feature.

In the past, when you visit the Marketing UI, you can also see how many times a promotion has been redeemed, and how many orders have been created with that promotion/campaign, in real time. While it's fun to see the number changes - especially during a hot campaign, getting them are not as fun.

Getting the number of redemption is an easy task, it can be done by a simple COUNT in SQL. Counting the orders, in other hands, is a heavy task. An order might have multiple forms, and a form might have a promotion redeemed multiple times. To get the correct numbers, it has to be done by COUNT DISTINCT, which is (very) expensive.

And then because a campaign might contain multiple promotions, AND an order might have several promotions applied (which is good for your customers!), counting the number in that orders is even more expensive.

We got several reports from customers with huge number of orders (more than a few millions) that the Marketing UI is slow to load. After carefully investigation and consideration, we decided that we can make the SQL query better, but that alone is not enough. We need to change how data is collected. Getting the number of orders in real time is not a business critical feature, but slowing the UI down and potentially slowing down other queries, is a real concern.

So in Commerce 13.16, the statistisc in Marketing UI has been reworked. The order numbers are no longer updated in real time. The result: Marketing UI is now faster than ever before!

If you want to see the updates, you need to run the scheduled job manually (or set them to run, says, daily, or hourly). When you upgrade, the existing data will be migrated automatically. What to do after that is up to you. If you don't really care about those numbers, you can forget about it. More details can be read here: https://world.episerver.com/documentation/Release-Notes/ReleaseNote/?releaseNoteId=COM-10446

May 06, 2020

Comments

Praful Jangid
Praful Jangid May 7, 2020 07:41 AM

Good job team!

Johan Book
Johan Book May 7, 2020 10:41 PM

Yay! This is some really good news! Good job!

Kane Made It
Kane Made It May 13, 2020 10:27 AM

Yeah, I love the performance improvement. Nicely done there!

Sanjay Kumar
Sanjay Kumar Feb 18, 2021 03:41 AM

Awesome work team!

error Please login to comment.
Latest blogs
Composition Over Inheritance: Why Your Content Contract Is Not a Base Class

Inside the structural conformance pattern in SaaS CMS — from server-side inheritance to pipeline governance. A contract in Optimizely SaaS CMS is...

Vipin Banka | Sep 19, 2026

Optimizely Opti ID Integration: Why the API Key Was Missing from the DXP Management Portal

While working on an Optimizely CMS 12 Opti ID integration recently, we ran into an issue that initially appeared to be related to SSO authenticatio...

Madhu | Sep 18, 2026 |

Extending a Contract: What You Can Override

Contracts share fields across content types — but not every field setting can be overridden. Push the same contract onto several components, and CM...

Chirag Khanna | Sep 18, 2026 |

Building a Blazor Server UI Inside the Optimizely CMS 13 Admin Shell

What I learned shipping a Blazor Server UI inside Optimizely CMS 13 — Razor components in a NuGet package, the Blazor hub next to MapContent(),...

Stanisław Szołkowski | Sep 17, 2026 |