2023
Commerce Layer changelog for software updates, new features, and general improvements.
Last updated
Was this helpful?
Commerce Layer changelog for software updates, new features, and general improvements.
Last updated
Was this helpful?
Now you can do statistics and track the history of the (and other shipment-related information such as the shipments , , , and ) associated to your orders. Check the section of the Metrics API documentation for some examples and the public Postman collection to see it in action!
You can now define an optional code for your , , , and . For each resource, the code must be unique across the specific and is subject to some validation on the maximum length and allowed characters. When listing all four resources you can also sort and filter the results by code.
We’ve updated and improved our which now supports the latest version (v71
) of their Checkout API by default.
If you're using an old integration that requires a version lower than v71
(back up to v66
) make sure to specify it in the api_version
attribute of the and use the correct version of Adyen's JS SDK and client libraries as detailed on Adyen's website.
To learn more, read our blog here.
To get a high-level overview of how you can benefit from this upgrade, read our blog here.
v4.2.0
We've implemented a solution that will result in another evident performance enhancement (in addition to the improvements recently achieved) in the opening phase of the Checkout. Now we perform two calls in parallel to validate the pair access token + order ID so that the Checkout can bootstrap. Organizations using Google Tag Manager will get an even bigger boost, eliminating two more calls to our order endpoint.
We’re proud to announce the release of Custom apps, which allow you to build your own Dashboard experience, either by forking and editing our existing open-source Dashboard applications (Customers, Exports, Imports, Orders, Shipments, Tags, Webhooks — more to come!) to create the ideal workflow for your team or building new apps that meet your team's need using our App Elements React component library.
To learn more, read our blog here.
v4.0.15
We've implemented a new logic that intelligently determines when to refresh the order, resulting in a notable performance enhancement when opening the Checkout. This solution eliminates the need to wait for a synchronous call, which was previously causing delays for other essential requests in the Checkout loading. Another crucial step in our ongoing commitment to refining our suite of micro frontends.
We’ve just released a huge upgrade to our promotions engine. The changes and new features are many and you can find all the details on the related sections of the documentation. Among them:
… and more!
To get a high-level overview of how you can benefit from this upgrade, read our blog here.
v4.0.14
v4.5.0
With v4.5.0
we started supporting Apple Pay and Google Pay express checkout buttons together with all the payment methods enabled on your Stripe Dashboard. We also added new hooks (e.g. useCommerceLayer
, useCustomerContainer
) and improved existing ones (e.g. useOrderContainer
) so that they can be used in addition to our components to get the best out of the package.
v3.2.1
To learn more, read our blog here.
We've just renamed all our micro frontend repositories replacing the prefix commercelayer-
with mfe-
, so that now their names are consistent with the policy already in place for the Identity app. You can find the source code of all our hosted applications on GitHub: Checkout, Cart, Microstore, My account.
At the moment the order editing feature is available via API only, for orders that are placed after the release. It won't be available on the legacy admin area. It will be a second-stage enhancement of the upcoming Orders app that is going to be added to the Dashboard (stay tuned!).
v2.0.0
Our JS Drop-in library now features two additional sets of web components:
The My account MFE renders a link to the Commerce Layer-hosted My account app which enables customers to manage their personal customer portal (orders, addresses, wallet, and more).
To learn more and see our micro frontends in action, explore the interactive documentation. For any additional details or potential breaking changes see the release notes.
We've released the first version of our Identity application which handles customer login and sign-up functionalities. As with all of our applications, a hosted version is available to use out-of-the-box, or the open-source repository can be forked and hosted on your end for any customizations you want to implement.
v4.0.0
⚠️Be advised that we introduced a potential breaking change ⚠️ by removing the client-oauth2
dependency from our JS Auth wrapper. The whole library has been rewritten and the old getSalesChannelToken
, getCustomerToken
, getIntegrationToken
, authorizeWebapp
, and getWebappToken
functions replaced by a single new authentication
function. You can check the updated code samples in the repo README.
The value specified as the free over amount for the cost of a shipping method.
The value specified as the amount above which a promotion should be triggered.
In both cases, this way, existing discounts (if any) are excluded from the compared order’s amount.
To learn more, read our blog here.
v5.0.0
⚠️We just released v5.0.0
of our JS SDK, introducing some new features and breaking changes ⚠️ mostly related to the latest OpenAPI schema update. Please find here below a summary of the most relevant ones — now:
Some fields (e.g. statuses) have a predefined set of allowed values.
Non-fetchable fields aren’t returned in the related object.
The control on the resource type has been reinforced.
You can use the new count()
function when filtering every resource to get the total number of returned elements based on the filter that has been applied.
The overall code has been optimized to slightly reduce the package size.
… and more. Check the release notes and the open-source repo README for any additional information and examples.
v1.1.0
Now, when using our My account application, you can see the list of the authenticated customer's saved cards (if any). Just click on the related sidebar menu item to access the new section.
v4.0.0
⚠️We bumped our schema to the latest OpenAPI specification. Be advised that we introduced a potential breaking change ⚠️ by updating the server URL syntax for the organization slug since OAS v.3.1.0
does not support double curly brackets for variables anymore — {{your-organization-slug}}
is now {your_organization_slug}
. On top of that, we introduced the nullable
key which is false if the related property is fetchable and required on creation, true if the related property is fetchable but not required on creation, and not present if the related property is not fetchable. We also added the enum
key for the resources that have a status-like property (e.g. status
, fulfillment_status
, payment_status
, etc.) so that all the available statuses are properly listed.
v4.0.0
⚠️Be advised that we introduced a potential breaking change ⚠️ — Starting from v4.0.0 the Checkout application will adopt React 18 and the latest version of our React components library.
In addition to this, we also added the search functionality when browsing your account organizations list.
Delayed capture — now, you can override the default behavior of the API and decide to start fulfilling your orders even if they’re not captured yet, waiting to capture them when they’re ready to be shipped.
v3.0.0
⚠️v1.1.0
Commerce Layer JS Drop-in library v1.1.0
now dispatches to the document object some custom events (when an item is added to the cart, and when a price or an SKU is fetched) that you can intercept to trigger specific actions on your side. To avoid the same event being fired too often a debouncing practice is also implemented.
v4.2.0
We’ve implemented a new custom validation process that enables you to apply additional validation rules on top of our standard validation. This can be useful when you want to support more complex validation rules specific to your business logic, such as market-specific quantities or SKUs.
Now you can according to your needs as long as the passed value is unique within the specific organization environment. This feature is available for Enterprise plans only and can be activated by environment. You can inspect the related flags at the organization level to check your configuration. Order numbers can also be updated in bulk using , just make sure to specify both the order number and ID to avoid unexpected results.
Now you can disable existing (and eventually re-enable them) via trigger attribute. Newly created webhooks are still enabled by default. Only the events associated with enabled webhooks will be fired. You can verify if a webhook is enabled/disabled by checking if the disabled_at
attribute is populated or not.
The _external_price
trigger you need to set to true
for the line items you want the price to be calculated is now stored and exposed. That means you no longer need to pass it at any line item update. Once set, any following computation on that line item's price will be performed invoking your external endpoint until you set it to false
. You can also and inspect the attribute value to check whether some external price calculation is involved or not.
As part of our new Dashboard renovations, we’ve released a new Returns application to help you manage your in Commerce Layer. It provides all the core functions to initiate returns, manage their acceptance or rejection, and facilitates restocking when appropriate. Click on the Hub tab and see it for yourself!
Now you can retrieve the compare at price directly from the associated with the product (e.g. easily show it in your cart/checkout). This feature has been added to too, just remember to specify the compare_at_amount_cents
in your service’s .
We’ve removed any restrictions on the endpoint. Shipments can now be created, deleted and their associations can be updated , after the related order approval, while for the first part of the order lifecycle the automatic shipments generation based on the selected inventory strategy is still honored. This feature also includes changes to some related resources:
can also be managed manually, including the possibility of creating a stock line item associated with a shipment that involves a product that originally wasn't part of the order (some trigger attributes are exposed to help you manage the stock accordingly).
can also be managed manually outside the order scope, with no associations with a specific order's line item.
can now be put on hold by setting a specific attribute at the level.
We've just added a new entry to the roster of our commerce API endpoints. You can now associate additional with an order to extend the information we send to the payment gateway at the moment of the payment creation (e.g. to leverage Stripe Connect and accept payments on behalf of connected accounts, and more). Payment options are payment source type-specific and may vary based on the different payment gateway. Make sure to carefully read the relative gateway documentation so that you can use them properly.
We’ve changed the limits on the maximum number of active : now promotions associated with coupons are unlimited, while the maximum number of other promotion types that can be activated for a single organization is 10.
We’ve introduced a new promotion type which enables you to offer your customers a discount corresponding to X-Y units of a product for free for any X units of the same products added to the order (it can also be used in the mode).
We’ve introduced a new that adds extreme flexibility when building your promotion logic enabling you to trigger promotions based on specific conditions that the order or the associated resources must meet.
We’ve added the option to promotions whether their activation rules are matched or not.
We’ve added the possibility to mark a promotion as , so that, if it’s triggered, no other concurrent promotion is applied.
We’ve added the possibility to change the default according to which concurrent promotions are applied so that you can define a custom order of application.
We've added the option to set an expiration date also at the level.
We’ve changed the way the total discount due to promotions is on the affected line items: now the are considered (also gift cards and negative adjustments are involved — this may lead to potential breaking changes, so make sure to properly set the taxable properties at the order level).
We've introduced the support for all the payment methods enabled in your Stripe dashboard, including Apple Pay and Google Pay. To use them, you need to activate the auto_payments
option of your on Commerce Layer and correctly set up it also on Stripe.
Now, if you’re using as your payment gateway you can benefit from an additional security layer to your process by letting your customers pay with credit cards requiring 3DS protocol with two-factor authentication.
Be advised that we introduced a potential breaking change ⚠️ by updating our API's . The lists of and of some resources have changed. We also introduced a new *_jcont
that you can leverage to filter data based on the content of JSON attributes. Remember that if you try to filter a collection of resources by a non-filterable field you don't get any error from the API which will simply return the full unfiltered list.
We've just added a new entry to the roster of our commerce API endpoints that will enable auditing functionalities. are associated with to help you track the history of each resource's data changes. Each version object contains information about the event that generated it, the type of resource that has been modified, the request involved, the application that triggered the change, and more.
As part of our new Dashboard renovations, we’ve released a new Tags application to help you manage your in Commerce Layer. You can create new tags, and edit or delete existing ones. Tags management (e.g. adding tags to an order or a customer, filtering orders and customers by tag, etc.) is now also enabled for the Orders and Customers apps. Click on the Hub tab and see it for yourself!
v1.0.0
of our Tags CLI plugin is out! Now you can create a new , list all created tags, add one or more tag(s) to a set of resources, count the resources associated with a specific tag, and more — all from the command line. To learn more about the plugin commands and options, please refer to the open-source GitHub repo README.
We've introduced the support of the on the Checkout application, starting from v4.0.13
. Now, if a line item has a frequency, it will be displayed on the order summary and on the thank you page.
Starting from v.3.2.1 the hosted version of the Cart app supports express checkout buttons for both Apple Pay and Google Pay. To enable this feature, you need to activate the auto_payments
on your Commerce Layer and configure the necessary settings in your Stripe dashboard.
As part of our new Dashboard renovations, we’ve released a new Shipments application to help you manage your in Commerce Layer. You can track down shipments through search and filters. You can also see the history, status, and relevant information for a shipment, while also preparing packages and purchasing shipping labels. Click on the Hub tab and see it for yourself!
As part of our new Dashboard renovations, we’ve released a new Customers application to help you manage your in Commerce Layer. You can search, filter, and list them, see their order history, status, and relevant customer groups, together with the addresses they’ve saved and the payment information in their wallet. Click on the Hub tab and see it for yourself!
As part of our new Dashboard renovations, we’ve released a new Orders application that acts as a central manager of all within your organization. Using the Orders app you can see which orders are actively pending, select the orders by status, and then drill deep into a specific order to gain more information or move it along to another status. It’s also possible to look at your entire order history or look into archived orders from this view as well, and more. Read more on our blog or click on the Hub tab and see it for yourself!
We've just added a new entry to the roster of our commerce API endpoints. are leveraged to refresh the reserved quantities associated with a specific and determine the actual availability of an SKU in a stock location. They can be included when fetching a list of SKUs to of each product.
We've introduced the capability to after they're placed and before they're approved, which can be exposed on the customer's end and the support agent's end. When an order is in editing you can make almost any change you need (e.g. add or remove line items, coupon or gift cards, adjustment, etc.) except replace the payment source and payment method, as long as the updates don't lead to a total order amount that exceeds the previously authorized (or already captured) amount. Orders can be edited multiple times before approval. Once an editing operation is started, it can't be reverted. It can always be aborted by cancelling the order.
For security reasons, orders can be moved to the editing
status (and moved back to the placed
status) by an only, via trigger attribute.
As was already the case for imports, from now on, if you need to or any of the supported resources in one go, overriding the API limits in terms of maximum size (10K) and concurrent processes (10 per organization), you can leverage our CLI plugins. Check out the Exports plugin v.2.1.0
and the Cleanups plugin v2.0.0
(or above) and unleash the power of the command line!
v1.0.0
of our Cleanups CLI plugin is out! Now you can create a new , list all created cleanups, show the details of an existing cleanup, and check the resource types that can currently — all from the command line. To learn more about the plugin commands and options, please refer to the open-source GitHub repo README.
We’ve introduced a that allows you to manage stock reservations for your orders both automatically and manually. Now the stock associated with an 's line items is automatically reserved (without decrementing the related quantities) when the order is placed until the order is approved or cancelled. You can also reserve a line item stock before order placement using a specific when adding the line item to the order. In this case, the created draft stock reservations have a default expiration date of 1 hour that can be changed at the level, after which the reserved stock is released unless the order is placed.
For security reasons, stock reservations can be managed by an only.
We added a to our set of feature. Now you can override a cost with a price calculated externally by any (custom) service. You just need to set the shipping method's scheme
to external
, provide the external_prices_url
from where to fetch the related value, and make sure your external service in case of success or error is compliant with the specifications.
Be advised that we introduced a potential breaking change ⚠️ by updating our APIs . The new policy is way more granular and efficient, being differentiated not only by but also by , HTTP method, and resource type. We also improved the and deprecated some of the old ones. You can find all the information on the of the documentation.
We’ve introduced a new boolean attribute use_subtotal
for and . It that enables you to compare the order’s subtotal (instead of the total amount, which remains the default) with:
We’ve introduced a that allows you to apply tags to most of Commerce Layer’s resources. Tags can be used as anchors to build custom logic and processes on top of our API and effectively expands the extensibility of our entire platform.
Tags can be included as of the related resources and leveraged to a list of a specific resource type. Tags can be also and in JSON or CSV format, both standalone and together with the related resources.
When a resource is tagged (or the list of the associated tags changes) a specific event is triggered, the related is fired, and the associated tag(s) are automatically included in the callback's payload.
v1.0.0
of our Exports CLI plugin is out! Now you can create a new , list all created exports, show the details of an existing export, and check the resource types that can currently — all from the command line. To learn more about the plugin commands and options, please refer to the open-source GitHub repo README.
Commerce Layer now includes a few new endpoints to supplement our existing functionalities:
— define the frequency and split of subscriptions. Each subscription model can also be associated with a market to differentiate the subscription strategy within different markets. This object allows brands to manage the frequency and payment source of the subscription, as well as attach promotions on the first order of the subscription (often used to discount first runs or provide a free trial of the product). It also can apply subscriptions at the SKU level (not the order level only), which enables orders to be split between one-time purchases (e.g. a razor handle) and subscription purchases (a monthly order of razor blades).
— determine which items are part of the subscription, making it much easier to change out items in the subscription when required.
— are used to automatically generate recurring orders based on a source order and the information set at the subscription model level.
— an immutable API that wraps recurring order copies and the already existing resources to enable both automatic and manual order subscription generation.
— enable specific pricing for an item if it’s part of a subscription (e.g. charging $15 for a razor pack as a one-time purchase and charging $12 for the same pack if it’s part of a subscription). You can also provide different prices for different plans (such as charging $12 for a monthly pack of razors or $120 for a year of monthly razors).
To enable all the above, we also made some changes to the and API: now line items can have a frequency
and the automatic order subscription generation is triggered at the order level by sending the _create_subscriptions
attribute.
Check our data model and read our blog to get a high-level idea of how the whole process works and how these new features make it much easier to build out sophisticated subscriptions. Find any additional details in the API reference and follow to learn how to set up automatic subscriptions on Commerce Layer..
Commerce Layer Metrics API standard cover a wide range of for your business. Since some use cases are more common than others, we decided to expose to help you get relevant results with simple, customizable queries. The first of these endpoints is , aka Frequently Bought Together, a type of analysis query that retrieves items most frequently added to the same orders as a specified item (SKU or bundle) or a group of items. Stay tuned, there’s way more to come!
Commerce Layer admin dashboard now features a brand new Hub section for back-office applications built on top of our APIs that will facilitate the use of some of the main features of the platform. You can access it from the dashboard sidebar menu. The three apps available in this first version of the hub are , , and (stay tuned, more apps coming!). Each of them provides you with a user-friendly UI that lets you handle all the operations involved in the related topic management (previously available via API only).
Commerce Layer API now supports out-of-the-box (in addition to all of our other ). On top of that, we’ve also added, at the level, two specific features related to payment capture:
Auto-capture — now, you can ensure payments are as soon as they are authorized (for gateways that support it). If needed, you can specify a threshold for auto-capture so that it is enabled only for orders under a certain amount.
We doubled the maximum number of SKU list items that you can add to a single , which now changes from 5 to 10. We also increased the limit at the API level: now the inputs array can contain a maximum of 10000 items (previously 2000).
Be advised that we introduced a potential breaking change ⚠️ — Starting from v3.0.0
the Checkout application will adopt the Adyen Payment API v68
, dropping the support for v66
. Make sure that your is configured properly. This will also introduce the new version of the adyen-web
package that is going to improve the drop-in component and the 3DS2 management.
We’ve updated and improved our which now supports the latest version (v68
) of their Checkout API by default and lets you leverage their (the only way to receive automatic updates about requests that are processed asynchronously).
If you're using an old integration that requires a version lower than v68
(back up to v66
) make sure to specify it in the api_version
attribute of the and use the correct version of Adyen's JS SDK and client libraries as detailed on Adyen's website.
With v4.2.0
we added to our subsets of payment gateway and payment source components the external gateway and the external payment ones. These components enable developers to process payments once they have an correctly set up on Commerce Layer and can be used in any custom React project or in a forked version of our Checkout application.
External order validation setup happens at the level, where you can specify the external_order_validation_url
of your external service endpoint and find the generated shared secret that you can leverage to verify the related callback authenticity. To trigger the external validation for an order you need to it and set the _validate
attribute to true
.