Working on this release has been a tremendous pleasure for me as the Sylius Product Owner. I have a feeling that the major feature we’ve brought to life with it has been awaited by… some of you 🤭 😂 I believe that we’ve managed to serve something worth the wait and a good base for your custom ideas as usually.
There are numerous ways to boost your eCommerce sales – starting from a flawless UX such as easy online checkout, practical customer service during and after purchase, including live chats options, next day delivery, free delivery, easy returns, not forgetting about a wide choice of payment methods. Nonetheless, promotions are usually the first thing everyone thinks about (check this Statista report for more context).
So far, we’ve covered most of the list, and now…
The day has come – Sylius Core finally has catalog promotions. *STANDING OVATION*
Until now, this feature was deftly covered in plugins. In the past, by our already archived
UrbanaraCatalogPromotionPlugin, later by the community solutions by Setono, Locastic, or BitBag. There have been multiple discussions on GitHub that led us to this feature, and we appreciate our community a lot for their input.
For the past 6 months, our development team has been building a feature that is indeed an eCommerce essential. One could not imagine a store without a classy “This weekend -20% on all T-Shirts” promo, with crossed-out old prices on the products pages and cards. It’s a view we see all the time while shopping, a multiplicity of promotion labels, time-limited sales, black weekends – all of them fight for the customers’ attention… and money. 😉
You can also check some more insider tips for making your promotion campaigns (including peaks such as Black Friday or Winter Holidays) super-efficient in our blog post here.
Catalog Promotions’ configuration has been designed to suit the most known scenarios for promotion campaigns. We have scopes to define which products, actions to define the discounts, and a few more safety valves to have it all up and running with benefit to your sales results. Let me tell you more about what we have here.
Scopes define which products from the catalog should be affected by the catalog promotion. Thus, there are 3 types of scopes: for taxons, for products, and for variants. This way, you can configure catalog promos to be applied to whole categories of products, specifically chosen products, or even very specific variants (like only on size M of T-Shirts). The scopes form is shipped with autocomplete to ease the config. As always at Sylius, it can be easily customized to have your own scope types; we know you! Sylius users quite often come up with ideas we’d never even think of! Check the documentation here.
Actions, on the contrary, are used to define what happens with the prices of products selected in the scopes. You can have two types of actions: percentage or fixed discount. Both are pretty straightforward, they either lower the price by a percentage of it (like -10%) or subtract a fixed amount from the original price (like -5$). As with the scopes, actions can also be customized in the blink of an eye; check it out.
This effect is then seen in the shop, on the products’ cards and pages as a crossed-out original price and the discounted price right under it.
Looking at the screenshot above, you might’ve thought, what is this “winter sale” badge. Catalog promotions have two properties that can be displayed in the shop’s layout. The badge you can see above is the promotion’s `label`. It is shown on the product’s card in the catalog and the product show page by default.
An additional property is the `description` which is meant for explaining to the customers the promotion’s details in a few words (like “Winter sale: -50% on all caps until Feb. 20”). This one is displayed only on the show page. They are a good basis for making them much more visually appealing, but how? Simple as that.
I couldn’t imagine catalog promotions without dates, so as for cart promotions, also here you have an easy way to set when a promotion’s supposed to start and end.
But there is a thing that significantly differs from the cart promotions. Catalog promotions, when being applied, have to be processed by the system to display correct prices. Thus, Sylius takes all the variants that fall into the specified scope, and one-by-one applies the catalog discount to them. Depending on your catalog’s size (including the specified scope) and your application’s config (server, caches, etc.), the processing time may vary up to a few moments.
Ecommerce is all about profitability; plenty of people spend time every day controlling the pricing of products in modern online stores, which is often limited by contracts with suppliers. To support various scenarios in this area, we’ve proposed a few solutions.
First and foremost, this is the minimum price that you can specify on each product variant for each channel. The final product price paid by the customer cannot be lower than this price: no matter how many promotions (both cart and catalog) could be applied to it when it reaches that boundary, no more discount will be possible.
Sylius catalog promotions have priorities that allow you to specify the order in which they will be applied. They also provide the exclusive flag that lets you make promotion the only one valid for the specified scope. Read more in the documentation.
Cart promotions have received a toggle that controls their behavior with catalog discounts. With it, you can decide whether a cart promotion should be applied from the original price or from the price discounted by the catalog promotions, and thus have, for example, coupons that can be used for non-discounted products only.
You can extend these functionalities with your own ideas such as banners, pop-ups, mailing, etc. Of course, the whole feature, both administration, and shop can also be used through our new API Platform-based API. This way, you don’t have to use our default UI and can build your totally unique one.
Finally, the Catalog Promotions are fully covered with the new Sylius API! It’s the first feature we’ve built since we’ve switched to the API first approach, and it’s been dope!
With the newest Symfony LTS release, it was a no-brainer for us to support it ASAP. The last Symfony 5.0 release was supported from Sylius v1.10.6, so you could have already taken advantage of it. Why should you care about upgrading to Symfony 5.4?
While Sylius 1.10 was available for both 7.4 and 8.0 users, with 1.11, we have dropped 7.4 support (as in Nov 2021, its active support ended) and have required to use PHP 8.0. We’ve already migrated most of our codebase, and we have to admit: we loved it! And why did we love it – read in the next blog post this week!
Just like in all our recent releases since 1.8, we’ve been continuing the work on our new API. We’ve reached 85% coverage of shop features in it and have done a whole lot of unifications and fixes. But I will not get into details here; let me leave that to our dev team in their forthcoming blog post this week. In the meantime, you can read our previous pieces on API.
🙌 Yay! As promised, alongside the 1.10 release during last year’s summer, we’ve released the 1.0 version of one of our most important plugins. Very recently, we’ve also reworked (again) the PDF documents generated in both Refund and Invoicing plugins so that they now match each other.
Do not forget that right after the Sylius new release, our commercial product will also receive support for the newly released version. This will let you use the core Catalog Promotions and upgrade to Symfony 5.4 on projects with Sylius Plus! Moreover, you may expect that this year we will start building an enterprise extension to the Catalog Promotions based on the input from our strategic customers like Brille24 🔥 We are keeping support for the still maintained Sylius 1.10, have dropped support for Sylius 1.9 and will be now adding support for 1.11.
As you might’ve read in our recent blog post, Sylius Core Team has been reworked, and it (again) consists of people both from outside and inside of the Sylius company! Have a look here. Have you discovered who the mysterious Core Team member is? 🤭
On the other hand, our own Sylius Development Team has grown 😀 We’ve welcomed Rafał, Kamil, Ernest, and another Rafał to our pack. Welcome on board! And two more senior Symfony developers will be joining us by April! While looking at the Sylius backlog and the velocity resulting from this growth, the only thing I can say is: WOW, pure speed and power! 🏎
When it comes to planning the future, we’ve never really liked deadlines. But there are certain plans that we’re looking forward to right now.
First and foremost, we are switching to more scope-based than time-based releases. That’s why we won’t be announcing an estimated release date for 1.12 as we used to do for previous versions. Rather than that, we will come up with a feature scope we’d like to deliver, and when getting closer to actually finishing it, we will announce the release. The time-based approach was shady for all of us; you’ve seen us postponing releases by weeks quite a lot of times, as we always wanted to push some more into it 🍋.
Keep track of our roadmap as it is going to change very, very soon, and we will firstly show our plans there.
If you feel like asking more questions and seeing the feature in action on the screen, we have some news to share. We’re going to lead a “Community Update” webinar, in order to improve our communication with you – fantastic Sylius users. It will give us all a shared space for regular conversation, gathering feedback, and sharing our further plans. Sounds interesting? Sign up below and see you around!