Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Get an overview of the changes and fixes in each version of Umbraco Commerce.
In this section, we have summarized the changes to Umbraco Commerce that were released in each version. Each version has a link to the Commerce issue tracker showing a list of issues resolved in the release. We also link to the individual issues themselves from the detail.
If there are any breaking changes or other issues to be aware of when upgrading they are also noted here.
If you are upgrading to a new major version, check the breaking changes in the Version Specific Upgrade Notes article.
This section contains the release notes for Umbraco Commerce 13 including all changes for this version.
Fixed Rounding issue between Umbraco Commerce and Stripe payment gateway #580.
Important If you are running on version 13 of Umbraco Commerce it is advised to upgrade to this version as soon as possible. Changes in .NET 8.0.8 cause an error in our EntityCache
which have been resolved in this release. With some hosting providers automatically applying .NET patch releases, upgrading should be proritised to avoid any unintentional breakages.
Fixed Exception on GetOrCreateCurrentOrder in SessionManager #581.
Fixed regressions due to updates from 13.1.6 not getting merged back into main project #576.
Fixed bug in group discounts provider based on the issue described in #574.
Fixed regression in EntityCache updates from 13.1.7/13.1.8 failing under load #573.
Fixed bug in Order search API throwing ORDER BY clause exception #571.
Fixed bug in Country create dialog failing if Regions exist within another store instance #568.
Fixed Price Adjustments applied to bundle sub order line not reflected in the bundle unit price #564.
Belt and brace updates to EntityCache and added a logger to log if an attempt is made to set a NULL
key #565.
Fixed issue where the EntityCache fail after the .NET Software Development Kit (SDK) update #565.
Check the config for being undefined in order's edit properties dialog.
Fixed issue with the Storefront API hosted checkout not rendering form attributes #532.
Fixed issue with 13.1.5 migration scripts using too new a feature #539.
Fixed issue with stock synchronizer prematurely looking up a store #536.
Updated pessimistic locking on the payment provider callback endpoints to lock from the start of the request, not when processing the callback.
Added new IRoundingService
to allow overriding the default rounding behavior #506.
Added pessimistic locking to the payment provider callback endpoint to prevent concurrency issues if the endpoint is called too many times at once #533.
Fixed issue with malformed script tags in the Storefront API hosted checkout pay endpoint #532.
Fixed percentage discounts not taking the stores rounding method into account during calculation #506.
Fixed issue where order lines with a zero value would cause a concurrency exception due to the fact their prices aren't frozen but the order recalculation process was attempting to refreeze them.
Fixed error with realtime shipping rates provider where the rate cache duration was zero.
Updated MemoryCache
usages to fallback to a default implementation if one isn't found in the DI container.
Updated Order properties to trim whitespace around values to prevent unexpected behavior #528.
Updated all currency database tables to support 8 decimal places to prevent rounding issues with order quantities above 1000 #506.
Fixed error in SearchOrder
when searching with date ranges #496.
Fixed properties set in the background from an entity action lost when resaving the entity from the UI after the action (wasn't fully fixed in 13.1.2) #472.
Fixed orderline properties not showing in orderline summary by default due to regression from strongly typing UI config files in 13.1.0 #494.
Added support for localhost sub domains in dev license #493.
Added a WithUmbracoBuilder
extension for IUmbracoCommerceBuilder
to allow access to the Umbraco configuration within an Umbraco Commerce registration.
Fixed properties set in the background from an entity action lost when resaving the entity from the UI after the action #472.
Fixed unable to override cart editor view like you can the order editor view #474.
Fixed regression where launching the shipping method country prices dialog caused JavaScript errors #480.
Fixed regression with order list configs not deserializing correctly #485.
Fixed Order.ProductVariantReference
mapping to the wrong field in Storefront API.
Fixed CountryRegionTaxRate.Country
mapping to the wrong field in Storefront API.
Added better validation error messages when saving locations missing required fields #481.
Fixed regression where custom order/cart editor view stopped working #469.
Fixed issue with Locations not deleting #470.
Fixed issue with date range order searches not working correctly #468.
Minor release closing off the RC period.
Fixed null exceptions when creating shipping methods with empty config.
Added helper methods to FixedRateShippingCalculationConfig
to make it's API closer to the older fixed rate price lookup API.
Fixed missing SQL Server migrations.
Fixed realtime shipping rates cache not taking shipping country/region changes into account.
Fixed realtime shipping rates cache not taking store default location changes into account.
Fixed error in SafeLazy not taking null into account and so causing errors when an entity cache entry is evicted #466.
Updated Umbraco.Licenses
version dependency to the latest.
Made WithUmbracoCommerceBuilder
extension public to allow accessing the IUmbracoCommerceBuilder
instance outside of the AddUmbracoCommerce
call.
Fixed RC1 regression where discount/gift card tree icons were broken.
Fixed RC1 regression where localized translations were broken.
Fixed issue in dynamic shipping subtotal range provider not taking the current calculation context into account and so was selecting the wrong range.
Read the v13.1.0-RC release post for further background on this release.
Adds dynamic shipping rate calculation option.
Adds real-time shipping rate calculation option via Shipping Providers.
Adds store locations for shipping calculations.
Adds store Measurement System setting.
Adds Measurements property editor for capturing product measurements for shipping calculations.
Adds shipping package factory concept for calculating packages for shipments.
Updates the shipping method create-flow to require selecting a shipping provider and a shipping calculation mode.
Updates API for calculating shipping prices as payment methods can now return multiple rates.
Updates the order API for setting the shipping method to accept a ShippingOption
for shipping methods that can supply multiple rates.
Updates the order editor to display the selected shipping option.
Updates the cart editor to allow selecting a shipping option from real-time shipping methods.
Updates the cart editor to calculate shipping rates/payment fees based on the current in-memory cart state.
Updates storefront API to incorporate new shipping rates endpoints.
Fixed error in SafeLazy not taking null into account and so causing errors when an entity cache entry is evicted #466.
Reset request stream before passing to payment providers.
Added licensing fallback to use any previously validated license within the last 7 days.
Updated Umbraco.Licenses
version dependency to the latest.
Made WithUmbracoCommerceBuilder
extension public to allow accessing the IUmbracoCommerceBuilder
instance outside of the AddUmbracoCommerce
call.
Upgraded to run again Umbraco v13 and .NET 8
Upgraded all 3rd party dependencies
Fixed Cross-site scripting (XSS) issue in email/print templates
You can find the release notes for Vendr in the Change log file on GitHub.
This article shows how to manually upgrade Umbraco Commerce to run the latest version. When upgrading Umbraco Commerce, be sure to also consult the version specific upgrade notes to learn about potential breaking changes and common pitfalls.
Before upgrading, it is always advisable to take a complete backup of your site and database.
To get the latest version of Umbraco Commerce you can upgrade using:
NuGet
Visual Studio
NuGet installs the latest version of the package when you use the dotnet add package Umbraco.Commerce
command unless you specify a package version: dotnet add package Umbraco.Commerce --version <VERSION>
After you have added a package reference to your project by executing the dotnet add package Umbraco.Commerce
command in the directory that contains your project file, run dotnet restore
to install the package.
Go to Tools
-> NuGet Package Manager
-> Manage NuGet Packages for Solution...
in Visual Studio, to upgrade Umbraco Commerce:
Select Umbraco.Commerce.
Select the latest version from the Version drop-down and click Install.
When the command completes, open the .csproj file to make sure the package reference is updated:
If you are using one or more of the below sub-packages, they also need to be upgraded as well:
Umbraco.Commerce.Common
A shared project of common, non-Commerce-specific patterns and helpers.
Umbraco.Commerce.Core
Core Commerce functionality that doesn't require any infrastructure-specific dependencies.
Umbraco.Commerce.Infrastructure
Infrastructure-specific project containing implementations of core Commerce functionality.
Umbraco.Commerce.Persistence.SqlServer
Persistence-specific project containing implementations of core Commerce persistence functionality for SQL Server.
Umbraco.Commerce.Persistence.Sqllite
Persistence-specific project containing implementations of core Commerce persistence functionality for SQLite.
Umbraco.Commerce.Web
Core Commerce functionality that requires a web context.
Umbraco.Commerce.Cms
Core Commerce functionality that requires an Umbraco dependency.
Umbraco.Commerce.Cms.Web
The Commerce functionality for the Umbraco presentation layer.
Umbraco.Commerce.Cms.Web.UI
The static Commerce assets for the Umbraco presentation layer.
Umbraco.Commerce.Cms.Startup
The Commerce functionality for registering Commerce with Umbraco.
Umbraco.Commerce
The main Commerce package entry point package.
Version specific documentation for upgrading to new major versions of Umbraco Commerce.
This page covers specific upgrade documentation for when migrating to major 13 of Umbraco Commerce.
If you are upgrading to a new minor or patch version, you can find information about the breaking changes in the Release Notes article.
Version 13 contains a number of breaking changes from the previous, Vendr product.
See the Migrate from Vendr to Umbraco Commerce guide for full details.
You can find the version specific upgrade notes for versions out of support in the Legacy documentation on GitHub.
Follow the steps outlined below to migrate your custom payment providers to Umbraco Commerce.
Throughout the following steps, we will migrate custom payment providers used for Umbraco Commerce into Umbraco Commerce.
Remove any installed Umbraco Commerce packages
Install the Umbraco.Commerce
packages for the payment providers.
Update any namespace references.
Update project framework to net7.0
.
The final step in the migration is to update all abstract async methods exposed by the base class. It needs to be updated to accept an additional CancellationToken cancellationToken = default
parameter as the final method argument. Your Integrated Development Environment (IDE) should provide feedback on all the methods that have been updated.
Umbraco Commerce is a commercial product. You can run Umbraco Commerce unrestricted locally without the need for a license. Running Umbraco Commerce in the public domain will display a warning banner in the backoffice and will limit the maximum number of orders to 20. To remove these restrictions, you'll need to have a valid license.
Licenses are sold per backoffice domain and will also work on all subdomains. If you have alternative staging/QA environment domains, additional domains can be added to the license on request.
The licenses are not bound to a specific product version. They will work for all versions of the related product.
Let's say that you have a license configured for your domain, mysite.com
, and you've requested two development domains, devdomain.com
and devdomain2.com
.
The license will cover the following domains:
localhost
*.local
*.mysite.com
www.mysite.com
devdomain.com
www.devdomain.com
devdomain2.com
www.devdomain2.com
You can have only 1 license per Umbraco installation.
There are a few differences as to what the licenses cover:
A single license covers the installation of Umbraco Commerce in 1 production backoffice domain, as well as in any requested development domains.
The production domain includes all subdomains (e.g. *.mysite.com
).
The development domains work with or without the www
subdomain.
The license allows for an unlimited number of orders.
The license also includes localhost
and *.local
as a valid domain.
If you have multiple backoffice domains pointing at the same installation, you have the option to purchase and add additional domains to your license.
This is an add-on domain for existing licenses. Refunds will not be given for this product.
You can look at the pricing, features, and purchase a license on the Umbraco Commerce page. A member of the sales team will manage this process. You will need to provide all domains you wish to have covered by the license such as primary and development/staging/QA domains. You should then receive a license code to be installed in your solution.
If you require to add addition domains to the license, reach out the sales team with your request and they will manage this process.
Once you have received your license code it needs to be installed on your site.
Open the root directory for your project files.
Locate and open the appSettings.json
file.
Add your Umbraco Commerce license key to Umbraco:Licenses:Umbraco.Commerce
:
You might run into issues when using a period in the product name when using environment variables. Use an underscore in the product name instead, to avoid problems.
You can verify that your license is successfully installed by logging into your project's backoffice and navigating to the settings section. Here you will see a license dashboard which should display the status of your license.
UmbracoApplicationUrl
If you are running on a single domain for both your frontend and backend environments, it's not necessary to configure a UmbracoApplicationUrl
.
If you have different domains for your frontend and backend, then it's advised that you configure an UmbracoApplicationUrl
set to your backoffice URL. This helps the licensing engine know which URL should be used for validation checks. Without this configuration setting, the licensing engine will try and work out the domain to validate from the HTTP request object. This can lead to errors when switching between domains.
An UmbracoApplicationUrl
can be configured in your appSettings.json
file like so:
See the Fixed Application URL documentation for more details about this setting.
UmbracoApplicationUrl
on Umbraco CloudIf you are hosting on Umbraco Cloud you will find the configuration described above won't be reflected in your environment. The reason for this is that Umbraco Cloud sets this value as an environment variable set to the Cloud project domain (<your project>.umbraco.io
). This overrides what is set via the appSettings.json
file.
There are two options in this case:
Either the domains for each of your Cloud environments can be added to your license.
Or, for more control and to ensure this value is set correctly for other reasons, you can apply the configuration via code.
For example, in your Program.cs
:
In practice, you will probably want to make this a bit more sophisticated. You can read the value from another configuration key, removing the need to hard-code it and have it set as appropriate in different environments. You can also move this code into a composer or an extension method if you prefer not to clutter up the Program.cs
file.
Some Umbraco installations will have a highly locked down production environment, with firewall rules that prevent outgoing HTTP requests. This will interfere with the normal process of license validation.
On start-up, and periodically whilst Umbraco is running, the license component used by Umbraco Commerce will make an HTTP POST request to https://license-validation.umbraco.com/api/ValidateLicense
.
If it's possible to do so, the firewall rules should be adjusted to allow this request.
If such a change is not feasible, there is another approach you can use.
You will need to have a server, or serverless function, that is running and can make a request to the online license validation service. That needs to run on a daily schedule, making a request and relaying it onto the restricted Umbraco environment.
To set this up, firstly ensure you have a reference to Umbraco.Licenses
version 13.1 or higher. If the version of Commerce you are using depends on an earlier version, you can add a direct package reference for Umbraco.Licenses
.
Then configure a random string as an authorization key in configuration. This is used as protection to ensure only valid requests are handled. You can also disable the normal regular license checks - as there is no point in these running if they will be blocked:
Your Internet-enabled server should make a request of the following form to the online license validation service:
The response should be relayed exactly via an HTTP request to your restricted Umbraco environment:
A header with a key of X-AUTH-KEY
and the value of the authorization key you have configured should be provided.
This will trigger the same processes that occur when the normal scheduled validation completes ensuring your product is considered licensed.
Detailed steps on how to migrate the Checkout package from Vendr to Umbraco Commerce.
Throughout the following steps, we will migrate the Checkout package from Vendr to Umbraco Commerce.
Make a backup of any custom templates and Vendr UI configuration files.
Make a note of all configuration values on the Vendr.Checkout Checkout node.
Delete Vendr.Checkout generated checkout nodes.
Checkout
Customer Information
Shipping Method
Payment Method
Review Order
Process Payment
Order Confirmation
Delete all Vendr.Checkout generated Document Types.
[Vendr Checkout] Page
[Vendr Checkout] Checkout Page
[Vendr Checkout] Checkout Step Page
Delete all Vendr.Checkout generated Data Types.
[Vendr Checkout] Step Picker
[Vendr Checkout] Theme Color Picker
Uninstall the Vendr.Checkout Nuget package:
Delete any remaining files and folders in the ~/App_Plugins/VendrCheckout
directory.
Install the Umbraco.Commerce.Checkout package:
Locate the Umbraco Commerce Checkout dashboard in the Settings section
Click the "Install" button to reinstall the Checkout components in the previous location.
Copy any custom configuration files back into the solution.
Copy any custom Views into the ~/Views/UmbracoCommerceCheckout/
folder.
Browse the Umbraco Commerce documentation to learn more about the addon and how to use it.
Umbraco Commerce is the official Umbraco e-commerce addon for your Umbraco CMS website. It can be used to set up small webshops, while it can also be implemented for big-scale e-commerce solutions spanning multiple countries.
Are you looking for Vendr documentation?
The articles and topics covered on this documentation site are for Umbraco Commerce.
Documentation for Vendr is located on the Vendr Documentation site.
These docs are aimed at developers who have at least a basic understanding of Umbraco, as well as C# and MVC principals.
If you require assistance you can use our support channels to seek assistance.
Umbraco Commerce v13.1.0-RC release notes.
Umbraco Commerce v13.1.0-RC introduces two new exciting strategies for shipping calculation. With these new calculation strategies, calculating shipping costs has become ever more flexible allowing you to have fine grained control over your shipping rates.
Added dynamic shipping rates feature for range based rates calculaton.
Added realtime shipping rates feature for up to the minute, shipping operator shipping quotes.
A number of API updates to accomodate the new shipping features.
Add-on updates are also neccesarry for this release.
With the new dynamic shipping rates feature, it is now possible to define range-based shipping rates configurations. This allows you to adjust shipping costs based on the state of your customer's order. No longer are you tied to a single inflexible fixed rate. Want to charge an excess for bulky/heavy items? no problem. Want to offer cheaper rates for small orders? we got you.
With dynamic shipping rates, you are in full control over every aspect of your rates calculation process.
Be sure to checkout the Dynamic Shipping Rates documentation for how to get started with them.
With dynamic shipping rates, you aren't only tied to the ranges and rate options we provide out of the box. As with much of the Umbraco Commerce API, we've made these fully pluggable to allow you to be able to define your own. With pluggable range/rate providers, you can truly make dynamic shipping rates tailored to your customer's needs.
Be sure to read the Shipping Range & Rate Providers documentation for details on how to setup your own providers.
With the new realtime shipping rates feature, it is now possible to fetch realtime, up to the minute shipping rates directly from your shipping operator. With realtime rates you can be sure that your shipping rates are as accurate as they can be with minimal configuration required.
Be sure to checkout the Realtime Shipping Rates documentation for how to get started with them.
The secret behind realtime rates is the new Shipping Providers API. Shipping Providers define a minimal API to encapsulate communication with shipping operators. As you might expect, these are fully pluggable allowing you to work with any shipper operator you and your customers require.
To help you get started, we are releasing three example shipping providers with this release:
All of these providers are fully open-source so you can see exactly how they work, and use them as a starting point for custom integrations.
The dynamic and realtime shipping features also required some updates to other areas of the Umbraco Commerce API. Details of these updates can be found below.
To allow shipments to have more dynamic calculations, it's now necessary to know where products are shipping from, not only where they are shipping to. The handle this, store entities now have a Locations child configuration area that allows you to define store locations.
We currently only support a store having a single location which is selected on the Store settings screen via the Default Location setting. We'll be looking in the future to support stores having multiple warehouse locations.
Another important aspect of shipping calculations is defining packages along with their dimensions and weight. Umbraco Commerce comes with an out-of-the-box package algorithm. However, with products being stackable in many different ways, we've made this pluggable too to allow you to create more specific packaging logic.
See the Shipping Packing Factories concept documentation for more details.
With the shipping packing factories, it also becomes necessary to capture the physical dimensions and weight of the individual products. To help with this, Umbraco Commerce now comes with a Measurements property editor to allow you to define all the physical attributes of your products.
We've also made it so that you can configure your prefered measurement system (metric or imperial) via a setting on the Store node. This setting has a new Measurements property editor taking this into account.
There is a fundamental change that arises with the new dynamic and real-time shipping rates. And that is that it's now no longer possible to retrieve a shipping rate from a shipping method, without a reference order. Additionally, many shipping operators offer different products and services. This means that shipping methods are now able to return multiple rate values for a given rate request.
To accommodate this some APIs have been, such as the shipping method CalculatePrices
method is being replaced with TryCalculateRates
that accepts an order, and can return multiple rates. In addition, we've also updated the SetShippingMethod
API on the order to support passing in a ShippingOption
to identify which rate option from the shipping operator is being selected.
These changes have also been made to the Storefront API with some older endpoints becoming deprecated, and new ones being created for these new approaches.
To maintain backward compatibility, the old APIs are still present, but these will only work with return fixed-rate shipping method definitions.
In addition to the core Umbraco Commerce changes, updates to the following add-on packages will also be made:
Umbraco.Commerce.Deploy - Supports the store and shipping method updates as well as the new locations model.
Umbraco.Commerce.Checkout - Adds support for displaying/selecting shipping rates on the front end.
Learn the steps needed in order to install Umbraco Commerce into your Umbraco CMS website.
Learn how to install Umbraco Commerce into your Umbraco CMS implementation.
You can also find information about how to upgrade and how to install and activate your Umbraco Commerce license.
Umbraco Commerce is available via NuGet.Org.
To install Umbraco Commerce via NuGet you can run the following command directly in the NuGet Manager Console window:
Alternatively, you can also find and install the NuGet package via the NuGet Package Manager in Visual Studio. You will see a number of packages available, however, you will want to install the main Umbraco Commerce package.
For most sites using a single solution, the above will be all you need to install Umbraco Commerce into your project. When you have a more complex solution structure consisting of multiple projects, Umbraco Commerce is available in multiple sub-packages with varying dependencies.
Umbraco.Commerce.Common
A shared project of common, non-Commerce-specific patterns and helpers.
Umbraco.Commerce.Core
Core Commerce functionality that doesn't require any infrastructure-specific dependencies.
Umbraco.Commerce.Infrastructure
Infrastructure-specific project containing implementations of core Commerce functionality.
Umbraco.Commerce.Persistence.SqlServer
Persistence-specific project containing implementations of core Commerce persistence functionality for SQL Server.
Umbraco.Commerce.Persistence.Sqllite
Persistence-specific project containing implementations of core Commerce persistence functionality for SQLite.
Umbraco.Commerce.Web
Core Commerce functionality that requires a web context.
Umbraco.Commerce.Cms
Core Commerce functionality that requires an Umbraco dependency.
Umbraco.Commerce.Cms.Web
The Commerce functionality for the Umbraco presentation layer.
Umbraco.Commerce.Cms.Web.UI
The static Commerce assets for the Umbraco presentation layer.
Umbraco.Commerce.Cms.Startup
The Commerce functionality for registering Commerce with Umbraco.
Umbraco.Commerce
The main Commerce package entry point package.
See the Licensing page for details on how to install a license.
How-To Guide to configure SQLite support for Umbraco Commerce.
Out of the box, Umbraco Commerce only supports SQL Server-based databases as this is the recommended database platform for live environments. To aid testing and rapid prototyping, however, Umbraco Commerce can be configured to use an SQLite database.
Whilst Umbraco Commerce does support SQLite for testing, we do not recommend using it in a live environment. Due to the high levels of active connections required to manage concurrent shopping carts, this is not something SQLite handles well at all.
To add SQLite support, you will need to install the SQLite persistence layer NuGet package for Umbraco Commerce.
Once the NuGet package is installed, you need to register SQLite support with Umbraco Commerce via the interface.
Add .AddUmbracoCommerce()
below .AddWebsite()
in the Program.cs
file.
After configuring Umbraco CMS with SQLite, Umbraco Commerce will automatically utilize the same database configuration. If you wish to install Umbraco Commerce into its own SQLite database you can configure its connection string in the appSettings.json
like so:
Configuring Umbraco for Umbraco Commerce.
Before you can start to use Umbraco Commerce, you need to configure Umbraco to allow access to the relevant sections. The Umbraco Commerce UI is split over three sections within the Umbraco backoffice:
Settings for managing the different store settings.
Commerce for managing store-related content (orders, discounts, etc).
Content for managing the Umbraco Commerce products.
In order to access these sections, you will need to ensure a User account with the relevant permissions to do so. When logged in as Administrator, access to the Settings and Content sections is already granted.
To gain access to the Commerce section additional configuration is needed.
To gain access to the Commerce section, it is advised to create a new User Group called Commerce.
Navigate to the User section of the Umbraco backoffice.
Open the User Groups page.
Create a new User Group called Commerce.
Assign the relevant User accounts to that User Group.
Allow that User Group access to the Commerce section as a whole.
Creating a custom User Group provides a way of managing Users who have access to the Commerce section, rather than allowing individual Users access.
Learn more about .
Once created and assigned, you should be able to refresh the backoffice and see that we now have access to the new Commerce section.
The User Interface for Umbraco Commerce.
The Umbraco Commerce UI consists of a number of key areas, split over three sections within the Umbraco backoffice:
Settings for managing the different store settings.
Commerce for managing store-related content (orders, discounts, etc).
Content for managing the Umbraco Commerce products.
The Settings section is where the configuration of all Store settings is managed. From here you can manage how the Store works as well as what options will be available within the Store.
The UI for the Settings section consists of a Tree which lists all available Stores and their key areas available for configuration. It also contains a right-hand editor panel. This can either act as an editor interface or as a list view interface for listing items within that given configuration area.
Each Store has 8 key areas of configuration accessible within the Settings section:
Store: Each Store node contain Store level configuration settings.
Order Statuses contain the configuration of the different Statuses an order can be in. Think of these as an organizational structure for your Orders.
Shipping Methods contains the list of Shipping Methods available to a Store.
Payment Methods contains the list of Payment Methods available to a Store.
Countries contain the list of Countries the Store is able to trade with.
Currencies contain the list of accepted Currencies for the Store.
Taxes contains the list of Tax Classes and their Tax Rates for the Store.
Email Templates contains the list of Email Templates supported by the Store.
The Commerce section contains a Tree to access the Stores and their different features, as well as a right-hand panel for managing the items.
The Content section is where the Umbraco Commerce product nodes are managed. Managing products with Umbraco Commerce is similar to working with regular content nodes.
How-To Guide to configure using an alternative database for the tables of Umbraco Commerce.
By default, Umbraco Commerce will use the same database as Umbraco to store its data in. As e-commerce and content management have different database needs, it may be beneficial to house the Umbraco Commerce database tables in an alternative database.
To do this, you can configure a Umbraco Commerce-specific connection string in your app settings ConnectionStrings
section using the umbracoCommerceDbDSN
prefix.
When Umbraco Commerce runs, it will perform all of its migrations and operations against this database instead of the default Umbraco database.
How-To Guide to limit order line quantity in Umbraco Commerce.
In this guide, we will be looking at Validation events in Umbraco Commerce. These enabled you to limit order line quantity based on:
The existing stock value of the product, and
The existing quantity of the product in the cart.
When adding a product to the cart we need to verify that the product is in stock. We also need to verify that the customer does not already have the remaining quantities in the cart.
When changing the order line quantity on the cart page, we need to ensure that the quantities being changed are in stock.
Finally, we need to register the Umbraco Commerce event handlers via an IUmbracoCommerceBuilder
extension.
Getting Started with Umbraco Commerce.
In this section, you will find information about the key steps necessary to get you started with Umbraco Commerce.
It is assumed that you have an Umbraco 12+ website configured, ready to install Umbraco Commerce into.
Find detailed instructions on how to install the latest version of Umbraco in the .
The minimum requirements for using Umbraco Commerce are as follows:
Umbraco CMS version 12+
SQL Server 2015+ Database
SQLite is fine for testing, but not recommended for live deployments. See for more details.
This is an add-on product to Umbraco CMS. Umbraco Commerce follows the .
Learn how to migrate a Vendr solution to Umbraco Commerce.
This guide provides a step-by-step approach to migrating a default Vendr solution to Umbraco Commerce.
Upgrade to the latest version of Vendr before continuing with the migration.
You can upgrade your installation by installation the on top of the existing one.
You can find details on migrating the Checkout package as well as custom Payment Providers in the of this article.
Before outlining the exact steps, there are a few key changes to be aware of.
These changes will dictate the steps to take in the process of migrating to Umbraco Commerce.
In this first step, we will be replacing all existing Vendr dependencies with Umbraco Commerce dependencies.
Remove any installed Vendr packages (including Payment Providers):
Take a backup of any Vendr-specific templates and config files you will want to reuse:
Delete the Vendr App_Plugins
folder:
Install Umbraco.Commerce
:
Install Umbraco Commerce packages including any payment providers previously removed.
Reapply any backed-up config files in their new App_Plugins
location.
Move any backed-up templates into the ~/Views/UmbracoCommerce/Templates/
folder.
Compile your project against .NET 7.0.
In this step, we will cover updating the database for Umbraco Commerce.
Backup your database
Rename database tables using the following query:
Swap Vendr property editors for Umbraco Commerce property editors:
Swap the Vendr variants editor for the Umbraco Commerce variants editor in the block list data entry:
Swap Vendr price/amount adjustments to Umbraco Commerce price/amount adjustments:
Update template paths:
Update the migrations log:
Update the activity logs:
Delete any obj/bin folders in your projects to ensure a clean build.
Recompile all projects and ensure all dependencies are restored correctly
Delete the existing Vendr license files in the umbraco\Licenses
folder.
Add your new Umbraco.Commerce license key to the appSettings.json
file:
Update any payment gateways that use a global webhook:
Run the project.
It is highly recommended to ensure everything works as expected, before moving on to migrating packages and custom payment providers.
If you have been using the Vendr Checkout package, you will need to follow some additional steps to migrate this package to Umbraco Commerce. Follow the link below for a complete guide:
Any custom payment providers used with Vendr also need to be migrated to Umbraco Commerce. Follow the link below to find detailed steps on how to perform this migration:
Rename any config files with a .json
file extension rather than .
Based on the outlined above update all Vendr references to the new Umbraco Commerce alternatives. Ensure you update any Views/Partials that also reference these.
Vendr.Common
Umbraco.Commerce.Common
Vendr.Core
Umbraco.Commerce.Core
Vendr.Infrastructure
Umbraco.Commerce.Infrastructure
Vendr.Persistence
Umbraco.Commerce.Persistence
Vendr.Persistence.Sqlite
Umbraco.Commerce.Persistence.Sqlite
Vendr.Persistence.SqlServer
Umbraco.Commerce.Persistence.SqlServer
Vendr.Umbraco
Umbraco.Commerce.Cms
Vendr.Umbraco.Web
Umbraco.Commerce.Cms.Web
Vendr.Web
Umbraco.Commerce.Web
Vendr.Web.UI
Umbraco.Commerce.Web.StaticAssets
Vendr.Umbraco.Startup
Umbraco.Commerce.Cms.Startup
Vendr
Umbraco.Commerce
Learn how to remove items added to the shopping cart.
This guide builds on the Update Cart guide. It is recommended to follow that guide before starting this one.
This will teach you how to delete an item from the cart.
Your view for the cart.cshtml
page will be similar to the example below.
The code below allows the Umbraco SurfaceAction
to call RemoveFromCart
when the link is clicked. It will also pass the OrderLineId
.
For the button to work, you need to add some functionality via a Controller.
Create a new Controller called CartSurfaceController.cs
The namespaces used in this Controller are important and need to be included.
The example below is the equivalent code for having this as a Primary Constructor:
The CartDto
is a class used to pass data to the Controller. In this instance, it passes over the OrderLineId
.
You need to add the Action
to delete the item from the cart. This will be called when the button is clicked.
A try-catch
block captures any validation errors that may occur when updating items in the cart.
The store
variable is used to access the store to retrieve the store ID.
order
is used to retrieve the current order. In the Commerce API, everything is read-only for performance so you need to make it writable to add the product.
SaveOrder
is called to save the order.
If there are any validation errors, they are added to a ModelState
error, and the user is redirected back to the current page.
TempData
stores a message to be displayed to the user if the product has been successfully updated.
Umbraco Commerce uses the Unit of Work pattern to complete saving the item (uow.Complete
). When retrieving or saving data ideally you would want the entire transaction to be committed. However, if there is an error nothing is changed on the database.
If you have followed the Add item to cart article, run the application, add an item to your cart, and navigate to your cart.cshtml
page. Clicking the Remove Item
button will delete the item in your cart and display a message.
Learn how to update your cart when one or more quantities have changed.
Functionality is needed to update the cart once an item has been added. In this guide, you can learn how to add this functionality.
You need a new page to summarize the items in the cart and allow users to update each item.
Create a new Document With a Template. Call it "Cart Page" and update the template with the following code:
You need to access the store to see the relevant data for the current cart/order. The store has a fallback
property allowing you to traverse the tree to find the store.
currentOrder
is used to get the current order for the store. If the current order is null then there is nothing to display.
To display the default layout when an order does exist, you need to add some markup or amend it to include the desired functionality. Add the following code to the template:
You first loop through each item in the cart/order
and display the product name and quantity.
A hidden input is added for the order ID, quantity, and product reference. This is so you can update the cart with the new number.
The line below sets the ID of the order line (or the item in the current cart/order).
As well as setting the product name, the line below sets the quantity of the product in the cart/order. Finally, the number is set to a number input type.
This is setting the product reference in the cart/order so there is a way to distinguish between products. This is hidden as it does not need to be displayed to the user.
The remove
button is added here but is not covered in this guide. Learn more in the Delete item from Cart article.
Finally, a button is added to submit the form to update the cart. This will call the UpdateCart
action in the CartSurfaceController
which will then show a success message to the user.
Create a new Controller called CartSurfaceController.cs
The namespaces used in this Controller are important and need to be included.
The following is the equivalent code for having this as a Primary Constructor:
The CartDto
is a class that passes data to the Controller. This is a class that has a property for the productReference
and an array of OrderLineQuantityDto[]
.
The code example above adds the ProductReference
but it is not used in this guide.
It is an example of passing the product reference to the controller for similar tasks.
You need to add the Action
to update the items in the cart. This will be called when the button is clicked.
A try-catch
block captures any validation errors that may occur when updating items in the cart.
The store
variable is used to access the store to retrieve the store ID.
order
is used to retrieve the current order. In the Commerce API, everything is read-only for performance so you need to make it writable to add the product.
You loop through all the orderLines(items)
in the cart, set the new quantity amount set in the View, and pass it to the CartDto model.
SaveOrder
is called to save the order.
If there are any validation errors, they are added to ModelState
error, and the user is redirected back to the current page.
TempData
stores a message to be displayed to the user if the product has been successfully updated.
Umbraco Commerce uses the Unit of Work pattern to complete saving the item (uow.Complete
). When retrieving or saving data you want the entire transaction to be committed. However, if there is an error nothing is changed on the database.
If you have followed the Add item to cart article then run the application, add an item to your cart, and navigate to your cart.cshtml
page. Enter a new quantity, click the Update Cart button, and the item(s) in your cart will tell you the values have been updated.
How-To Guide to add an item to your cart.
To add an item to the cart, configure Umbraco with a store and add the necessary properties for interaction. Learn more by following the Getting started with Umbraco Commerce: The Backoffice tutorial.
You will need the front end to be set up to allow an item to be added to the cart. This can be done by adding a button to the front end to call the Action to add the item to the cart.
Create a new Document Type with the template. Call it Product Page with the following property aliases: productTitle
, productDescription
, price
, stock
.
The following property editors are recommeded to be used for the above:
productTitle
: TextString
productDescription
: TextArea
price
: Umbraco Commerce Price
stock
: Umbraco Commerce Stock
The Product Page template can be implemented as shown below.
The code above does the following:
You need to access the store to access the relevant properties for your product, such as price. The store has a fallback property allowing you to traverse the tree to find the store.
You retrieve the product based on the store and a reference for the product. The 'productReference' comes from the Model which is a single product.
The Product is returned as a ProductSnapshot which is Umbraco Commerce obtaining the page ID and carrying out necessary processes to bring in the data for further processing.
Finally, you need to calculate the price which is then displayed without VAT. This can also be displayed with VAT.
To display this you need to add some markup or at least amend it to include a button to add an item. Add the following to the same file:
The hidden field uses the productReference
to be passed across to the Controller.
For the button to work, you need to implement a controller. An example of this is shown below.
Create a new Controller called CartSurfaceController.cs
.
The namespaces used in this Controller are important and need to be included.
Below you can see the equivalent code for having this as a Primary Constructor:
The CartDto class below is used to pass the productReference
across to the Controller. This class has only one property for the productReference
.
We now need to add the Action to add the item to the cart. This action will be called when the button is clicked.
The code above does the following:
The store
variable is used to access the store to get the store ID.
A try-catch block captures any errors that may occur when adding the item to the cart, including any validation errors.
order
is used to retrieve the current order if one exists or create a new order against the store found. In the Commerce API, everything is read-only for performance so you need to make it writable to add the product.
AddProduct
is called and productReference
is passed along with the quantity.
SaveOrder
is called to save the order.
TempData
stores a message to be displayed to the user if the product has been added to the cart.
Umbraco Commerce uses the Unit of Work pattern to complete saving the item (uow.Complete
). When retrieving or saving data ideally you would want the entire transaction to be committed. However, if there is an error nothing is changed on the database.
Finally, you need to add the TempData
to tell the user that the product has been added to the cart.
Create a new partial view called Feedback.cshtml
.
You can now run the application, click the button, and see the product added to the cart with a message displayed to the user.
Base Currency for standardized reporting in Umbraco Commerce.
Within Umbraco Commerce we have support for showing analytics reports, including summaries of sales figures. At the same time, Umbraco Commerce also supports orders being placed in multiple currencies. These pose a problem of how to display a succinct sales figure when the orders are placed in multiple currencies. The answer to this is the store's Base Currency.
When you configure a store you need to assign a base currency to it. This currency is there to identify which currency the store should use as its basis for reports and sales figures. This will be used regardless of whatever currency the order was placed in.
When a store has a base currency configured, any order placed will track the price of the order in the customer's chosen currency. It will also track the current exchange rate between that currency and the store's base currency. Whenever a report is run the order total prices will be converted using this exchange rate. This means that they can all be automatically presented in the single base currency of the store.
Umbraco Commerce uses an ICurrencyExchangeRateService
to retrieve the most up-to-date rate to be able to track the current exchange rate. This is done for each individual order.
Out of the box, Umbraco Commerce comes with a number of available services you can choose to use. Some are free services, whilst others require a paid subscription.
ExchangeRatesApiCurrencyExchangeRateService uses the free exchangeratesapi.io API and is the default option.
FixerCurrencyExchangeRateService uses the fixer.io API which is a reliable paid option (with a reasonable free plan).
CurrencyLayerCurrencyExchangeRateService uses the currencylayer.com API which is another reliable paid option (with a reasonable free plan).
If you wish to change the currency exchange rate service used, you can do so via the dependency injection approach. This is used to override the default service configuration. For services that require configuration to be passed in, such as service API keys, you'll need to use the factory-based override as follows:
Umbraco Commerce has a background service that will attempt to ensure that all historic orders without an exchange rate defined get updated. This is done in case the third-party APIs fail and we need a method of cleaning data. It is also done in case the store base currency is ever changed. In this case, we need to re-process all orders again with the newly selected base currency.
The currency exchange rate background task will run once every 24 hours or after 20 seconds after an app pool recycle.
Perform bulk operations on entities in Umbraco Commerce.
You might need to execute a custom action for each entity in a selection while extending Umbraco Commerce. For example, being able to trigger label printing for a series of orders, or printing physical gift cards for specific gift card entities.
Umbraco Commerce allows extending the different table views, adding in Bulk Actions to the bulk action bar that appears when you select multiple items. Out of the box all list views contain at minimum a Delete bulk action.
Bulk actions are client-side concepts and so additional bulk actions are injected with JavaScript in an AngularJS configuration module.
To create a configuration module you can create a custom folder in the App_Plugins
directory and create a JavaScript file to hold your configuration in.
Create a custom folder in the App_Plugins
directory.
Create a JavaScript file with this new folder.
Register the file in a package.manifest
file within the same folder.
Add the following JSON to the package.manifest
file:
Inject a bulk action inside the umbraco-commerce-bulk-actions-config.js
by adding the following:
Once created, the bulk action will be displayed in the bulk actions bar for the configured entities.
name
Name of your bulk action that will be displayed in the bulk action button.
icon
Icon for your bulk action that will be displayed in the bulk action button next to the name.
sortOrder
The order in which to display this action in the bulk actions bar. System bulk actions sort orders are in multiples of 100
in order to allow the positioning of items between system bulk actions.
configure(items)
A function to run before the bulk operation in order to provide configuration for the bulk action. Returns a Promise that returns an object which is then passed to the item/bulk action methods.
itemAction(item, config)
Individual action to perform per selected item. A status will be displayed after each processed item shows progress. Returns a Promise.
bulkAction(items, config)
Single action to be performed for all selected items in one go. Returns a Promise.
getConfirmMessage(total)
A function that can provide a message to display before a bulk action is triggered should confirmation be required for the action to run. Returns a Promise that returns a string.
getStatusMessage(count, total)
Function used to provide a status message after each item has been processed. Displayed in the bulk actions bar after each itemAction
has been called. Returns a Promise that returns a string.
getSuccessMessage(total)
A function to return a success message after all bulk actions have been performed. Returns a Promise that returns a string.
condition(context)
As all bulk actions are registered globally for all entity types, the condition
function can be used to filter when, and for which entities a bulk action will display.
Only an itemAction
or a bulkAction
method can be defined for a bulk action configuration. If both are present, the bulkAction
will be used and the itemAction
will be ignored. If processing of items can be done individually, it is better to use the itemAction
in order to provide user feedback. The bulkAction
can only be used where items need to be processed in a single action.
Most methods apart from itemAction
or bulkAction
are optional. If methods aren't present, a default implementation will be used. Where the methods trigger, specific functionality such as the configure
or getConfirmMessage
methods will become disabled.
The array-based syntax for registering is a bulk action with angular dependencies. Each bulk action is registered as an array, where all dependencies are defined first and then a factory function is defined last which returns the actual bulk action definition.
Whilst these docs outline how to define a bulk action, you will likely need to register further resources or services that can perform the given bulk operation and include these as a dependency for your action.
The following section display an example of a bulk action with dialog configuration step:
Choose between a selection of verified packages to extend the Umbraco Commerce implementation for your website.
You can integrate your Umbraco Commerce implementation with a series of different payment providers.
You can integrate your Umbraco Commerce implementation with a series of different shipping providers.
Learn everything you need to know about the main features and concepts of Umbraco Commerce.
Learn how to create custom templates for emails, prints, and exports.
Umbraco Commerce provides support for customizing templates for emails, prints, and exports. This allows you to tailor the outputs of your e-commerce solution to meet specific branding or functional requirements.
The default templates for email, print, and export are embedded in Razor Class Libraries (RCLs) in Umbraco Commerce. To customize these templates, you can extract them and use them as a starting point.
Download the custom templates and place them in /Views/Partials/Commerce/Email/
.
To Create a Custom Email Template:
Create a Razor view file (.cshtml
) in /Views/Partials/Commerce/Email/.
Implement the IEmailTemplate
interface to make the template available in Umbraco Commerce:
Register the Template in a Composer:
To create Print/Export Templates:
Create a Razor view file (.cshtml
) under the relevant paths:
Implement the IPrintTemplate
or IExportTemplate
interface to make the template available in Umbraco Commerce.
Register the template in a Composer similar to the email template process.
To distribute custom templates as part of a Razor Class Library (RCL):
Create a new Razor Class Library project.
Add the template files under appropriate paths, for example, Views/Partials/Commerce/Emails/
.
Implement interfaces like IEmailTemplate,
IPrintTemplate,
or IExportTemplate
.
Use a composer to register your custom templates.
Minimizing dependencies via dependency injection with Umbraco Commerce.
Dependency Injection (DI) can be an intimidating subject. DI reduces the number of hard-coded dependencies within a codebase by providing a means to define dependencies independently and have them "injected" dynamically. These dependencies are often exposed as interfaces, rather than concrete types. This enables them to be swapped out or replaced with minimal effort.
The ability to "swap out" dependencies is used in Umbraco Commerce in a number of places to allow developers to provide alternative implementations of specific features. This could be the ability to:
Swap out the default Product Calculator to change how product prices are calculated.
Swap out the default Order Number Generator should you wish to provide an alternative order numbering strategy.
Umbraco Commerce makes heavy use of the dependency injection mechanism in Umbraco to manage many of the features. It is important to understand how to work with the registration process.
What follows are examples of common tasks you'll need to be able to perform via the DI container in order to work effectively with Umbraco Commerce. For more detailed documentation, it is highly recommended that you read the .
Registering dependencies is an important ability to understand as this is used to register Umbraco Commerce event handlers and to extend system pipelines.
To register a dependency you need to do so via the IUmbracoBuilder
interface. This is exposed within the main Program.cs
file, between the AddComposers()
method call and the Build()
method call.
You can also add your registration logic inside an IUmbracoBuilder
extension method and then call that within the Program.cs
file. This is the recommended approach.
Registering a dependency is achieved by working with the IUmbracoBuilder
API:
Like it is possible to add new dependencies it is also possible to replace existing dependencies. This could be dependencies such as the different Calculators available in Umbraco Commerce.
Where a feature is replaceable, replacing that dependency is also achieved via the IUmbracoBuilder
API:
As well as registering dependencies, you will also need to know how to access Umbraco Commerce dependencies from within your Controllers. To do this, we add parameters to our Controllers constructor for the dependencies we require. Then, the IoC container will inject them automatically for us.
Hooking into notification events within Umbraco Commerce.
This article is a work in progress and may undergo further revisions, updates, or amendments. The information contained herein is subject to change without notice.
Hooking into validation events within Umbraco Commerce.
This article is a work in progress and may undergo further revisions, updates, or amendments. The information contained herein is subject to change without notice.
Listening for changes within Umbraco Commerce.
Much like the standard events in .NET, Umbraco Commerce has an events system to notify you when certain things happen within the application. However, Umbraco Commerce differs slightly in the types of events that are fired and how you register your event handlers.
Events in Umbraco Commerce are registered via the interface, rather than via static event delegates. This has a number of advantages, such as being able to control the order of when event handlers are fired. It also allows us to inject dependencies into the event handlers making it a much more decoupled approach to eventing.
In Umbraco Commerce, there are two main types of events you can create handlers for. Both are explained in detail below.
Validation events are events that fire immediately before a change is about to be made to an entity. These events allow you to inject your own logic to decide whether an action should be possible or not. We already have a number of validation handlers built in to maintain the consistency of your data. Validation events allow you to extend this behavior with your own rules.
A full list of validation events can be found in the .
An example of a Validation event handler would look something like this:
All Validation event handlers inherit from a base class ValidationEventHandlerBase<TEvent>
where TEvent
is the Type of the event the handler is for. They then have a Validate
method that accepts an instance of the event type, and inside which you can perform your custom logic. If the event fails the validation logic, you can call evt.Fail("Your message here")
to block the related action from happening and have a ValidationException
be thrown. This can then be captured in the front end to display a friendly error message.
You can control the order of when Validation event handlers run, before or after another Validation event handler. This is done by registering them via the RegisterHandlerBefore<THandler>()
or RegisterHandlerAfter<THandler>()
methods respectively.
Notification events are events that fire, often immediately before or after an action is executed. It provides you the ability to run custom logic to react to that action occurring. This is useful for scenarios such as sending emails when an Order is finalized or allowing you to synchronize stock updates with an external system.
Notification events won't allow you to change the behavior of how Umbraco Commerce runs. They provide you with an effective means of reacting when changes occur.
An example of a Notification event handler would look something like this:
All Notification event handlers inherit from a base class NotificationEventHandlerBase<TEvent>
where TEvent
is the Type of the event the handler is for. They then have a Handle
method that accepts an instance of the event type, and inside which you can perform your custom logic.
You can also control the order of when Notification event handlers run by registering them via the RegisterHandlerBefore<THandler>()
or RegisterHandlerAfter<THandler>()
methods respectively.
Performing calculations with Calculators in Umbraco Commerce.
Calculators are small service implementations with the sole responsibility of calculating prices for a given aspect of an Order. There are five main Calculator service interfaces in Umbraco Commerce:
IShippingCalculator - Responsible for calculating the Shipping Method price/tax rate of a given Shipping Method.
IPaymentCalculator - Responsible for calculating the Payment Method price/tax rate of a given Payment Method.
IProductCalculator - Responsible for calculating the Product unit price/tax rate of a given Product.
IOrderLineCalculator - Responsible for calculating the price/tax rate of a given OrderLine.
IOrderCalculator - Responsible for calculating the entire Order.
All Calculator services can be replaced with alternative implementations should you wish to change how Umbraco Commerce performs its calculations.
The individual Calculator interfaces may differ but the process for defining a custom Calculator implementation is the same for all of them. It is possible to create a new class that implements the default system Calculator that you wish to replace. You can then override the relevant calculation methods.
Define when a Discount should apply and what should be the Reward in Umbraco Commerce.
Discounts in Umbraco Commerce are defined using a series of rules and reward builders that let you configure the following:
When a Discount should apply.
What the Reward should be for that Discount.
These builders come with a handful of the most common Rules and Rewards that should suit the majority of web stores' needs. When need to create your own Rules or Rewards then these are extendable via a Provider model allowing you to incorporate your own custom logic.
There are two types of Discount Rules in Umbraco Commerce:
Order Discount Rules: Determine whether a discount should apply to an Order. Returns a Fulfilled/Unfulfilled status depending on whether the Rule logic has been met.
Order Line Discount Rules: Determine whether a discount should apply to an Order Line within an Order. Returns a Fulfilled/Unfulfilled status depending on whether the Rule logic has been met. Where the status is Fulfilled, a list of all Order Lines that are fulfilled by this Rule is also returned.
An example of an Order Discount Rule Provider would look something like this:
All Order Discount Rule Providers inherit from a base class OrderDiscountRuleProviderBase<TSettings>
. TSettings
is the type of a Plain Old Class Object (POCO) model class representing the Discount Rule Providers settings.
The class must be decorated with DiscountRuleProviderAttribute
which defines the Discount Rule Providers alias
and name
, and can also specify a description
or icon
to be displayed in the backoffice. The DiscountRuleProviderAttribute
is also responsible for defining a labelView
for the Provider.
Rule Providers have a ValidateRule
method that accepts a DiscountRuleContext
as well as an instance of the Providers TSettings
settings model. Inside this you can perform your custom logic, returning a DiscountRuleResult
to notify Umbraco Commerce of the Rule outcome.
If the passed-in context (which contains a reference to the Order) meets the Rule's criteria, then a fulfilled DiscountRuleResult
can be returned by calling return Fulfilled();
. Alternatively, if the Order didn't meet the Rules criteria an unfulfilled DiscountRuleResult
can be returned by calling return Unfulfilled();
.
An example of an Order Line Discount Rule Provider would look something like this:
All Order Line Discount Rule Providers inherit from a base class OrderLineDiscountRuleProviderBase<TSettings>
and follows much the same requirements as the Order Discount Rule Provider defined above. Where they differ is in the ValidateRule
method implementation and when a fulfilled DiscountRuleResult
is returned. In this case, an Order Line Discount Rule returns a collection of Order Lines processed by the Rule that have met the rules criteria. Whether the rules are met, is checked by calling return Fulfilled(fulfilledOrderLines);
.
An example of a Discount Reward Provider would look something like this:
All Discount Reward Providers inherit from a base class DiscountRewardProviderBase<TSettings>
. TSettings
is the Type of a POCO model class representing the Discount Reward Providers settings.
The class must be decorated with DiscountRewardProviderAttribute
which defines the Discount Reward Providers alias
and name
. It can also specify a description
or icon
to be displayed in the Umbraco Commerce backoffice. The DiscountRewardProviderAttribute
is responsible for defining a labelView
for the Provider.
Reward Providers have a CalculateReward
method that accepts a DiscountRewardContext
as well as an instance of the Providers TSettings
settings model. Inside this, you can perform your custom calculation logic, returning a DiscountRewardCalculation
instance that defines any Reward values to apply to the Order.
Both the DiscountRuleProviderAttribute
and the DiscountRewardProviderAttribute
allow you to define a labelView
for the Provider. It should be the path to an Angular JS view file that will be used to render a label in the Rule/Reward Builder UI. Where no labelView
is supplied, one will be looked for by convention at the following location:
~/app_plugins/umbracocommerce/views/discount/{Type}/labelViews/{ProviderAlias}.html
Type
is either rules
or rewards
, depending on the Type of Provider it refers to. ProviderAlias
is the alias of the Provider.
The Rule/Reward Label View should provide a user-friendly summary of its settings to display in the relevant Builder UI.
The Label View file will be passed a model
property which will be a JavaScript representation of the given Providers settings object.
Calculation context in Umbraco Commerce.
When extending the calculation process of Umbraco Commerce, either by custom or custom it is important to be aware of the OrderCalculation
object.
When an order asks to be re-calculated, this triggers a calculation pipeline which in turn runs a series of calculation tasks. It then calls a number of extendable calculators in order to work out the orders' different prices. Throughout this process, Umbraco Commerce needs to keep track of all these prices as they change. At the same time, it also needs to ensure that the calculation is transactional in case something goes wrong. To accomplish both of these requirements we use a temporary state object called OrderCalculation
to store all the information. Only at the end of the calculation, if everything was successful, we can copy those calculated prices back to the order.
In the different calculation extension points, Umbraco Commerce will often pass you both an Order
object and the OrderCalculation
object. We pass the order to get you access to any information held on it that you may need for calculations, such as custom properties. This shouldn't be used for accessing any price-related values of the order.
As mentioned above, in order to maintain data integrity during the calculation process, the order itself is not updated until the end. This means that any calculations based on the order entities' price values would be based on the orders' previously calculated price values.
In order to base your calculation on the current calculated price values you should instead access the OrderCalculation
object.
From the OrderCalculation
object you can access the different order prices, including order line calculations. The order line calculations are stored in a dictionary. In this dictionary, the key is the order line's ID, and the value is an OrderLineCalculation
object holding the calculated prices.
By using the prices from the OrderCalculation
object you can ensure that your calculation is based on the most up-to-date values for the order.
You should always base your price on the OrderCalculation
object's price values when the following applies:
Your values are based on another price held on an order
You have access to an OrderCalculation
an object that isn't null
.
It should also only fall back to the order entity if there is no OrderCalculation
available.
Faster development thanks to the Fluent API of Umbraco Commerce.
An added side effect of having is that all of an entity's write operations are now performed via methods. This is instead of property setters, enabling to us convert Umbraco Commerce's write API in a fluent API.
You could perform a write operation as follows:
This could be simplified further by defining these actions fluently, chaining all of the entity methods into a succinct command sequence as follows:
We know not everyone likes to write their code fluently and so the Umbraco Commerce Fluent API is an optional feature. Both code examples above are valid coding styles that will both work as well as each other. The Fluent API is an opt-in layer of syntax sugar that developers can use depending on their preferred style of coding.
Preparing to enter a Payment Providers payment gateway in Umbraco Commerce.
In Umbraco Commerce, a Payment Form is a form that is displayed immediately prior to redirecting to the Payment Gateway for payment processing. This is usually displayed on some kind of review page, allowing a final review of the Order before commencing payment.
The role of the Payment Form is to perform two tasks:
Prepare the Order for the Payment Gateway - This includes initializing the Orders transaction info and assigning the Order with an Order Number. It's also at this time that the Order is assigned to a Member if there is currently a logged-in session. This task may also involve passing information to the Payment Gateway to create a session, which the customer will complete in the next step. This is dependent on the Payment Provider implementation.
Redirect to the Payment Gateway - The configured Payment Provider will return a Form that contains all the relevant information the Payment Gateway needs. This includes the Forms action
attribute is set to post to a page on the Payment Gateways server, starting the payment capture process.
An Order's Order Number is assigned at the point of the Payment Form being rendered. This is to ensure that an Order has an Order Number prior to redirecting to the Payment Gateway. When the customer is redirected to the Confirmation page, there is always an Order Number to display
The reason this is necessary is that many Payment Gateways finalize Orders asynchronously via webhooks. This means that it is possible that the customer will be redirected to the Confirmation page prior to actual finalization. This is why we set it early to ensure it is always available.
It can happen that a customer cancels a payment mid-way through the capture process and returns to the Order to make modifications. In these cases, a new Order Number will be assigned at the point of re-displaying the Payment Form.
An example of displaying a Payment Form would look something like this:
The Payment Form is rendered using a using
statement to wrap any additional form elements you wish to add, such as a submit button.
It's important to know that the Payment Form by default doesn't contain any button inputs to submit the Form. These must be supplied by the implementer. This is to ensure that the form will work with the design of the Site in question, giving developers more freedom.
Validation event handlers are interface using the WithValidationEvent<TEvent>()
builder extension method. This is done to identify the event you want to handle and then call the RegisterHandler<THandler>()
method to register your handler(s) for that event.
A full list of notification events can be found in the .
Notification event handlers are interface using the WithNotificationEvent<TEvent>()
builder extension method. This is used to identify the event you want to handle and then call the RegisterHandler<THandler>()
method to register your handler(s) for that event.
Calculators are interface using the AddUnique<TServiceInterface, TReplacementService>()
method on the Services
property. The TServiceInterface
parameter in this case is the Calculator interface Type you wish to replace and TReplacementService
is the Type of your custom Calculator implementation.
See the section below for more information on Settings objects.
See the section below for more information on Label Views.
See the documentation for more information on Settings objects.
See the section below for more information on Label Views.
See the documentation for more information on Settings objects.
Umbraco Properties
Umbraco Commerce is based on Umbraco CMS, which means that some of the things you'll be working with are native to the core product.
Calculators
Learn more about the different calculators that Umbraco Commerce ships with and how you can customize and extend them.
Product Variants
With Umbraco Commerce you can create a large array of different product variants. Learn more about how this all works.
Event
Description
AnalyticsDashboardConfigParsingNotification
OBSOLETE: Use the AnalyticsDashboardConfigParsingNotification
in the Umbraco.Commerce.Core.Events.Notification
namespace instead. This event was originally used for parsing the analytics dashboard configuration, allowing developers to modify or extend the configuration settings before they were applied.
CartEditorConfigParsingNotification
OBSOLETE: Use the CartEditorConfigParsingNotification
in the Umbraco.Commerce.Core.Events.Notification
namespace instead. This event was originally used for parsing the cart editor configuration, allowing developers to customize or extend the configuration settings before they were applied.
CartListConfigParsingNotification
OBSOLETE: Use the CartListConfigParsingNotification
in the Umbraco.Commerce.Core.Events.Notification
namespace instead. This event was originally used for parsing the cart list configuration, allowing developers to modify or extend the configuration settings before they were applied.
OrderEditorConfigParsingNotification
OBSOLETE: Use the OrderEditorConfigParsingNotification
in the Umbraco.Commerce.Core.Events.Notification
namespace instead. This event was originally used for parsing the order editor configuration, allowing developers to customize or extend the configuration settings before they were applied.
OrderListConfigParsingNotification
OBSOLETE: Use the OrderListConfigParsingNotification
in the Umbraco.Commerce.Core.Events.Notification
namespace instead. This event was originally used for parsing the order list configuration, allowing developers to modify or extend the configuration settings before they were applied.
Event
Description
ActivityLogEntriesRenderingNotification
Triggered when activity log entries are being rendered. Allows customization or modification of the log entries before display.
StoreActionsRenderingNotification
Triggered when store actions are being rendered. Allows customization or modification of the actions before display.
Event
Description
CartSearchingNotification
Triggered during a search operation on the cart. Allows customization or modification of search parameters and results.
GiftCardSearchingNotification
Triggered during a search operation on gift cards. Allows customization or modification of search parameters and results.
OrderSearchingNotification
Triggered during a search operation on orders. Allows customization or modification of search parameters and results.
Event
Description
PipelineFailNotification
Triggered when a pipeline process fails. Allows developers to handle or respond to pipeline failures, enabling custom error handling, logging, or recovery actions.
PipelineSuccessNotification
Triggered when a pipeline process completes successfully. Allows developers to handle successful pipeline completions, enabling actions such as logging, notifications, or further processing steps.
Event
Description
AnalyticsDashboardConfigParsingNotification
Triggered during the parsing of the analytics dashboard configuration. Allows developers to modify or extend the configuration settings before they are applied.
CartEditorConfigParsingNotification
Triggered when the cart editor configuration is being parsed. Allows developers to customize or extend the configuration settings before they are applied.
CartListConfigParsingNotification
Triggered during the parsing of the cart list configuration. Allows developers to modify or extend the configuration settings before they are applied.
Event
Description
CountryCreatedNotification
Triggered after a country has been successfully created. Allows developers to perform actions in response to the creation of a new country.
CountryCreatingNotification
Triggered before a country is created. Allows developers to perform actions or validations before the creation of a new country.
CountryDeletedNotification
Triggered after a country has been successfully deleted. Allows developers to perform actions in response to the deletion of a country.
CountryDeletingNotification
Triggered before a country is deleted. Allows developers to perform actions or validations before the deletion of a country.
CountrySavedNotification
Triggered after a country has been successfully saved. Allows developers to perform actions in response to saving changes to a country.
CountrySavingNotification
Triggered before a country is saved. Allows developers to perform actions or validations before saving changes to a country.
CountryUpdatedNotification
Triggered after a country has been successfully updated. Allows developers to perform actions in response to the update of a country.
CountryUpdatingNotification
Triggered before a country is updated. Allows developers to perform actions or validations before the update of a country.
Event
Description
CurrencyCreatedNotification
Triggered after a currency has been successfully created. Allows developers to perform actions in response to the creation of a new currency.
CurrencyCreatingNotification
Triggered before a currency is created. Allows developers to perform actions or validations before the creation of a new currency.
CurrencyDeletedNotification
Triggered after a currency has been successfully deleted. Allows developers to perform actions in response to the deletion of a currency.
CurrencyDeletingNotification
Triggered before a currency is deleted. Allows developers to perform actions or validations before the deletion of a currency.
CurrencySavedNotification
Triggered after a currency has been successfully saved. Allows developers to perform actions in response to saving changes to a currency.
CurrencySavingNotification
Triggered before a currency is saved. Allows developers to perform actions or validations before saving changes to a currency.
CurrencyUpdatedNotification
Triggered after a currency has been successfully updated. Allows developers to perform actions in response to the update of a currency.
CurrencyUpdatingNotification
Triggered before a currency is updated. Allows developers to perform actions or validations before the update of a currency.
Event
Description
DiscountCreatedNotification
Triggered after a discount has been successfully created. Allows developers to perform actions in response to the creation of a new discount.
DiscountCreatingNotification
Triggered before a discount is created. Allows developers to perform actions or validations before the creation of a new discount.
DiscountDeletedNotification
Triggered after a discount has been successfully deleted. Allows developers to perform actions in response to the deletion of a discount.
DiscountDeletingNotification
Triggered before a discount is deleted. Allows developers to perform actions or validations before the deletion of a discount.
DiscountSavedNotification
Triggered after a discount has been successfully saved. Allows developers to perform actions in response to saving changes to a discount.
DiscountSavingNotification
Triggered before a discount is saved. Allows developers to perform actions or validations before saving changes to a discount.
DiscountUpdatedNotification
Triggered after a discount has been successfully updated. Allows developers to perform actions in response to the update of a discount.
DiscountUpdatingNotification
Triggered before a discount is updated. Allows developers to perform actions or validations before the update of a discount.
Event
Description
EmailFailedNotification
Triggered when an email fails to send. Allows developers to handle email failures, perform logging, or take corrective actions.
EmailSendingNotification
Triggered before an email is sent. Allows developers to customize the email content, perform validations, or log the sending process.
EmailSentNotification
Triggered after an email has been successfully sent. Allows developers to perform actions in response to the successful sending of an email, such as logging or triggering follow-up actions.
EmailTemplateCreatedNotification
Triggered after an email template has been successfully created. Allows developers to perform actions in response to the creation of a new email template.
EmailTemplateCreatingNotification
Triggered before an email template is created. Allows developers to perform actions or validations before the creation of a new email template.
EmailTemplateDeletedNotification
Triggered after an email template has been successfully deleted. Allows developers to perform actions in response to the deletion of an email template.
EmailTemplateDeletingNotification
Triggered before an email template is deleted. Allows developers to perform actions or validations before the deletion of an email template.
EmailTemplateSavedNotification
Triggered after an email template has been successfully saved. Allows developers to perform actions in response to saving changes to an email template.
EmailTemplateSavingNotification
Triggered before an email template is saved. Allows developers to perform actions or validations before saving changes to an email template.
EmailTemplateUpdatedNotification
Triggered after an email template has been successfully updated. Allows developers to perform actions in response to the update of an email template.
EmailTemplateUpdatingNotification
Triggered before an email template is updated. Allows developers to perform actions or validations before the update of an email template.
Event
Description
ExportTemplateCreatedNotification
Triggered after an export template has been successfully created. Allows developers to perform actions in response to the creation of a new export template.
ExportTemplateCreatingNotification
Triggered before an export template is created. Allows developers to perform actions or validations before the creation of a new export template.
ExportTemplateDeletedNotification
Triggered after an export template has been successfully deleted. Allows developers to perform actions in response to the deletion of an export template.
ExportTemplateDeletingNotification
Triggered before an export template is deleted. Allows developers to perform actions or validations before the deletion of an export template.
ExportTemplateSavedNotification
Triggered after an export template has been successfully saved. Allows developers to perform actions in response to saving changes to an export template.
ExportTemplateSavingNotification
Triggered before an export template is saved. Allows developers to perform actions or validations before saving changes to an export template.
ExportTemplateUpdatedNotification
Triggered after an export template has been successfully updated. Allows developers to perform actions in response to the update of an export template.
ExportTemplateUpdatingNotification
Triggered before an export template is updated. Allows developers to perform actions or validations before the update of an export template.
Event
Description
FrozenPricesThawedNotification
Triggered after previously frozen prices have been unfrozen and are now adjustable again. Allows developers to perform actions in response to the thawing of prices.
FrozenPricesThawingNotification
Triggered before previously frozen prices are about to be unfrozen and become adjustable. Allows developers to perform actions or validations before the thawing of prices.
Event
Description
GiftCardCreatedNotification
Triggered after a gift card has been successfully created. Allows developers to perform actions in response to the creation of a new gift card.
GiftCardCreatingNotification
Triggered before a gift card is created. Allows developers to perform actions or validations before the creation of a new gift card.
GiftCardDeletedNotification
Triggered after a gift card has been successfully deleted. Allows developers to perform actions in response to the deletion of a gift card.
GiftCardDeletingNotification
Triggered before a gift card is deleted. Allows developers to perform actions or validations before the deletion of a gift card.
GiftCardSavedNotification
Triggered after a gift card has been successfully saved. Allows developers to perform actions in response to saving changes to a gift card.
GiftCardSavingNotification
Triggered before a gift card is saved. Allows developers to perform actions or validations before saving changes to a gift card.
GiftCardUpdatedNotification
Triggered after a gift card has been successfully updated. Allows developers to perform actions in response to the update of a gift card.
GiftCardUpdatingNotification
Triggered before a gift card is updated. Allows developers to perform actions or validations before the update of a gift card.
Event
Description
LocationCreatedNotification
Triggered after a location has been successfully created. Allows developers to perform actions in response to the creation of a new location.
LocationCreatingNotification
Triggered before a location is created. Allows developers to perform actions or validations before the creation of a new location.
LocationDeletedNotification
Triggered after a location has been successfully deleted. Allows developers to perform actions in response to the deletion of a location.
LocationDeletingNotification
Triggered before a location is deleted. Allows developers to perform actions or validations before the deletion of a location.
LocationSavedNotification
Triggered after a location has been successfully saved. Allows developers to perform actions in response to saving changes to a location.
LocationSavingNotification
Triggered before a location is saved. Allows developers to perform actions or validations before saving changes to a location.
LocationUpdatedNotification
Triggered after a location has been successfully updated. Allows developers to perform actions in response to the update of a location.
LocationUpdatingNotification
Triggered before a location is updated. Allows developers to perform actions or validations before the update of a location.
Event
Description
OrderAssignedToCustomerNotification
Triggered after an order has been successfully assigned to a customer. Allows developers to perform actions in response to the assignment.
OrderAssigningToCustomerNotification
Triggered before an order is assigned to a customer. Allows developers to perform actions or validations before the assignment.
OrderConfigParsingNotification
Triggered during the parsing of the order configuration. Allows developers to modify or extend the configuration settings before they are applied.
OrderCreatedNotification
Triggered after an order has been successfully created. Allows developers to perform actions in response to the creation of a new order.
OrderCreatingNotification
Triggered before an order is created. Allows developers to perform actions or validations before the creation of a new order.
OrderCurrencyChangedNotification
Triggered after the currency of an order has been successfully changed. Allows developers to perform actions in response to the currency change.
OrderCurrencyChangingNotification
Triggered before the currency of an order is changed. Allows developers to perform actions or validations before the currency change.
OrderDeletedNotification
Triggered after an order has been successfully deleted. Allows developers to perform actions in response to the deletion of an order.
OrderDeletingNotification
Triggered before an order is deleted. Allows developers to perform actions or validations before the deletion of an order.
OrderDiscountCodeRedeemedNotification
Triggered after a discount code has been successfully redeemed on an order. Allows developers to perform actions in response to the redemption.
OrderDiscountCodeRedeemingNotification
Triggered before a discount code is redeemed on an order. Allows developers to perform actions or validations before the redemption.
OrderDiscountCodeUnredeemedNotification
Triggered after a discount code has been successfully unredeemed (reversing the application of a previously redeemed discount code) on an order. Allows developers to perform actions in response to the unredemption.
OrderDiscountCodeUnredeemingNotification
Triggered before a discount code is unredeemed on an order. Allows developers to perform actions or validations before the unredemption.
OrderEditorConfigParsingNotification
Triggered during the parsing of the order editor configuration. Allows developers to modify or extend the configuration settings before they are applied.
OrderFinalizedNotification
Triggered after an order has been successfully finalized. Allows developers to perform actions in response to the finalization.
OrderFinalizingNotification
Triggered before an order is finalized. Allows developers to perform actions or validations before the finalization.
OrderGiftCardRedeemedNotification
Triggered after a gift card has been successfully redeemed on an order. Allows developers to perform actions in response to the redemption.
OrderGiftCardRedeemingNotification
Triggered before a gift card is redeemed on an order. Allows developers to perform actions or validations before the redemption.
OrderGiftCardUnredeemedNotification
Triggered after a gift card has been successfully unredeemed on an order. Allows developers to perform actions in response to the unredemption.
OrderGiftCardUnredeemingNotification
Triggered before a gift card is unredeemed on an order. Allows developers to perform actions or validations before the unredemption.
OrderLanguageChangedNotification
Triggered after the language of an order has been successfully changed. Allows developers to perform actions in response to the language change.
OrderLanguageChangingNotification
Triggered before the language of an order is changed. Allows developers to perform actions or validations before the language change.
OrderLineAddedNotification
Triggered after a line item has been successfully added to an order. Allows developers to perform actions in response to the addition.
OrderLineAddingNotification
Triggered before a line item is added to an order. Allows developers to perform actions or validations before the addition.
OrderLineChangedNotification
Triggered after a line item in an order has been successfully changed. Allows developers to perform actions in response to the change.
OrderLineChangingNotification
Triggered before a line item in an order is changed. Allows developers to perform actions or validations before the change.
OrderLineRemovedNotification
Triggered after a line item has been successfully removed from an order. Allows developers to perform actions in response to the removal.
OrderLineRemovingNotification
Triggered before a line item is removed from an order. Allows developers to perform actions or validations before the removal.
OrderListConfigParsingNotification
Triggered during the parsing of the order list configuration. Allows developers to modify or extend the configuration settings before they are applied.
OrderPaymentCountryRegionChangedNotification
Triggered after the payment country or region of an order has been successfully changed. Allows developers to perform actions in response to the change.
OrderPaymentCountryRegionChangingNotification
Triggered before the payment country or region of an order is changed. Allows developers to perform actions or validations before the change.
OrderPaymentMethodChangedNotification
Triggered after the payment method of an order has been successfully changed. Allows developers to perform actions in response to the change.
OrderPaymentMethodChangingNotification
Triggered before the payment method of an order is changed. Allows developers to perform actions or validations before the change.
OrderProductAddedNotification
Triggered after a product has been successfully added to an order. Allows developers to perform actions in response to the addition.
OrderProductAddingNotification
Triggered before a product is added to an order. Allows developers to perform actions or validations before the addition.
OrderPropertiesChangedNotification
Triggered after properties of an order have been successfully changed. Allows developers to perform actions in response to the changes.
OrderPropertiesChangingNotification
Triggered before properties of an order are changed. Allows developers to perform actions or validations before the changes.
OrderSavedNotification
Triggered after an order has been successfully saved. Allows developers to perform actions in response to saving changes to an order.
OrderSavingNotification
Triggered before an order is saved. Allows developers to perform actions or validations before saving changes to an order.
OrderShippingCountryRegionChangedNotification
Triggered after the shipping country or region of an order has been successfully changed. Allows developers to perform actions in response to the change.
OrderShippingCountryRegionChangingNotification
Triggered before the shipping country or region of an order is changed. Allows developers to perform actions or validations before the change.
OrderShippingMethodChangedNotification
Triggered after the shipping method of an order has been successfully changed. Allows developers to perform actions in response to the change.
OrderShippingMethodChangingNotification
Triggered before the shipping method of an order is changed. Allows developers to perform actions or validations before the change.
OrderStatusChangedNotification
Triggered after the status of an order has been successfully changed. Allows developers to perform actions in response to the status change.
OrderStatusChangingNotification
Triggered before the status of an order is changed. Allows developers to perform actions or validations before the status change.
OrderStatusCreatedNotification
Triggered after a new order status has been successfully created. Allows developers to perform actions in response to the creation of a new status.
OrderStatusCreatingNotification
Triggered before a new order status is created. Allows developers to perform actions or validations before the creation of a new status.
OrderStatusDeletedNotification
Triggered after an order status has been successfully deleted. Allows developers to perform actions in response to the deletion of a status.
OrderStatusDeletingNotification
Triggered before an order status is deleted. Allows developers to perform actions or validations before the deletion of a status.
OrderStatusSavedNotification
Triggered after an order status has been successfully saved. Allows developers to perform actions in response to saving changes to a status.
OrderStatusSavingNotification
Triggered before an order status is saved. Allows developers to perform actions or validations before saving changes to a status.
OrderStatusUpdatedNotification
Triggered after an order status has been successfully updated. Allows developers to perform actions in response to the update of a status.
OrderStatusUpdatingNotification
Triggered before an order status is updated. Allows developers to perform actions or validations before the update of a status.
OrderTagsChangedNotification
Triggered after the tags of an order have been successfully changed. Allows developers to perform actions in response to the tag changes.
OrderTagsChangingNotification
Triggered before the tags of an order are changed. Allows developers to perform actions or validations before the tag changes.
OrderTaxClassChangedNotification
Triggered after the tax class of an order has been successfully changed. Allows developers to perform actions in response to the tax class change.
OrderTaxClassChangingNotification
Triggered before the tax class of an order is changed. Allows developers to perform actions or validations before the tax class change.
OrderTransactionUpdatedNotification
Triggered after a transaction in an order has been successfully updated. Allows developers to perform actions in response to the transaction update.
OrderTransactionUpdatingNotification
Triggered before a transaction in an order is updated. Allows developers to perform actions or validations before the transaction update.
OrderUpdatedNotification
Triggered after an order has been successfully updated. Allows developers to perform actions in response to the update of an order.
OrderUpdatingNotification
Triggered before an order is updated. Allows developers to perform actions or validations before the update of an order.
Event
Description
PaymentFormGeneratingNotification
Triggered during the generation of a payment form. Allows developers to customize or modify the payment form before it is presented to the user.
PaymentMethodCreatedNotification
Triggered after a payment method has been successfully created. Allows developers to perform actions in response to the creation of a new payment method.
PaymentMethodCreatingNotification
Triggered before a payment method is created. Allows developers to perform actions or validations before the creation of a new payment method.
PaymentMethodDeletedNotification
Triggered after a payment method has been successfully deleted. Allows developers to perform actions in response to the deletion of a payment method.
PaymentMethodDeletingNotification
Triggered before a payment method is deleted. Allows developers to perform actions or validations before the deletion of a payment method.
PaymentMethodSavedNotification
Triggered after a payment method has been successfully saved. Allows developers to perform actions in response to saving changes to a payment method.
PaymentMethodSavingNotification
Triggered before a payment method is saved. Allows developers to perform actions or validations before saving changes to a payment method.
PaymentMethodUpdatedNotification
Triggered after a payment method has been successfully updated. Allows developers to perform actions in response to the update of a payment method.
PaymentMethodUpdatingNotification
Triggered before a payment method is updated. Allows developers to perform actions or validations before the update of a payment method.
Event
Description
PrintTemplateCreatedNotification
Triggered after a print template has been successfully created. Allows developers to perform actions in response to the creation of a new print template.
PrintTemplateCreatingNotification
Triggered before a print template is created. Allows developers to perform actions or validations before the creation of a new print template.
PrintTemplateDeletedNotification
Triggered after a print template has been successfully deleted. Allows developers to perform actions in response to the deletion of a print template.
PrintTemplateDeletingNotification
Triggered before a print template is deleted. Allows developers to perform actions or validations before the deletion of a print template.
PrintTemplateSavedNotification
Triggered after a print template has been successfully saved. Allows developers to perform actions in response to saving changes to a print template.
PrintTemplateSavingNotification
Triggered before a print template is saved. Allows developers to perform actions or validations before saving changes to a print template.
PrintTemplateUpdatedNotification
Triggered after a print template has been successfully updated. Allows developers to perform actions in response to the update of a print template.
PrintTemplateUpdatingNotification
Triggered before a print template is updated. Allows developers to perform actions or validations before the update of a print template.
Event
Description
ProductAttributeCreatedNotification
Triggered after a product attribute (for example: size, color, or material) has been successfully created. Allows developers to perform actions in response to the creation of a new product attribute.
ProductAttributeCreatingNotification
Triggered before a product attribute is created. Allows developers to perform actions or validations before the creation of a new product attribute.
ProductAttributeDeletedNotification
Triggered after a product attribute has been successfully deleted. Allows developers to perform actions in response to the deletion of a product attribute.
ProductAttributeDeletingNotification
Triggered before a product attribute is deleted. Allows developers to perform actions or validations before the deletion of a product attribute.
ProductAttributePresetCreatedNotification
Triggered after a product attribute preset has been successfully created. Allows developers to perform actions in response to the creation of a new product attribute preset.
ProductAttributePresetCreatingNotification
Triggered before a product attribute preset is created. Allows developers to perform actions or validations before the creation of a new product attribute preset.
ProductAttributePresetDeletedNotification
Triggered after a product attribute preset has been successfully deleted. Allows developers to perform actions in response to the deletion of a product attribute preset.
ProductAttributePresetDeletingNotification
Triggered before a product attribute preset is deleted. Allows developers to perform actions or validations before the deletion of a product attribute preset.
ProductAttributePresetSavedNotification
Triggered after a product attribute preset has been successfully saved. Allows developers to perform actions in response to saving changes to a product attribute preset.
ProductAttributePresetSavingNotification
Triggered before a product attribute preset is saved. Allows developers to perform actions or validations before saving changes to a product attribute preset.
ProductAttributePresetUpdatedNotification
Triggered after a product attribute preset has been successfully updated. Allows developers to perform actions in response to the update of a product attribute preset.
ProductAttributePresetUpdatingNotification
Triggered before a product attribute preset is updated. Allows developers to perform actions or validations before the update of a product attribute preset.
ProductAttributeSavedNotification
Triggered after a product attribute has been successfully saved. Allows developers to perform actions in response to saving changes to a product attribute.
ProductAttributeSavingNotification
Triggered before a product attribute is saved. Allows developers to perform actions or validations before saving changes to a product attribute.
ProductAttributeUpdatedNotification
Triggered after a product attribute has been successfully updated. Allows developers to perform actions in response to the update of a product attribute.
ProductAttributeUpdatingNotification
Triggered before a product attribute is updated. Allows developers to perform actions or validations before the update of a product attribute.
Event
Description
RegionCreatedNotification
Triggered after a region has been successfully created. Allows developers to perform actions in response to the creation of a new region.
RegionCreatingNotification
Triggered before a region is created. Allows developers to perform actions or validations before the creation of a new region.
RegionDeletedNotification
Triggered after a region has been successfully deleted. Allows developers to perform actions in response to the deletion of a region.
RegionDeletingNotification
Triggered before a region is deleted. Allows developers to perform actions or validations before the deletion of a region.
RegionSavedNotification
Triggered after a region has been successfully saved. Allows developers to perform actions in response to saving changes to a region.
RegionSavingNotification
Triggered before a region is saved. Allows developers to perform actions or validations before saving changes to a region.
RegionUpdatedNotification
Triggered after a region has been successfully updated. Allows developers to perform actions in response to the update of a region.
RegionUpdatingNotification
Triggered before a region is updated. Allows developers to perform actions or validations before the update of a region.
Event
Description
ShippingMethodCreatedNotification
Triggered after a shipping method has been successfully created. Allows developers to perform actions in response to the creation of a new shipping method.
ShippingMethodCreatingNotification
Triggered before a shipping method is created. Allows developers to perform actions or validations before the creation of a new shipping method.
ShippingMethodDeletedNotification
Triggered after a shipping method has been successfully deleted. Allows developers to perform actions in response to the deletion of a shipping method.
ShippingMethodDeletingNotification
Triggered before a shipping method is deleted. Allows developers to perform actions or validations before the deletion of a shipping method.
ShippingMethodSavedNotification
Triggered after a shipping method has been successfully saved. Allows developers to perform actions in response to saving changes to a shipping method.
ShippingMethodSavingNotification
Triggered before a shipping method is saved. Allows developers to perform actions or validations before saving changes to a shipping method.
ShippingMethodUpdatedNotification
Triggered after a shipping method has been successfully updated. Allows developers to perform actions in response to the update of a shipping method.
ShippingMethodUpdatingNotification
Triggered before a shipping method is updated. Allows developers to perform actions or validations before the update of a shipping method.
Event
Description
StockChangedNotification
Triggered after the stock level of a product has been successfully changed. Allows developers to perform actions in response to the change in stock level.
StockChangingNotification
Triggered before the stock level of a product is changed. Allows developers to perform actions or validations before the change in stock level.
Event
Description
StoreCreatedNotification
Triggered after a store has been successfully created. Allows developers to perform actions in response to the creation of a new store.
StoreCreatingNotification
Triggered before a store is created. Allows developers to perform actions or validations before the creation of a new store.
StoreDeletedNotification
Triggered after a store has been successfully deleted. Allows developers to perform actions in response to the deletion of a store.
StoreDeletingNotification
Triggered before a store is deleted. Allows developers to perform actions or validations before the deletion of a store.
StoreSavedNotification
Triggered after a store has been successfully saved. Allows developers to perform actions in response to saving changes to a store.
StoreSavingNotification
Triggered before a store is saved. Allows developers to perform actions or validations before saving changes to a store.
StoreUpdatedNotification
Triggered after a store has been successfully updated. Allows developers to perform actions in response to the update of a store.
StoreUpdatingNotification
Triggered before a store is updated. Allows developers to perform actions or validations before the update of a store.
Event
Description
TaxClassCreatedNotification
Triggered after a tax class has been successfully created. Allows developers to perform actions in response to the creation of a new tax class.
TaxClassCreatingNotification
Triggered before a tax class is created. Allows developers to perform actions or validations before the creation of a new tax class.
TaxClassDeletedNotification
Triggered after a tax class has been successfully deleted. Allows developers to perform actions in response to the deletion of a tax class.
TaxClassDeletingNotification
Triggered before a tax class is deleted. Allows developers to perform actions or validations before the deletion of a tax class.
TaxClassSavedNotification
Triggered after a tax class has been successfully saved. Allows developers to perform actions in response to saving changes to a tax class.
TaxClassSavingNotification
Triggered before a tax class is saved. Allows developers to perform actions or validations before saving changes to a tax class.
TaxClassUpdatedNotification
Triggered after a tax class has been successfully updated. Allows developers to perform actions in response to the update of a tax class.
TaxClassUpdatingNotification
Triggered before a tax class is updated. Allows developers to perform actions or validations before the update of a tax class.
Event
Description
UnitOfWorkCreatedNotification
Triggered after a unit of work has been successfully created. Allows developers to perform actions in response to the creation of a new unit of work.
Event
Description
ValidateCancelOrderPayment
Triggered to validate the cancellation of an order payment. Developers can use this event to enforce rules or validations related to the cancellation process, ensuring it meets specified criteria or conditions.
ValidateCaptureOrderPayment
Triggered to validate the capture of an order payment. Developers can use this event to enforce rules or validations related to the payment capture process, ensuring it meets specified criteria or conditions.
Event
Description
ValidateCountryCodeChange
Triggered to validate changes to the country code. Developers can use this event to enforce rules or validations related to the modification of country codes, ensuring adherence to specified standards or requirements.
ValidateCountryCreate
Triggered to validate the creation of a new country entry. Developers can use this event to enforce rules or validations related to the creation process, ensuring data integrity and adherence to business logic.
ValidateCountryDefaultCurrencyChange
Triggered to validate changes to the default currency of a country. Developers can use this event to enforce rules or validations related to default currency changes for countries, ensuring proper configuration and management.
ValidateCountryDefaultPaymentMethodChange
Triggered to validate changes to the default payment method of a country. Developers can use this event to enforce rules or validations related to default payment method changes for countries, ensuring proper configuration and management.
ValidateCountryDefaultShippingMethodChange
Triggered to validate changes to the default shipping method of a country. Developers can use this event to enforce rules or validations related to default shipping method changes for countries, ensuring proper configuration and management.
ValidateCountryDelete
Triggered to validate the deletion of a country entry. Developers can use this event to enforce rules or validations related to the deletion process, ensuring it meets specified criteria or conditions.
ValidateCountryNameChange
Triggered to validate changes to the name of a country. Developers can use this event to enforce rules or validations related to the modification of country names, ensuring clarity and consistency in country identification.
ValidateCountrySave
Triggered to validate the saving of changes to a country entry. Developers can use this event to enforce rules or validations related to the save process, ensuring data integrity and adherence to business logic.
ValidateCountryUpdate
Triggered to validate updates to a country entry. Developers can use this event to enforce rules or validations related to the update process, ensuring data integrity and adherence to business logic.
Event
Description
ValidateCurrencyAllowInCountry
Triggered to validate allowing a currency in a specific country. Developers can use this event to enforce rules or validations related to currency permissions in countries, ensuring proper configuration and management.
ValidateCurrencyCodeChange
Triggered to validate changes to the currency code. Developers can use this event to enforce rules or validations related to the modification of currency codes, ensuring adherence to specified standards or requirements.
ValidateCurrencyCreate
Triggered to validate the creation of a new currency. Developers can use this event to enforce rules or validations related to the creation process, ensuring data integrity and adherence to business logic.
ValidateCurrencyCultureChange
Triggered to validate changes to the culture associated with a currency. Developers can use this event to enforce rules or validations related to currency culture changes, ensuring consistency and compatibility within the system.
ValidateCurrencyCustomFormatTemplateChange
Triggered to validate changes to the custom format template of a currency. Developers can use this event to enforce rules or validations related to custom formatting changes for currencies, ensuring adherence to specified templates or standards.
ValidateCurrencyDelete
Triggered to validate the deletion of a currency. Developers can use this event to enforce rules or validations related to the deletion process, ensuring it meets specified criteria or conditions.
ValidateCurrencyDisallowInCountry
Triggered to validate disallowing a currency in a specific country. Developers can use this event to enforce rules or validations related to currency permissions in countries, ensuring proper configuration and management.
ValidateCurrencyNameChange
Triggered to validate changes to the name of a currency. Developers can use this event to enforce rules or validations related to the modification of currency names, ensuring clarity and consistency in currency identification.
ValidateCurrencySave
Triggered to validate the saving of changes to a currency. Developers can use this event to enforce rules or validations related to the save process, ensuring data integrity and adherence to business logic.
ValidateCurrencyUpdate
Triggered to validate updates to a currency. Developers can use this event to enforce rules or validations related to the update process, ensuring data integrity and adherence to business logic.
Event
Description
ValidateDiscountActiveChange
Triggered to validate changes to the active status of a discount. Developers can use this event to enforce rules or validations related to the activation or deactivation of discounts, ensuring consistency and adherence to business rules.
ValidateDiscountAliasChange
Triggered to validate changes to the alias of a discount. Developers can use this event to enforce rules or validations related to the modification of discount aliases, ensuring clarity and consistency in identification.
ValidateDiscountCodeAdd
Triggered to validate the addition of a discount code. Developers can use this event to enforce rules or validations related to the addition process, ensuring codes meet specified criteria or conditions.
ValidateDiscountCodeChange
Triggered to validate changes to a discount code. Developers can use this event to enforce rules or validations related to the modification of discount codes, ensuring adherence to specified standards or requirements.
ValidateDiscountCodeRemove
Triggered to validate the removal of a discount code. Developers can use this event to enforce rules or validations related to the removal process, ensuring it meets specified criteria or conditions.
ValidateDiscountCreate
Triggered to validate the creation of a new discount. Developers can use this event to enforce rules or validations related to the creation process, ensuring data integrity and adherence to business logic.
ValidateDiscountDateRangeChange
Triggered to validate changes to the date range of a discount. Developers can use this event to enforce rules or validations related to date range changes for discounts, ensuring proper configuration and management.
ValidateDiscountDelete
Triggered to validate the deletion of a discount. Developers can use this event to enforce rules or validations related to the deletion process, ensuring it meets specified criteria or conditions.
ValidateDiscountNameChange
Triggered to validate changes to the name of a discount. Developers can use this event to enforce rules or validations related to the modification of discount names, ensuring clarity and consistency in identification.
ValidateDiscountRewardsChange
Triggered to validate changes to the rewards associated with a discount. Developers can use this event to enforce rules or validations related to reward changes for discounts, ensuring adherence to specified rules or conditions.
ValidateDiscountRulesChange
Triggered to validate changes to the rules associated with a discount. Developers can use this event to enforce rules or validations related to rule changes for discounts, ensuring adherence to specified rules or conditions.
ValidateDiscountSave
Triggered to validate the saving of changes to a discount. Developers can use this event to enforce rules or validations related to the save process, ensuring data integrity and adherence to business logic.
ValidateDiscountTypeChange
Triggered to validate changes to the type of a discount. Developers can use this event to enforce rules or validations related to discount type changes, ensuring consistency and adherence to business rules.
ValidateDiscountUpdate
Triggered to validate updates to a discount. Developers can use this event to enforce rules or validations related to the update process, ensuring data integrity and adherence to business logic.
Event
Description
ValidateEmailTemplateAliasChange
Triggered to validate changes to the alias of an email template. Developers can use this event to enforce rules or validations related to the modification of email template aliases, ensuring clarity and consistency in identification.
ValidateEmailTemplateBccAddressChange
Triggered to validate changes to the Blind Carbon Copy (BCC) addresses of an email template. Developers can use this event to enforce rules or validations related to BCC address changes for email templates, ensuring proper configuration and management.
ValidateEmailTemplateCategoryChange
Triggered to validate changes to the category of an email template. Developers can use this event to enforce rules or validations related to category changes for email templates, ensuring proper categorization and organization.
ValidateEmailTemplateCcAddressChange
Triggered to validate changes to the Carbon Copy (CC) addresses of an email template. Developers can use this event to enforce rules or validations related to CC address changes for email templates, ensuring proper configuration and management.
ValidateEmailTemplateCreate
Triggered to validate the creation of a new email template. Developers can use this event to enforce rules or validations related to the creation process, ensuring data integrity and adherence to business logic.
ValidateEmailTemplateDelete
Triggered to validate the deletion of an email template. Developers can use this event to enforce rules or validations related to the deletion process, ensuring it meets specified criteria or conditions.
ValidateEmailTemplateNameChange
Triggered to validate changes to the name of an email template. Developers can use this event to enforce rules or validations related to the modification of email template names, ensuring clarity and consistency in identification.
ValidateEmailTemplateReplyToAddressChange
Triggered to validate changes to the reply-to address of an email template. Developers can use this event to enforce rules or validations related to reply-to address changes for email templates, ensuring proper configuration and management.
ValidateEmailTemplateSave
Triggered to validate the saving of changes to an email template. Developers can use this event to enforce rules or validations related to the save process, ensuring data integrity and adherence to business logic.
ValidateEmailTemplateSenderChange
Triggered to validate changes to the sender of an email template. Developers can use this event to enforce rules or validations related to sender changes for email templates, ensuring proper configuration and management.
ValidateEmailTemplateSendToCustomerChange
Triggered to validate changes to the recipient (send-to) settings of an email template. Developers can use this event to enforce rules or validations related to recipient changes for email templates, ensuring proper configuration and management.
ValidateEmailTemplateSubjectChange
Triggered to validate changes to the subject of an email template. Developers can use this event to enforce rules or validations related to subject changes for email templates, ensuring clarity and consistency in communication.
ValidateEmailTemplateToAddressChange
Triggered to validate changes to the TO addresses of an email template. Developers can use this event to enforce rules or validations related to TO address changes for email templates, ensuring proper configuration and management.
ValidateEmailTemplateUpdate
Triggered to validate updates to an email template. Developers can use this event to enforce rules or validations related to the update process, ensuring data integrity and adherence to business logic.
ValidateEmailTemplateViewChange
Triggered to validate changes to the view settings of an email template. Developers can use this event to enforce rules or validations related to view changes for email templates, ensuring proper configuration and management.
Event
Description
ValidateExportTemplateAliasChange
Triggered to validate changes to the alias of an export template. Developers can use this event to enforce rules or validations related to the modification of export template aliases, ensuring clarity and consistency in identification.
ValidateExportTemplateCategoryChange
Triggered to validate changes to the category of an export template. Developers can use this event to enforce rules or validations related to category changes for export templates, ensuring proper categorization and organization.
ValidateExportTemplateCreate
Triggered to validate the creation of a new export template. Developers can use this event to enforce rules or validations related to the creation process, ensuring data integrity and adherence to business logic.
ValidateExportTemplateDelete
Triggered to validate the deletion of an export template. Developers can use this event to enforce rules or validations related to the deletion process, ensuring it meets specified criteria or conditions.
ValidateExportTemplateExportStrategyChange
Triggered to validate changes to the export strategy of an export template. Developers can use this event to enforce rules or validations related to export strategy changes for export templates, ensuring proper configuration and management.
ValidateExportTemplateFileExtensionChange
Triggered to validate changes to the file extension of an export template. Developers can use this event to enforce rules or validations related to file extension changes for export templates, ensuring proper configuration and management.
ValidateExportTemplateFileMimeTypeChange
Triggered to validate changes to the file Multipurpose Internet Mail Extensions (MIME) type of an export template. Developers can use this event to enforce rules or validations related to file MIME type changes for export templates, ensuring proper configuration and management.
ValidateExportTemplateNameChange
Triggered to validate changes to the name of an export template. Developers can use this event to enforce rules or validations related to the modification of export template names, ensuring clarity and consistency in identification.
ValidateExportTemplateSave
Triggered to validate the saving of changes to an export template. Developers can use this event to enforce rules or validations related to the save process, ensuring data integrity and adherence to business logic.
ValidateExportTemplateUpdate
Triggered to validate updates to an export template. Developers can use this event to enforce rules or validations related to the update process, ensuring data integrity and adherence to business logic.
ValidateExportTemplateViewChange
Triggered to validate changes to the view settings of an export template. Developers can use this event to enforce rules or validations related to view changes for export templates, ensuring proper configuration and management.
Event
Description
ValidateFetchOrderPaymentStatus
Triggered to validate the process of fetching the payment status of an order. Developers can use this event to enforce rules or validations related to how payment statuses are retrieved and handled for orders.
Event
Description
ValidateGiftCardActiveChange
Triggered to validate changes to the active status of a gift card. Developers can use this event to enforce rules or validations related to the modification of gift card activation, ensuring proper control and management of gift card statuses.
ValidateGiftCardAmountsChange
Triggered to validate changes to the amounts associated with a gift card. Developers can use this event to enforce rules or validations related to the modification of gift card amounts, ensuring accuracy and consistency in financial transactions involving gift cards.
ValidateGiftCardCodeChange
Triggered to validate changes to the code (identifier) of a gift card. Developers can use this event to enforce rules or validations related to the modification of gift card codes, ensuring uniqueness and integrity of gift card identifiers.
ValidateGiftCardCreate
Triggered to validate the creation of a new gift card. Developers can use this event to enforce rules or validations related to the creation process, ensuring data integrity and adherence to business logic.
ValidateGiftCardCurrencyChange
Triggered to validate changes to the currency associated with a gift card. Developers can use this event to enforce rules or validations related to the modification of gift card currencies, ensuring compatibility and accuracy in financial transactions involving different currencies.
ValidateGiftCardDelete
Triggered to validate the deletion of a gift card. Developers can use this event to enforce rules or validations related to the deletion process, ensuring it meets specified criteria or conditions.
ValidateGiftCardExpiryDateChange
Triggered to validate changes to the expiry date of a gift card. Developers can use this event to enforce rules or validations related to the modification of gift card expiry dates, ensuring proper management and utilization of gift card validity periods.
ValidateGiftCardOrderChange
Triggered to validate changes to the order associated with a gift card. Developers can use this event to enforce rules or validations related to the modification of gift card orders, ensuring proper tracking and management of gift card transactions.
ValidateGiftCardPropertyChange
Triggered to validate changes to properties (attributes) of a gift card. Developers can use this event to enforce rules or validations related to the modification of gift card properties, ensuring consistency and adherence to business rules.
ValidateGiftCardSave
Triggered to validate the saving of changes to a gift card. Developers can use this event to enforce rules or validations related to the save process, ensuring data integrity and adherence to business logic.
ValidateGiftCardUpdate
Triggered to validate updates to a gift card. Developers can use this event to enforce rules or validations related to the update process, ensuring data integrity and adherence to business logic.
Event
Description
ValidateLocationAddressChange
Triggered to validate changes to the address of a location. Developers can use this event to enforce rules or validations related to the modification of location addresses, ensuring accuracy and consistency in location data.
ValidateLocationAliasChange
Triggered to validate changes to the alias (identifier) of a location. Developers can use this event to enforce rules or validations related to the modification of location aliases, ensuring uniqueness and integrity in identifying locations.
ValidateLocationCreate
Triggered to validate the creation of a new location. Developers can use this event to enforce rules or validations related to the creation process, ensuring data integrity and adherence to business logic.
ValidateLocationDelete
Triggered to validate the deletion of a location. Developers can use this event to enforce rules or validations related to the deletion process, ensuring it meets specified criteria or conditions.
ValidateLocationNameChange
Triggered to validate changes to the name of a location. Developers can use this event to enforce rules or validations related to the modification of location names, ensuring clarity and consistency in identifying locations.
ValidateLocationSave
Triggered to validate the saving of changes to a location. Developers can use this event to enforce rules or validations related to the save process, ensuring data integrity and adherence to business logic.
ValidateLocationTypeChange
Triggered to validate changes to the type (category) of a location. Developers can use this event to enforce rules or validations related to the modification of location types, ensuring proper categorization and organization of locations.
ValidateLocationUpdate
Triggered to validate updates to a location. Developers can use this event to enforce rules or validations related to the update process, ensuring data integrity and adherence to business logic.
Event
Description
ValidateOrderAssignToCustomer
Triggered to validate the assignment of an order to a customer. Developers can use this event to enforce rules or validations related to customer assignments for orders, ensuring proper association and management of customer orders.
ValidateOrderCodeEvent
Triggered to validate events related to order codes. Developers can use this event to enforce rules or validations related to the handling or modification of order codes, ensuring uniqueness and adherence to business rules regarding order identifiers.
ValidateOrderCreate
Triggered to validate the creation of a new order. Developers can use this event to enforce rules or validations related to the creation process, ensuring data integrity and adherence to business logic.
ValidateOrderCurrencyChange
Triggered to validate changes to the currency associated with an order. Developers can use this event to enforce rules or validations related to the modification of order currencies, ensuring accuracy and consistency in financial transactions involving different currencies.
ValidateOrderDelete
Triggered to validate the deletion of an order. Developers can use this event to enforce rules or validations related to the deletion process, ensuring it meets specified criteria or conditions.
ValidateOrderDiscountCodeRedeem
Triggered to validate the redemption of a discount code on an order. Developers can use this event to enforce rules or validations related to the application and validation of discount codes, ensuring proper handling and application of discounts on orders.
ValidateOrderDiscountCodeUnredeem
Triggered to validate the unredeeming of a discount code on an order. Developers can use this event to enforce rules or validations related to the removal or cancellation of discount codes, ensuring proper handling and adjustment of discounts on orders.
ValidateOrderFinalize
Triggered to validate the finalization of an order. Developers can use this event to enforce rules or validations related to the finalization process, ensuring completeness and accuracy before an order is considered finalized.
ValidateOrderGiftCardRedeem
Triggered to validate the redemption of a gift card on an order. Developers can use this event to enforce rules or validations related to the application and validation of gift cards, ensuring proper handling and application of gift cards on orders.
ValidateOrderGiftCardUnredeem
Triggered to validate the unredeeming of a gift card on an order. Developers can use this event to enforce rules or validations related to the removal or cancellation of gift cards, ensuring proper handling and adjustment of gift cards on orders.
ValidateOrderLanguageChange
Triggered to validate changes to the language associated with an order. Developers can use this event to enforce rules or validations related to the modification of order languages, ensuring proper localization and communication preferences are maintained.
ValidateOrderLinePropertyChange
Triggered to validate changes to properties (attributes) of an order line. Developers can use this event to enforce rules or validations related to the modification of order line properties, ensuring consistency and adherence to business rules.
ValidateOrderLineQuantityChange
Triggered to validate changes to the quantity of items in an order line. Developers can use this event to enforce rules or validations related to the modification of order line quantities, ensuring accuracy and consistency in order fulfillment and inventory management.
ValidateOrderLineRemove
Triggered to validate the removal of an order line. Developers can use this event to enforce rules or validations related to the removal process, ensuring it meets specified criteria or conditions.
ValidateOrderLineTaxClassChange
Triggered to validate changes to the tax class associated with an order line. Developers can use this event to enforce rules or validations related to the modification of tax classes for order lines, ensuring accurate tax calculations and compliance with tax regulations.
ValidateOrderPaymentCountryRegionChange
Triggered to validate changes to the payment country/region associated with an order. Developers can use this event to enforce rules or validations related to the modification of payment country/region settings for orders, ensuring proper handling and compliance with payment regulations.
ValidateOrderPaymentMethodChange
Triggered to validate changes to the payment method associated with an order. Developers can use this event to enforce rules or validations related to the modification of payment methods for orders, ensuring proper handling and security of payment transactions.
ValidateOrderProductAdd
Triggered to validate the addition of a product to an order. Developers can use this event to enforce rules or validations related to the addition process, ensuring product availability, pricing accuracy, and adherence to business rules.
ValidateOrderPropertyChange
Triggered to validate changes to properties (attributes) of an order. Developers can use this event to enforce rules or validations related to the modification of order properties, ensuring consistency and adherence to business rules.
ValidateOrderSave
Triggered to validate the saving of changes to an order. Developers can use this event to enforce rules or validations related to the save process, ensuring data integrity and adherence to business logic.
ValidateOrderShippingCountryRegionChange
Triggered to validate changes to the shipping country/region associated with an order. Developers can use this event to enforce rules or validations related to the modification of shipping country/region settings for orders, ensuring accurate shipping calculations and compliance with shipping regulations.
ValidateOrderShippingMethodChange
Triggered to validate changes to the shipping method associated with an order. Developers can use this event to enforce rules or validations related to the modification of shipping methods for orders, ensuring proper handling and accuracy in order fulfillment.
ValidateOrderStatusAliasChange
Triggered to validate changes to the alias (identifier) of an order status. Developers can use this event to enforce rules or validations related to the modification of order status aliases, ensuring uniqueness and integrity in identifying order statuses.
ValidateOrderStatusChange
Triggered to validate changes to the status of an order. Developers can use this event to enforce rules or validations related to the modification of order statuses, ensuring proper handling and management of order lifecycle transitions.
ValidateOrderStatusColorChange
Triggered to validate changes to the color associated with an order status. Developers can use this event to enforce rules or validations related to the modification of order status colors, ensuring visual clarity and consistency in status representations.
ValidateOrderStatusCreate
Triggered to validate the creation of a new order status. Developers can use this event to enforce rules or validations related to the creation process, ensuring data integrity and adherence to business logic.
ValidateOrderStatusDelete
Triggered to validate the deletion of an order status. Developers can use this event to enforce rules or validations related to the deletion process, ensuring it meets specified criteria or conditions.
ValidateOrderStatusNameChange
Triggered to validate changes to the name of an order status. Developers can use this event to enforce rules or validations related to the modification of order status names, ensuring clarity and consistency in identifying order statuses.
ValidateOrderStatusSave
Triggered to validate the saving of changes to an order status. Developers can use this event to enforce rules or validations related to the save process, ensuring data integrity and adherence to business logic.
ValidateOrderStatusUpdate
Triggered to validate updates to an order status. Developers can use this event to enforce rules or validations related to the update process, ensuring data integrity and adherence to business logic.
ValidateOrderTagAdd
Triggered to validate the addition of a tag to an order. Developers can use this event to enforce rules or validations related to the tagging process, ensuring proper categorization and organization of orders.
ValidateOrderTagRemove
Triggered to validate the removal of a tag from an order. Developers can use this event to enforce rules or validations related to the tag removal process, ensuring it meets specified criteria or conditions.
ValidateOrderTaxClassChange
Triggered to validate changes to the tax class associated with an order. Developers can use this event to enforce rules or validations related to the modification of tax classes for orders, ensuring accurate tax calculations and compliance with tax regulations.
ValidateOrderTransactionUpdate
Triggered to validate updates to order transactions. Developers can use this event to enforce rules or validations related to the update process, ensuring data integrity and adherence to business logic.
ValidateOrderUpdate
Triggered to validate updates to an order. Developers can use this event to enforce rules or validations related to the update process, ensuring data integrity and adherence to business logic.
ValidateRefundOrderPayment
Triggered to validate the process of refunding an order payment. Developers can use this event to enforce rules or validations related to the refunding process, ensuring accuracy and adherence to business logic.
Event
Description
ValidatePaymentMethodAliasChange
Triggered to validate changes to the alias (identifier) of a payment method. Developers can use this event to enforce rules or validations related to the modification of payment method aliases, ensuring uniqueness and integrity in identifying payment methods.
ValidatePaymentMethodAllowInCountryRegion
Triggered to validate whether a payment method is allowed in a specific country/region. Developers can use this event to enforce rules or validations related to the availability and eligibility of payment methods in different geographic locations.
ValidatePaymentMethodClearPrices
Triggered to validate the clearing of prices associated with a payment method. Developers can use this event to enforce rules or validations related to the modification or removal of pricing information for payment methods, ensuring accuracy and consistency in financial transactions.
ValidatePaymentMethodCreate
Triggered to validate the creation of a new payment method. Developers can use this event to enforce rules or validations related to the creation process, ensuring data integrity and adherence to business logic.
ValidatePaymentMethodDelete
Triggered to validate the deletion of a payment method. Developers can use this event to enforce rules or validations related to the deletion process, ensuring it meets specified criteria or conditions.
ValidatePaymentMethodDisallowInCountryRegion
Triggered to validate whether a payment method is disallowed in a specific country/region. Developers can use this event to enforce rules or validations related to the restriction and eligibility of payment methods in different geographic locations.
ValidatePaymentMethodImageChange
Triggered to validate changes to the image associated with a payment method. Developers can use this event to enforce rules or validations related to the modification of payment method images, ensuring visual consistency and adherence to branding guidelines.
ValidatePaymentMethodNameChange
Triggered to validate changes to the name of a payment method. Developers can use this event to enforce rules or validations related to the modification of payment method names, ensuring clarity and consistency in identifying payment methods.
ValidatePaymentMethodPriceChange
Triggered to validate changes to the price or cost associated with a payment method. Developers can use this event to enforce rules or validations related to the modification of payment method pricing, ensuring accurate financial calculations and compliance with pricing policies.
ValidatePaymentMethodSave
Triggered to validate the saving of changes to a payment method. Developers can use this event to enforce rules or validations related to the save process, ensuring data integrity and adherence to business logic.
ValidatePaymentMethodSettingChange
Triggered to validate changes to settings or configurations of a payment method. Developers can use this event to enforce rules or validations related to the modification of payment method settings, ensuring functionality and compliance with operational requirements.
ValidatePaymentMethodSkuChange
Triggered to validate changes to the Stock Keeping Unit (SKU) associated with a payment method. Developers can use this event to enforce rules or validations related to the modification of payment method SKUs, ensuring inventory tracking and consistency in product identification.
ValidatePaymentMethodTaxClassChange
Triggered to validate changes to the tax class associated with a payment method. Developers can use this event to enforce rules or validations related to the modification of tax classes for payment methods, ensuring accurate tax calculations and compliance with tax regulations.
ValidatePaymentMethodToggleFeatures
Triggered to validate toggling or enabling/disabling features of a payment method. Developers can use this event to enforce rules or validations related to the management and configuration of payment method features, ensuring functionality and compliance with operational requirements.
ValidatePaymentMethodUpdate
Triggered to validate updates to a payment method. Developers can use this event to enforce rules or validations related to the update process, ensuring data integrity and adherence to business logic.
Event
Description
ValidatePrintTemplateAliasChange
Triggered to validate changes to the alias (identifier) of a print template. Developers can use this event to enforce rules or validations related to the modification of print template aliases, ensuring uniqueness and proper identification.
ValidatePrintTemplateCategoryChange
Triggered to validate changes to the category of a print template. Developers can use this event to enforce rules or validations related to the categorization of print templates, ensuring accurate organization and management.
ValidatePrintTemplateCreate
Triggered to validate the creation of a new print template. Developers can use this event to enforce rules or validations related to the creation process, ensuring data integrity and adherence to business logic.
ValidatePrintTemplateDelete
Triggered to validate the deletion of a print template. Developers can use this event to enforce rules or validations related to the deletion process, ensuring it meets specified criteria or conditions.
ValidatePrintTemplateNameChange
Triggered to validate changes to the name of a print template. Developers can use this event to enforce rules or validations related to the modification of print template names, ensuring clarity and consistency in identifying print templates.
ValidatePrintTemplateSave
Triggered to validate the saving of changes to a print template. Developers can use this event to enforce rules or validations related to the save process, ensuring data integrity and adherence to business logic.
ValidatePrintTemplateUpdate
Triggered to validate updates to a print template. Developers can use this event to enforce rules or validations related to the update process, ensuring data integrity and adherence to business logic.
ValidatePrintTemplateViewChange
Triggered to validate changes to the view configuration of a print template. Developers can use this event to enforce rules or validations related to the modification of how print templates are displayed or accessed, ensuring user experience consistency and functionality.
Event
Description
ValidateProductAttributeAliasChange
Triggered to validate changes to the alias (identifier) of a product attribute. Developers can use this event to enforce rules or validations related to the modification of product attribute aliases, ensuring uniqueness and proper identification.
ValidateProductAttributeCreate
Triggered to validate the creation of a new product attribute. Developers can use this event to enforce rules or validations related to the creation process, ensuring data integrity and adherence to business logic.
ValidateProductAttributeDelete
Triggered to validate the deletion of a product attribute. Developers can use this event to enforce rules or validations related to the deletion process, ensuring it meets specified criteria or conditions.
ValidateProductAttributeNameChange
Triggered to validate changes to the name of a product attribute. Developers can use this event to enforce rules or validations related to the modification of product attribute names, ensuring clarity and consistency in identifying product attributes.
ValidateProductAttributePresetAliasChange
Triggered to validate changes to the alias (identifier) of a product attribute preset. Developers can use this event to enforce rules or validations related to the modification of product attribute preset aliases, ensuring uniqueness and proper identification.
ValidateProductAttributePresetAllowAttribute
Triggered to validate allowing an attribute in a product attribute preset. Developers can use this event to enforce rules or validations related to the configuration of product attribute presets, ensuring proper association and functionality.
ValidateProductAttributePresetCreate
Triggered to validate the creation of a new product attribute preset. Developers can use this event to enforce rules or validations related to the creation process, ensuring data integrity and adherence to business logic.
ValidateProductAttributePresetDelete
Triggered to validate the deletion of a product attribute preset. Developers can use this event to enforce rules or validations related to the deletion process, ensuring it meets specified criteria or conditions.
ValidateProductAttributePresetDescriptionChange
Triggered to validate changes to the description of a product attribute preset. Developers can use this event to enforce rules or validations related to the modification of product attribute preset descriptions, ensuring clarity and consistency in information provided.
ValidateProductAttributePresetDisallowAttribute
Triggered to validate disallowing an attribute in a product attribute preset. Developers can use this event to enforce rules or validations related to the configuration of product attribute presets, ensuring proper association and functionality.
ValidateProductAttributePresetIconChange
Triggered to validate changes to the icon associated with a product attribute preset. Developers can use this event to enforce rules or validations related to the modification of product attribute preset icons, ensuring visual consistency and adherence to design guidelines.
ValidateProductAttributePresetNameChange
Triggered to validate changes to the name of a product attribute preset. Developers can use this event to enforce rules or validations related to the modification of product attribute preset names, ensuring clarity and consistency in identifying product attribute presets.
ValidateProductAttributePresetSave
Triggered to validate the saving of changes to a product attribute preset. Developers can use this event to enforce rules or validations related to the save process, ensuring data integrity and adherence to business logic.
ValidateProductAttributePresetUpdate
Triggered to validate updates to a product attribute preset. Developers can use this event to enforce rules or validations related to the update process, ensuring data integrity and adherence to business logic.
ValidateProductAttributeSave
Triggered to validate the saving of changes to a product attribute. Developers can use this event to enforce rules or validations related to the save process, ensuring data integrity and adherence to business logic.
ValidateProductAttributeUpdate
Triggered to validate updates to a product attribute. Developers can use this event to enforce rules or validations related to the update process, ensuring data integrity and adherence to business logic.
ValidateProductAttributeValueAdd
Triggered to validate the addition of a value to a product attribute. Developers can use this event to enforce rules or validations related to the addition process, ensuring data integrity and adherence to product attribute specifications.
ValidateProductAttributeValueNameChange
Triggered to validate changes to the name of a value associated with a product attribute. Developers can use this event to enforce rules or validations related to the modification of product attribute value names, ensuring clarity and consistency in identifying product attribute values.
ValidateProductAttributeValueRemove
Triggered to validate the removal of a value from a product attribute. Developers can use this event to enforce rules or validations related to the removal process, ensuring it meets specified criteria or conditions and maintains data integrity.
Event
Description
ValidateRegionCodeChange
Triggered to validate changes to the code of a region. Developers can use this event to enforce rules or validations related to the modification of region codes, ensuring uniqueness and proper identification.
ValidateRegionCreate
Triggered to validate the creation of a new region. Developers can use this event to enforce rules or validations related to the creation process, ensuring data integrity and adherence to business logic.
ValidateRegionDefaultPaymentMethodChange
Triggered to validate changes to the default payment method of a region. Developers can use this event to enforce rules or validations related to the modification of default payment methods for regions, ensuring proper configuration and functionality.
ValidateRegionDefaultShippingMethodChange
Triggered to validate changes to the default shipping method of a region. Developers can use this event to enforce rules or validations related to the modification of default shipping methods for regions, ensuring proper configuration and functionality.
ValidateRegionDelete
Triggered to validate the deletion of a region. Developers can use this event to enforce rules or validations related to the deletion process, ensuring it meets specified criteria or conditions.
ValidateRegionNameChange
Triggered to validate changes to the name of a region. Developers can use this event to enforce rules or validations related to the modification of region names, ensuring clarity and consistency in identifying regions.
ValidateRegionSave
Triggered to validate the saving of changes to a region. Developers can use this event to enforce rules or validations related to the save process, ensuring data integrity and adherence to business logic.
ValidateRegionUpdate
Triggered to validate updates to a region. Developers can use this event to enforce rules or validations related to the update process, ensuring data integrity and adherence to business logic.
Event
Description
ValidateShippingMethodAliasChange
Triggered to validate changes to the alias of a shipping method. Developers can use this event to enforce rules or validations related to the modification of shipping method aliases, ensuring uniqueness and proper identification.
ValidateShippingMethodAllowInCountryRegion
Triggered to validate whether a shipping method is allowed in a specific country or region. Developers can use this event to enforce rules or validations related to the availability of shipping methods in different geographical areas.
ValidateShippingMethodCalculationConfigChange
Triggered to validate changes to the calculation configuration of a shipping method. Developers can use this event to enforce rules or validations related to how shipping costs are calculated, ensuring accuracy and consistency in pricing.
ValidateShippingMethodClearPrices
Triggered to validate the process of clearing prices associated with a shipping method. Developers can use this event to enforce rules or validations related to price adjustments or resets for shipping methods.
ValidateShippingMethodCreate
Triggered to validate the creation of a new shipping method. Developers can use this event to enforce rules or validations related to the creation process, ensuring data integrity and adherence to business logic.
ValidateShippingMethodDelete
Triggered to validate the deletion of a shipping method. Developers can use this event to enforce rules or validations related to the deletion process, ensuring it meets specified criteria or conditions.
ValidateShippingMethodDisallowInCountryRegion
Triggered to validate whether a shipping method is disallowed in a specific country or region. Developers can use this event to enforce rules or validations related to restricting shipping methods in different geographical areas.
ValidateShippingMethodImageChange
Triggered to validate changes to the image associated with a shipping method. Developers can use this event to enforce rules or validations related to visual content updates for shipping methods.
ValidateShippingMethodNameChange
Triggered to validate changes to the name of a shipping method. Developers can use this event to enforce rules or validations related to the modification of shipping method names, ensuring clarity and consistency in identifying shipping methods.
ValidateShippingMethodPriceChange
Triggered to validate changes to the price of a shipping method. Developers can use this event to enforce rules or validations related to price adjustments or updates for shipping methods, ensuring accurate pricing information.
ValidateShippingMethodSave
Triggered to validate the saving of changes to a shipping method. Developers can use this event to enforce rules or validations related to the save process, ensuring data integrity and adherence to business logic.
ValidateShippingMethodSettingChange
Triggered to validate changes to the settings of a shipping method. Developers can use this event to enforce rules or validations related to configuration updates for shipping methods, ensuring proper functionality and integration with other systems.
ValidateShippingMethodSkuChange
Triggered to validate changes to the Stock Keeping Unit (SKU) of a shipping method. Developers can use this event to enforce rules or validations related to product identification and tracking for shipping methods.
ValidateShippingMethodTaxClassChange
Triggered to validate changes to the tax class associated with a shipping method. Developers can use this event to enforce rules or validations related to tax rate adjustments or updates for shipping methods.
ValidateShippingMethodUpdate
Triggered to validate updates to a shipping method. Developers can use this event to enforce rules or validations related to the update process, ensuring data integrity and adherence to business logic.
Event
Description
ValidateStockChange
Triggered to validate changes made to the stock levels of products or inventory items. Developers can use this event to enforce business logic related to stock adjustments, ensuring accuracy and adherence to inventory management policies.
Event
Description
ValidateStoreAddGiftCardPropertyAlias
Triggered to validate adding an alias for a gift card property in a store. Developers can use this event to enforce rules or validations related to gift card property aliases, ensuring uniqueness and proper identification.
ValidateStoreAddProductPropertyAlias
Triggered to validate adding an alias for a product property in a store. Developers can use this event to enforce rules or validations related to product property aliases, ensuring uniqueness and proper identification.
ValidateStoreAddProductUniquenessPropertyAlias
Triggered to validate adding an alias for a uniqueness property of a product in a store. Developers can use this event to enforce rules or validations related to uniqueness property aliases, ensuring uniqueness and proper identification.
ValidateStoreAliasChange
Triggered to validate changes to the alias of a store. Developers can use this event to enforce rules or validations related to the modification of store aliases, ensuring uniqueness and proper identification.
ValidateStoreAllowUser
Triggered to validate allowing a user in a store. Developers can use this event to enforce rules or validations related to user permissions and access control within a store.
ValidateStoreAllowUserRole
Triggered to validate allowing a user role in a store. Developers can use this event to enforce rules or validations related to user role permissions and access control within a store.
ValidateStoreBaseCurrencyChange
Triggered to validate changes to the base currency of a store. Developers can use this event to enforce rules or validations related to the modification of base currencies, ensuring compatibility and consistency in financial operations.
ValidateStoreCookiesChange
Triggered to validate changes to cookie settings in a store. Developers can use this event to enforce rules or validations related to privacy and tracking policies associated with cookies in a store.
ValidateStoreCreate
Triggered to validate the creation of a new store. Developers can use this event to enforce rules or validations related to the creation process, ensuring data integrity and adherence to business logic.
ValidateStoreDefaultCountryChange
Triggered to validate changes to the default country of a store. Developers can use this event to enforce rules or validations related to the modification of default countries, ensuring proper localization and operational settings.
ValidateStoreDefaultLocationChange
Triggered to validate changes to the default location of a store. Developers can use this event to enforce rules or validations related to the modification of default locations, ensuring accurate fulfillment and logistical operations.
ValidateStoreDefaultTaxClassChange
Triggered to validate changes to the default tax class of a store. Developers can use this event to enforce rules or validations related to tax handling and rate adjustments in a store.
ValidateStoreDelete
Triggered to validate the deletion of a store. Developers can use this event to enforce rules or validations related to the deletion process, ensuring it meets specified criteria or conditions.
ValidateStoreDisallowUser
Triggered to validate disallowing a user in a store. Developers can use this event to enforce rules or validations related to user permissions and access control within a store.
ValidateStoreDisallowUserRole
Triggered to validate disallowing a user role in a store. Developers can use this event to enforce rules or validations related to user role permissions and access control within a store.
ValidateStoreGiftCardSettingsChange
Triggered to validate changes to gift card settings in a store. Developers can use this event to enforce rules or validations related to gift card management and configuration in a store.
ValidateStoreMeasurementSystemChange
Triggered to validate changes to the measurement system used in a store. Developers can use this event to enforce rules or validations related to units of measurement and standardization in a store.
ValidateStoreNameChange
Triggered to validate changes to the name of a store. Developers can use this event to enforce rules or validations related to the modification of store names, ensuring clarity and consistency in store identification.
ValidateStoreNotificationEmailTemplatesChange
Triggered to validate changes to notification email templates in a store. Developers can use this event to enforce rules or validations related to email template management and communication in a store.
ValidateStoreOrderNumberTemplatesChange
Triggered to validate changes to order number templates in a store. Developers can use this event to enforce rules or validations related to order numbering and format specifications in a store.
ValidateStoreOrderRoundingMethodChange
Triggered to validate changes to the rounding method used for orders in a store. Developers can use this event to enforce rules or validations related to financial calculations and accuracy in a store.
ValidateStoreOrderStatusesChange
Triggered to validate changes to order statuses in a store. Developers can use this event to enforce rules or validations related to order status management and workflow customization in a store.
ValidateStorePriceTaxInclusivityChange
Triggered to validate changes to price tax inclusivity settings in a store. Developers can use this event to enforce rules or validations related to tax calculation methods and pricing policies in a store.
ValidateStoreRemoveGiftCardPropertyAlias
Triggered to validate removing an alias for a gift card property in a store. Developers can use this event to enforce rules or validations related to gift card property aliases, ensuring proper management and identification.
ValidateStoreRemoveProductPropertyAlias
Triggered to validate removing an alias for a product property in a store. Developers can use this event to enforce rules or validations related to product property aliases, ensuring proper management and identification.
ValidateStoreRemoveProductUniquenessPropertyAlias
Triggered to validate removing an alias for a uniqueness property of a product in a store. Developers can use this event to enforce rules or validations related to uniqueness property aliases, ensuring proper management and identification.
ValidateStoreSave
Triggered to validate the saving of changes to a store. Developers can use this event to enforce rules or validations related to the save process, ensuring data integrity and adherence to business logic.
ValidateStoreShareStockFromStoreChange
Triggered to validate changes to the shared stock setting between stores. Developers can use this event to enforce rules or validations related to stock management and synchronization across multiple stores.
ValidateStoreUpdate
Triggered to validate updates to a store. Developers can use this event to enforce rules or validations related to the update process, ensuring data integrity and adherence to business logic.
Event
Description
ValidateTaxClassAliasChange
Triggered to validate changes to the alias of a tax class. Developers can use this event to enforce rules or validations related to the modification of tax class aliases, ensuring uniqueness and proper identification.
ValidateTaxClassClearTaxRates
Triggered to validate clearing tax rates associated with a tax class. Developers can use this event to enforce rules or validations related to tax rate adjustments or resets for tax classes.
ValidateTaxClassCreate
Triggered to validate the creation of a new tax class. Developers can use this event to enforce rules or validations related to the creation process, ensuring data integrity and adherence to business logic.
ValidateTaxClassDelete
Triggered to validate the deletion of a tax class. Developers can use this event to enforce rules or validations related to the deletion process, ensuring it meets specified criteria or conditions.
ValidateTaxClassNameChange
Triggered to validate changes to the name of a tax class. Developers can use this event to enforce rules or validations related to the modification of tax class names, ensuring clarity and consistency in tax classification.
ValidateTaxClassSave
Triggered to validate the saving of changes to a tax class. Developers can use this event to enforce rules or validations related to the save process, ensuring data integrity and adherence to business logic.
ValidateTaxClassTaxRateChange
Triggered to validate changes to tax rates associated with a tax class. Developers can use this event to enforce rules or validations related to tax rate adjustments or updates for tax classes.
ValidateTaxClassUpdate
Triggered to validate updates to a tax class. Developers can use this event to enforce rules or validations related to the update process, ensuring data integrity and adherence to business logic.
Event
Description
ValidateCountryCodeFormat
Triggered to validate the format of a country code. Developers can use this event to enforce rules or validations related to the correct formatting of country codes, ensuring adherence to specified standards.
ValidateDefaultCurrencyBelongsToCountryStore
Triggered to ensure that the default currency belongs to the country store. Developers can use this event to enforce validation rules specific to default currencies and country stores.
ValidateDefaultPaymentMethodBelongsToCountryStore
Triggered to ensure that the default payment method belongs to the country store. Developers can use this event to enforce validation rules specific to default payment methods and country stores.
ValidateDefaultShippingMethodBelongsToCountryStore
Triggered to ensure that the default shipping method belongs to the country store. Developers can use this event to enforce validation rules specific to default shipping methods and country stores.
ValidateNotStoreDefaultCountry
Triggered to ensure that the country being validated is not the default country for the store. Developers can use this event to enforce validation rules specific to countries and store defaults, ensuring proper configuration and management of default countries.
ValidateUniqueCountryCode
Triggered to ensure that the country code is unique. Developers can use this event to enforce rules or validations to maintain the uniqueness of country codes within the system, preventing conflicts and ensuring clarity in country identification.
Event
Description
ValidateAllowedCountryBelongsToCurrencyStore
Triggered to validate if the country is allowed in the currency store. Developers can use this event to enforce rules or validations related to countries allowed within specific currency stores.
ValidateCulture
Triggered to validate the culture. Developers can use this event to enforce rules or validations related to the culture settings, ensuring compatibility and consistency within the system.
ValidateCurrencyCodeFormat
Triggered to validate the format of a currency code. Developers can use this event to enforce rules or validations related to the correct formatting of currency codes, ensuring adherence to specified standards.
ValidateNotCountryDefaultCurrency
Triggered to ensure that the country is not the default currency. Developers can use this event to enforce rules or validations related to default currency settings for specific countries.
ValidateNotStoreBaseCurrency
Triggered to ensure that the currency is not the base currency for the store. Developers can use this event to enforce rules or validations related to base currency settings for specific stores.
ValidateUniqueCurrencyCode
Triggered to ensure that the currency code is unique. Developers can use this event to enforce rules or validations to maintain the uniqueness of currency codes within the system, preventing conflicts and ensuring clarity in currency identification.
Event
Description
ValidateUniqueAlias
Triggered to ensure that the alias is unique. Developers can use this event to enforce rules or validations to maintain the uniqueness of aliases within the system, preventing conflicts and ensuring clarity in identification.
ValidateUniqueDiscountCode
Triggered to ensure that the discount code is unique. Developers can use this event to enforce rules or validations to maintain the uniqueness of discount codes within the system, preventing duplicate codes from being issued.
Event
Description
ValidateNotStoreDefaultEmailTemplate
Triggered to ensure that the email template being validated is not the default email template for the store. Developers can use this event to enforce validation rules specific to email templates and store defaults, ensuring proper configuration and management of default email templates.
ValidateUniqueEmailTemplateAlias
Triggered to ensure that the alias for an email template is unique. Developers can use this event to enforce rules or validations to maintain the uniqueness of email template aliases within the system, preventing conflicts and ensuring clarity in template identification.
Event
Description
ValidateUniqueExportTemplateAlias
Triggered to ensure that the alias for an export template is unique. Developers can use this event to enforce rules or validations to maintain the uniqueness of export template aliases within the system, preventing conflicts and ensuring clarity in template identification.
Event
Description
ValidateUniqueGiftCardCode
Triggered to ensure that the code for a gift card is unique. Developers can use this event to enforce rules or validations to maintain the uniqueness of gift card codes within the system, preventing duplicate codes from being issued.
Event
Description
ValidateNotStoreDefaultLocation
Triggered to ensure that the location being validated is not the default location for the store. Developers can use this event to enforce validation rules specific to locations and store defaults, ensuring proper configuration and management of default locations.
Event
Description
ValidateCurrencyBelongsToOrderStore
Triggered to ensure that the currency belongs to the order's store. Developers can use this event to enforce validation rules specific to currencies and order stores.
ValidateDiscountCodeValid
Triggered to validate the validity of a discount code. Developers can use this event to enforce rules or validations related to discount codes, ensuring they are valid and applicable.
ValidateGiftCardPropertyIsWritable
Triggered to validate whether a specific property of a gift card is writable. Developers can use this event to enforce rules or validations related to the writability of gift card properties.
ValidateGiftCardValid
Triggered to validate the validity of a gift card. Developers can use this event to enforce rules or validations related to gift cards, ensuring they are valid and can be applied.
ValidateOrderPaymentCountryRegionAllowedByOrderCurrency
Triggered to validate if the payment country or region is allowed by the order currency. Developers can use this event to enforce rules or validations related to payment countries or regions based on the order currency.
ValidateOrderPaymentCountryRegionBelongsToOrderStore
Triggered to ensure that the payment country or region belongs to the order's store. Developers can use this event to enforce validation rules specific to payment countries or regions and order stores.
ValidateOrderPropertyIsWritable
Triggered to validate whether a specific property of an order is writable. Developers can use this event to enforce rules or validations related to the writability of order properties.
ValidateOrderShippingCountryRegionBelongsToOrderStore
Triggered to ensure that the shipping country or region belongs to the order's store. Developers can use this event to enforce validation rules specific to shipping countries or regions and order stores.
ValidateOrderStatusBelongsToOrderStore
Triggered to ensure that the order status belongs to the order's store. Developers can use this event to enforce validation rules specific to order statuses and order stores.
ValidateOrderStatusCode
Triggered to validate the order status code. Developers can use this event to enforce rules or validations related to order status codes, ensuring they adhere to specified formats or requirements.
ValidatePaymentMethodAllowedInPaymentCountryRegion
Triggered to validate if the payment method is allowed in the payment country or region. Developers can use this event to enforce rules or validations related to payment methods based on payment countries or regions.
ValidatePaymentMethodBelongsToOrderStore
Triggered to ensure that the payment method belongs to the order's store. Developers can use this event to enforce validation rules specific to payment methods and order stores.
ValidateProductAddHasPrice
Triggered to validate that a product being added to an order has a price. Developers can use this event to enforce rules or validations related to product prices when adding them to orders.
ValidateProductAddQuantityPositive
Triggered to validate that the quantity of a product being added to an order is positive. Developers can use this event to enforce rules or validations related to product quantities when adding them to orders.
ValidateShippingMethodAllowedInShippingCountryRegion
Triggered to validate if the shipping method is allowed in the shipping country or region. Developers can use this event to enforce rules or validations related to shipping methods based on shipping countries or regions.
ValidateShippingMethodBelongsToOrderStore
Triggered to ensure that the shipping method belongs to the order's store. Developers can use this event to enforce validation rules specific to shipping methods and order stores.
ValidateTaxClassBelongsToOrderStore
Triggered to ensure that the tax class belongs to the order's store. Developers can use this event to enforce validation rules specific to tax classes and order stores.
ValidateTransactionInitialized
Triggered to validate that a transaction is initialized. Developers can use this event to enforce rules or validations related to transaction initialization, ensuring transactions are properly prepared before proceeding.
ValidateUniqueBundleId
Triggered to ensure that the bundle ID is unique. Developers can use this event to enforce rules or validations to maintain the uniqueness of bundle IDs within the system.
Event
Description
ValidateOrderLinePropertyIsWritable
Triggered to validate whether a specific property of an order line can be modified. Developers can use this event to enforce rules or validations related to the writability of order line properties, ensuring data integrity and adherence to business logic when modifying order line properties.
Event
Description
ValidateNotStoreDefaultOrderStatus
Triggered to ensure that the order status being validated is not the default order status for the store. Developers can use this event to enforce validation rules specific to order statuses and stores, ensuring proper configuration and management of default statuses.
Event
Description
ValidateAllowedInPriceCountryRegion
OBSOLETE: Use ValidateFixedRateAllowedInPriceCountryRegion
instead. This event was originally used to validate whether a price is allowed in the specified country or region, enabling developers to enforce this rule through custom actions or validations.
ValidateNotCountryDefaultPaymentMethod
Triggered to ensure that the payment method being validated is not the default payment method for the country. Developers can use this event to enforce validation rules specific to payment methods and countries.
ValidateNotRegionDefaultPaymentMethod
Triggered to ensure that the payment method being validated is not the default payment method for the region. Developers can use this event to enforce validation rules specific to payment methods and regions.
ValidateUniquePaymentMethodAlias
Triggered to ensure that the alias for a payment method is unique. Developers can use this event to enforce uniqueness of payment method aliases within the system.
Event
Description
ValidateUniquePrintTemplateAlias
Triggered to ensure that the alias for a print template is unique. Developers can use this event to enforce uniqueness of print template aliases within the system, preventing conflicts and ensuring clarity in template identification.
Event
Description
ValidateUniqueProductAttributeAlias
Triggered to ensure that the alias for a product attribute is unique. Allows developers to enforce uniqueness of product attribute aliases within the system.
ValidateUniqueProductAttributePresetAlias
Triggered to ensure that the alias for a product attribute preset is unique. Allows developers to enforce uniqueness of product attribute preset aliases within the system.
Event
Description
ValidateDefaultPaymentMethodBelongsToRegionStore
Triggered to ensure that the default payment method belongs to the region's store. Developers can use this event to enforce validation rules related to payment methods specific to regions and stores.
ValidateDefaultShippingMethodBelongsToRegionStore
Triggered to ensure that the default shipping method belongs to the region's store. Developers can use this event to enforce validation rules related to shipping methods specific to regions and stores.
ValidateUniqueRegionCode
Triggered to ensure that the region code is unique. Developers can use this event to enforce validation rules to maintain unique region codes within the system.
Event
Description
ValidateAllowedInPriceCountryRegion
OBSOLETE: Use ValidateFixedRateAllowedInPriceCountryRegion
instead. This event was originally used to validate whether a price is allowed in the specified country or region, enabling developers to enforce this rule through custom actions or validations.
ValidateCalculationModeConfigType
Triggered to ensure that the calculation mode configuration type is valid. Allows developers to perform actions or validations to enforce this rule.
ValidateFixedRateAllowedInPriceCountryRegion
Triggered to ensure that a fixed rate is allowed in the specified price country or region. Allows developers to perform actions or validations to enforce this rule.
ValidateNotCountryDefaultShippingMethod
Triggered to ensure that the shipping method being validated is not the default shipping method for the country. Allows developers to perform actions or validations to enforce this rule.
ValidateNotRegionDefaultShippingMethod
Triggered to ensure that the shipping method being validated is not the default shipping method for the region. Allows developers to perform actions or validations to enforce this rule.
ValidateUniqueShippingMethodAlias
Triggered to ensure that the alias for a shipping method is unique. Allows developers to perform actions or validations to enforce the uniqueness of shipping method aliases.
Event
Description
ValidateDefaultCountryBelongsToStore
Triggered to ensure that the default country being validated belongs to the store. Allows developers to perform actions or validations to enforce this rule.
ValidateDefaultTaxClassBelongsToStore
Triggered to ensure that the default tax class being validated belongs to the store. Allows developers to perform actions or validations to enforce this rule.
ValidateNotificationEmailTemplatesBelongsToStore
Triggered to ensure that the notification email templates being validated belong to the store. Allows developers to perform actions or validations to enforce this rule.
ValidateOrderStatusesBelongsToStore
Triggered to ensure that the order statuses being validated belong to the store. Allows developers to perform actions or validations to enforce this rule.
ValidateUniqueStoreAlias
Triggered to ensure that the alias for a store is unique. Allows developers to perform actions or validations to enforce the uniqueness of store aliases.
Event
Description
ValidateNotStoreDefaultTaxClass
Triggered to ensure that the tax class being validated is not the default tax class for the store. Allows developers to perform actions or validations to enforce this rule.
ValidateUniqueTaxClassAlias
Triggered to ensure that the alias for a tax class is unique. Allows developers to perform actions or validations to enforce the uniqueness of tax class aliases.