Links

2023

Commerce Layer changelog for software updates, new features, and general improvements.

Added shipments field to the orders endpoint
🌟

December 21, 2023

Now you can do statistics and track the history of the shipments (and other shipment-related information such as the shipments stock location, shipping method, shipping category, and tags) associated to your orders. Check the Use cases section of the Metrics API documentation for some examples and the public Postman collection to see it in action!

Added code attribute for markets, price lists, shipping categories, and stock locations

Core API

December 20, 2023

You can now define an optional code for your markets, price lists, shipping categories, and stock locations. For each resource, the code must be unique across the specific environment 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.

Adyen Checkout API version updated to the latest

Core API

December 13, 2023

We’ve updated and improved our out-of-the-box integration with Adyen 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 Adyen gateway and use the correct version of Adyen's JS SDK and client libraries as detailed on Adyen's website.

Enabled order number editing for Enterprise plans

Core API

November 30, 2023

Now you can change the default order numeric identifier 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 imports, just make sure to specify both the order number and ID to avoid unexpected results.

Added option to manually disable webhooks

Core API

November 29, 2023

Now you can disable existing webhooks (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.

Exposed and stored external price trigger

Core API

November 16, 2023

The _external_price trigger you need to set to true for the line items you want the price to be calculated by an external service 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 fetch the line item and inspect the attribute value to check whether some external price calculation is involved or not.

Added the new Returns app to the dashboard hub
🚀

Dashboard

November 15, 2023

As part of our new Dashboard renovations, we’ve released a new Returns application to help you manage your returns 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!
To learn more, read our blog here.

Exposed compare at price on line items

Core API

November 7, 2023

Now you can retrieve the compare at price directly from the line item associated with the product (e.g. easily show it in your cart/checkout). This feature has been added to external prices too, just remember to specify the compare_at_amount_cents in your service’s response.

Full shipments CRUD enabled
🚀

Core API

October 24, 2023

We’ve removed any restrictions on the shipments endpoint. Shipments can now be created, deleted and their associations can be updated upon specific conditions, 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:
  • Stock line items 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 at the shipment level to help you manage the stock accordingly).
  • Stock reservations can also be managed manually outside the order scope, with no associations with a specific order's line item.
  • Stock transfers can now be put on hold by setting a specific attribute at the inventory model level.
To get a high-level overview of how you can benefit from this upgrade, read our blog here.

Significant performance improvements in v4.2.0

Checkout

October 20, 2023

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.

New payment options endpoint
🌟

Core API

October 5, 2023

We've just added a new entry to the roster of our commerce API endpoints. You can now associate additional payment options 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.

Introducing Custom apps
🚀

Dashboard

October 4, 2023

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.

Significant performance improvements in v4.0.15

Checkout

October 2, 2023

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.

Promotions engine enhancements
🚀

Core API

September 28, 2023

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:
  • We’ve changed the limits on the maximum number of active promotions: 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 buy X pay Y 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 cheapest free mode).
  • We’ve introduced a new custom promotion rule 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 enable/disable promotions whether their activation rules are matched or not.
  • We’ve added the possibility to mark a promotion as exclusive, so that, if it’s triggered, no other concurrent promotion is applied.
  • We’ve added the possibility to change the default priority 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 coupon level.
  • We’ve changed the way the total discount due to promotions is distributed on the affected line items: now the taxable items 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).
… and more!
To get a high-level overview of how you can benefit from this upgrade, read our blog here.

Added support for payment methods enabled on Stripe dashboard in v4.0.14

Checkout

September 14, 2023

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 Stripe gateway on Commerce Layer and correctly set up it also on Stripe.

3DS support enabled on subscriptions for Stripe credit cards

Core API

September 13, 2023

Now, if you’re using Stripe as your payment gateway you can benefit from an additional security layer to your order subscription process by letting your customers pay with credit cards requiring 3DS protocol with two-factor authentication.

Added support for payment methods enabled on Stripe dashboard in v4.5.0

