Stock Management
A new stock management system has been added.
Key features include:
- Makes use of stock products in CPP.
- The ability to export and import stock levels.
- Webhooks that allow retailers to receive stock level updates from suppliers in near realtime.
- Stock levels are updated automatically when new orders get created.
Products
Any product in CPP that has Stock set as its type automatically gets tracked by the stock system.
Generally stock products would not be customisable.
Instead, customisable products in CPP should be linked to a base stock product via the Base Stock Product field (visible in CPPv2 only).
The reverse is also true, customisable products would generally not have the stock type set.
This means that hundreds of customisable CPP products can be linked to a single stock base product.
In the case of customisable products that make use of variants, each variant must link to its own base stock product.
In the case of virtual products, the base stock product is derived from the virtual product’s base product.
Example
With Variants
Let’s say that Supplier A sells T-shirt T01
which comes in 2 sizes, S
and L
.
In CPP, the supplier would create 3 separate products.
ID | SKU | Type | Variant 1 SKU | Variant 1 Base Stock Product ID | Variant 2 SKU | Variant 2 Base Stock Product ID |
---|---|---|---|---|---|---|
100 | T01-S | Stock | N/a | N/a | ||
101 | T01-L | Stock | N/a | N/a | ||
102 | T01 | Customisable | T01-S | 100 | T01-L | 101 |
When OMS receives orders from a retailer for product 102
, it will automatically
adjust the stock levels for either product 100
or 101
, depending on which
variant of 102
was ordered.
Without Variants
Let’s say that Supplier A sells Samsung S7 cases. The recommended approach would be for the supplier to create the following products in CPP.
ID | SKU | Type | Base Stock Product ID |
---|---|---|---|
200 | S7 | Stock | N/a |
201 | S7 | Customisable | 200 |
Taking a shortcut, it would also be possible to create a single product.
ID | SKU | Type | Base Stock Product ID |
---|---|---|---|
202 | S7 | Stock & Customisable | N/a |
However with the shortcut, if the product is duplicated then the supplier will end up with 2 separate stock products that represent the same physical unit.
Inventory User Interface
Stock levels can be manually updated via the Inventory section of Stock Manager.
Bulk updates are best performed by first exporting a CSV, updating the CSV in a spreadsheet package and then re-importing.
Webhooks
Retailers are able to register a webhook URL that allows them to receive stock level updates.
The webhook will be called whenever the stock level of a base stock product changes (at a maximum frequency of once every 15 minutes for each base stock product).
The webhook can be set in the V2 company settings section, under the Webhooks Product Stock Level Changed URL heading.
Detailed developer documentation will be added soon.
Product Determination
Retailers will receive updates via the webhook for base stock products across all suppliers where there exists a dropship connection between the supplier and the retailer.
In addition, the webhook will list all non stock products that the retailer has access to and that are associated with the base stock product.
For example, if Retailer A had their own version of product 102
(lets say the ID
of their own version is 300
), the webhook data for updates for product 100
will look something like:
{
"stock": [
"quantity_availble": 10,
"linked" [
{
"product": {
"id": 100,
"sku": "T01-S"
},
"variant": null
},
{
"product": {
"id": 300,
"sku": "T01"
},
"variant": {
"attribute_1": {
"name": "Size",
"value": "Small"
},
"sku": "T01-S"
}
}
]
]
}
The base stock product is always the first product listed.
Future Development
- Only the v2.2 ordering API is currently capable of updating stock levels on order creation. POS, retailer integrations and the v2.1 ordering API are not currently supported. Support will be added in the near future.
- An API for updating stock levels.
Intentional Limitations
- Stock products cannot have variants
- Stock products cannot have a base stock product set