Stock

// Contents

Introduction
Stock updates
    Stock updates via feed
    Stock updates via API
    Stock updates via plugin
    Stock updates from channels
Manual stock management
Stock locations
    Can I use multiple warehouses?
Stock reservation
    Close orders automatically
    Disable stock reservation
Channel stock

// Introduction

Stock is the actual amount of available products for sale on marketplaces. As you might imagine, it's very important that the stock that is known in ChannelEngine and therefore exported to channels is correct. Selling products that are no longer in stock will result in cancellations and bad ratings and metrics at the marketplace. As there are several places in ChannelEngine where you can manage the stock related settings, all individual sections are mentioned below.

Word of advice: regardless of frequent stock updates and / or disabling stock reservation, it is advised to use a stock filter in your product selections for fast going products. Especially if you are selling these products across multiple marketplaces and are selling via your own webshop(s), there's a good chance a product will be oversold because synchronisation across all connected systems will always take at least 10-15 minutes.

// Stock updates

Stock updates can be done via multiple methods which are all separately explained below. It's also possible to manually manage stock in ChannelEngine, which is handled in a separate section.

/ Stock updates via a feed

If you use product feeds to update your product data, please make sure that at least one feed has the stock mapped (otherwise all stock will be set to 0)

It is possible to supply a specific (stock) feed just for updating the stock more frequent. By default, feeds will be imported once every hour. This stock feed can also contain incremental updates (so only containing the products that have an actual stock change in comparison with the last time the feed was imported), but please make sure that in that case:

  • The stock feed is set to type 'Additional'.
  • The feed also has the MerchantProductNo (SKU) for the product that needs to be updated.
  • The stock isn't mapped in other feeds OR the stock in those feeds is fully up to date as well.

More information on product feeds and how to set them up can be found here.

/ Stock updates via the CE API

If you use the ChannelEngine merchant API to manage your stock, there are 2 (bulk) endpoints you can use:

  • POST /v2/products
  • PUT /v2/offer

/v2/products

This is the endpoint where, if not using an alternative route, you should have also created the product with. Please note: this endpoint is purge and replace. If you update product via this endpoint, you will need to include all the default product data like the stock and price as well. If you leave out the CE:Stock attribute, the stock will be reset to 0. It's therefore important that the stock that's submitted via this endpoint is actually up to date and always submitted. 

If you only want to update the stock or price on an incremental basis, it is advised to use the separate offer endpoint

/v2/offer

This endpoint only allows for the frequent update of the stock or price. You only need to supply the corresponding MerchantProductNo and the stock or price (or both) value you want to update. This endpoint is not purge and replace, so left out values will not be set to 0. It is however still a bulk endpoint, so you are advised to bundle offer updates in batches to limit the amount of call to our API.

/ Stock updates via a plugin

If you use a plugin (which isn't using a product feed for product information also containing the stock value), the stock values will usually be fetched by a custom task you have no direct insight in.

There are 2 plugins to mention specifically:

  • Magento 2
  • Prestashop 1.7

In both cases, the stock is retrieved via the webshops internal API by various API calls. If you have a lot of products and incremental updates are not possible (because for example product / stock updates are imported via some alternative route), you might want to consider using a separate feed (plugin) for stock updates. Because of the great number of calls that are necessary to fetch the stock for all products (both Magento as Prestashop only offer the stock in single calls) the task might run a long time.

/ Stock updates from channels

If you make use of marketplace fulfilment, you will see additional marketplace 'stock locations' (the total number depending on how many marketplace channels and supporting marketplaces you have added).

These are visible in the Product detail page (when viewing the details of a product in ChannelEngine) in the section 'Stock locations'. You do not have any direct influence in these stock numbers (other than sending additional stock to the warehouse of the marketplace in question), as these stock numbers are imported directly from the marketplace. This is done by the task ' Import fulfilment stock from channel' should you wish to check when the last import was in the scheduled task section of your ChannelEngine account.

Please note that in order to use the ' Automatic fulfilment' setting for marketplace offers, it is important this stock is imported and updated as the function is fully reliant on the stock number on the marketplace.

// Manual stock management

If you do not have a system or feed that has the option to supply automatic stock updates to ChannelEngine, there is always to option to manually manage the stock in ChannelEngine.

In order to do so, you need to navigate to Settings > Settings > Advanced Settings.

If you enable the " ChannelEngine manages stock" setting and Save this, it will be possible to manually edit the stock in ChannelEngine. 

To do so, go to the product detail page and click on the pencil next to the current stock number. It will change to an input field and you can set the stock to a different value.

Please note: If you enable manual stock management, be aware that updates via any other route (feed, API, plugin) will be ignored.

// Stock locations

Your own stock will always be represented by your account name (and a blue asterisk) when checking a product in the product details page. In the product overview, this will always be the stock that is shown. Next to that, it's also possible to see the marketplace fulfilment stock if there is any for that product. Those will be represented by the name of the marketplace with the label of this type of fulfilment behind it.

These stock locations can also be imported via our API via GET /v2/stocklocations. The actual known stock can, in turn, be fetched via GET /v2/offer/stock.

/ Can I use multiple warehouses?

Unfortunately at this time, it's not possible to use multiple separated warehouses in ChannelEngine. While this is an often requested feature, making multiple warehouses possible has an impact on how most parts of ChannelEngine currently function and is not something to implement lightly. This may become possible in the future, however, if this is something you would really like to use please consult your customer success manager.

// Stock reservation

By default, ChannelEngine will reserve the stock for all open orderlines. So if you have a stock of 5 for a product, and one is sold, we will export a stock of 4 to all marketplaces. This reservation will continue until the order is ' Closed' (and the status changes to Closed or Shipped). Once that is the case, the stock submitted by the merchant will be leading again. Usually selling 1 item will result in a stock update from the merchant with a stock of 4.

/ Close orders automatically

If you use ChannelEngine for offers but do not handle orders / shipments via ChannelEngine, you could you the option to automatically close orders that are imported.

In order to do so, you need to navigate to  Settings > Settings > Advanced Settings.

If you enable the " Set orders to closed after import" setting and Save this, all new orders will be set to closed right away and no stock reservation will be applied. 

You can recognise if this option is enabled by checking orders: the status will be CLOSED (instead of the regular SHIPPED) and there will an order comment placed stating "This order is auto closed by general settings".

/ Disable stock reservation

If you are absolutely certain that your stock updates towards ChannelEngine are fast enough and you have stock filters in place, it is possible to disable ChanneEngine's stock reservation. This is not a feature to enable lightly, as there will always be an extra latency added by exporting the order to your system and receiving a stock update in return. Also, see this article for a projected time sheet between enabling and disabling stock reservation.

In order to do so, you need to navigate to  Settings > Settings > Advanced Settings.

If you enable the " Turn off stock reservation for open orders" setting and Save this, no stock reservation will be applied and whatever stock you submit to ChannelEngine is what is exported towards marketplaces.

// Channel stock

Channel stock is the actual stock that is exported towards channels (and the stock we in return get back from the channel). This is the stock that is received from your system minus any stock reservations if applicable. Some marketplaces also have the option for stock reservation, which can usually be disabled in the 'Setup' for that specific marketplace.

Example: the stock that is currently known in ChannelEngine is 310, but there are currently 61 items on 'open' orders resulting in the export of a stock number of 249


In ChannelEngine it's also possible to see to current stock that the marketplace is reporting, although there is always a delay in that data and can be 1-2 hours behind on the actual situation.