September 12, 2023

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.

Filtering engine upgraded ⚠️

Core API

September 6, 2023

Be advised that we introduced a potential breaking change ⚠️ by updating our API's filtering engine. The lists of sortable and filterable fields of some resources have changed. We also introduced a new predicate *_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.

New versions endpoint
🌟

Core API

August 31, 2023

We've just added a new entry to the roster of our commerce API endpoints that will enable auditing functionalities. Versions are associated with almost all the resources 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.

Added the new Tags app to the dashboard hub
🚀

Dashboard

August 29, 2023

As part of our new Dashboard renovations, we’ve released a new Tags application to help you manage your tags 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!

New Tags plugin 🌟

CLI

August 24, 2023

v1.0.0 of our Tags CLI plugin is out! Now you can create a new tag, 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.

Subscription frequency on order summary

Checkout

August 23, 2023

We've introduced the support of the line item frequency 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.

Apple Pay and Google Pay via Stripe enabled on v3.2.1

Cart

August 22, 2023

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 Stripe gateway and configure the necessary settings in your Stripe dashboard.

Added the new Shipments app to the dashboard hub
🚀

Dashboard

August 10, 2023

As part of our new Dashboard renovations, we’ve released a new Shipments application to help you manage your shipments 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!
To learn more, read our blog here.

Added the new Customers app to the dashboard hub
🚀

Dashboard

August 4, 2023

As part of our new Dashboard renovations, we’ve released a new Customers application to help you manage your customers 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!

Micro frontend repositories renamed

July 26, 2023

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.

Added the new Orders app to the dashboard hub
🚀

Dashboard

July 12, 2023

As part of our new Dashboard renovations, we’ve released a new Orders application that acts as a central manager of all orders 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!

New reserved stocks endpoint
🌟

Core API

July 11, 2023

We've just added a new entry to the roster of our commerce API endpoints. Reserved stocks are leveraged to refresh the reserved quantities associated with a specific stock item and determine the actual availability of an SKU in a stock location. They can be included using relationship paths when fetching a list of SKUs to check the real-time availability of each product.

New order editing feature
🌟

Core API

July 6, 2023

We've introduced the capability to edit orders 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 integration application only, via trigger attribute.
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!).

Added ability to bypass exports and cleanups API limits using the CLI

CLI

July 5, 2023

As was already the case for imports, from now on, if you need to export or clean up 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!

My account and Identity MFEs in JS Drop-in v2.0.0

June 15, 2023

Our JS Drop-in library now features two additional sets of web components:
  • The Identity MFEs let you manage user login status and link to the Commerce Layer-hosted Identity app.
  • 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.

Introducing our Identity application
🚀

Identity

June 14, 2023

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.

New Cleanups plugin 🌟

CLI

June 6, 2023

v1.0.0 of our Cleanups CLI plugin is out! Now you can create a new cleanup, list all created cleanups, show the details of an existing cleanup, and check the resource types that can currently be cleaned up — all from the command line. To learn more about the plugin commands and options, please refer to the open-source GitHub repo README.

New stock reservations feature
🌟

Core API

June 5, 2023

We’ve introduced a new API endpoint that allows you to manage stock reservations for your orders both automatically and manually. Now the stock associated with an order's line items is automatically reserved (without decrementing the related stock item 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 trigger attribute 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 inventory model level, after which the reserved stock is released unless the order is placed.
For security reasons, stock reservations can be managed by an integration application only.

New external shipping costs feature
🌟

Core API

May 17, 2023

We added a new entry to our set of external resources feature. Now you can override a shipping method 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 response in case of success or error is compliant with the specifications.

New function that handles all the authorization flows in v4.0.0 ⚠️

JS Auth

May 16, 2023

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.

New rate limiting policy ⚠️

Core API

May 8, 2023

Be advised that we introduced a potential breaking change ⚠️ by updating our APIs rate limits. The new policy is way more granular and efficient, being differentiated not only by limit type but also by environment, HTTP method, and resource type. We also improved the response headers and deprecated some of the old ones. You can find all the information on the dedicated page of the documentation.

Added the option to use the order’s subtotal amount for promotions and shipping methods

Core API

May 2, 2023

We’ve introduced a new boolean attribute use_subtotal for shipping methods and order amount promotion rules. It that enables you to compare the order’s subtotal (instead of the total amount, which remains the default) with:
  • 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.

New Tags API
🌟

Core API

April 19, 2023

We’ve introduced a new API endpoint 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 associations of the related resources and leveraged to filter a list of a specific resource type. Tags can be also exported and imported 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 webhook is fired, and the associated tag(s) are automatically included in the callback's payload.
To learn more, read our blog here.

JS SDK major updates in v5.0.0 ⚠️

SDK

April 3, 2023

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.

New Exports plugin 🌟

CLI

March 28, 2023

v1.0.0 of our Exports CLI plugin is out! Now you can create a new export, list all created exports, show the details of an existing export, and check the resource types that can currently be exported — all from the command line. To learn more about the plugin commands and options, please refer to the open-source GitHub repo README.

Introducing our new subscription features 🌟

Core API

March 15, 2023

Commerce Layer now includes a few new endpoints to supplement our existing order subscription functionalities:
  • Subscription models — 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).
  • Order subscription items — determine which items are part of the subscription, making it much easier to change out items in the subscription when required.
  • Recurring order copies — are used to automatically generate recurring orders based on a source order and the information set at the subscription model level.
  • Order factories — an immutable API that wraps recurring order copies and the already existing order copies resources to enable both automatic and manual order subscription generation.
  • Price frequency tiers — 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 line items and orders 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 this guide to learn how to set up automatic subscriptions on Commerce Layer..

Added read-only customer wallet in v1.1.0

March 10, 2023

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.

Nullable key and enumeration on resource statuses in v4.0.0 ⚠️

March 7, 2023

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.

React 18 in v4.0.0 ⚠️

Checkout

February 28, 2023

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.

New FBT helper endpoint
🌟

February 24, 2023

Commerce Layer Metrics API standard queries cover a wide range of use cases for your business. Since some use cases are more common than others, we decided to expose more dedicated endpoints to help you get relevant results with simple, customizable queries. The first of these endpoints is FBT, 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!

New hub with imports, exports, and webhooks apps
🚀

Dashboard

February 20, 2023

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 imports, exports, and webhooks (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).
In addition to this, we also added the search functionality when browsing your account organizations list.

Axerve integration and auto-capture feature for payments
🌟

Core API

February 20, 2023

Commerce Layer API now supports Axerve out-of-the-box (in addition to all of our other payment gateway integrations). On top of that, we’ve also added, at the payment method level, two specific features related to payment capture:
  • Auto-capture — now, you can ensure payments are automatically captured 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.
  • 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.

Increased SKU list items number for bundles

Core API

January 25, 2023

We doubled the maximum number of SKU list items that you can add to a single bundle, which now changes from 5 to 10. We also increased the maximum import size limit at the API level: now the inputs array can contain a maximum of 10000 items (previously 2000).

Adyen Payment API switch in v3.0.0 ⚠️

Checkout

January 19, 2023

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 Adyen payment gateway 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.

Adyen notifications enablement

Core API

January 19, 2023

We’ve updated and improved our out-of-the-box integration with Adyen which now supports the latest version (v68) of their Checkout API by default and lets you leverage their notification webhooks system (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 Adyen gateway and use the correct version of Adyen's JS SDK and client libraries as detailed on Adyen's website.

Custom events dispatchment in v1.1.0

January 18, 2023

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.

External payment gateway components in v4.2.0

January 12, 2023

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 external payment gateway 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

Core API

January 9, 2023

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.
External order validation setup happens at the market 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 update it and set the _validate attribute to true.
Last modified 13d ago