UPDATE JAN 2:
UPDATE SEP 14
We've recently shipped a new change to help with identifying calls that we consider deprecated. We've added a new header to return on these calls:
If you receive one of these headers in your response, this means Shopify considers that a deprecated call. This is an effort to allow these calls to be machine readable, and loggable, in order to assist developers in identifying the areas that need to be updated.
Examples of calls that will return this header:
- Creating a fulfillment without a location
- Creating a product with variants that have "inventory_quantity"
- Creating a new variant on a product that has "inventory_quantity"
- Updating a variant with "inventory_quantity_adjustment"
- Updating a variant with "inventory_quantity"
UPDATE JUNE 28:
Just want to let you know that we are extending the deprecation deadline from July 1st to August 1st. There will be a new post tomorrow with more details, but we just wanted to get it out there to maybe relieve some of the stress you are feeling headed into the weekend.
Most, if not all of your questions will be answered in the post tomorrow so try to save any queries for that!
Shopify is preparing to release multi-location inventory features to all merchants this summer. All apps that create fulfillments or manage inventory will need to be updated by July 1st, 2018, to remain functional on shops that track inventory across multiple locations.
July 1st, 2018
Migrating to support multi-location fulfillments
Shopify fulfillments are currently “location unaware”, meaning that when an app creates a fulfillment and fulfills an order, Shopify decrements the inventory with no concept of which location that inventory should be decremented from. In order to support merchants with inventory allocated across multiple locations, apps will need to include a location_id when creating fulfillments.
For details on how to migrate your apps to support multi-location, see our Multi-Location Fulfillment Migration Guide.
Migrating to support multi-location inventory
Currently inventory is set and adjusted on the product variant and is not tracked by any particular location. In anticipation of multi-location inventory, Shopify has released a new Inventory API, which includes two new endpoints: Inventory Item and Inventory Level. The Inventory API will allows apps to effectively manage inventory quantities across multiple locations.
For details on how to migrate your apps to support multi-location inventory, see our Multi-Location Inventory Migration Guide.
We’ll keep you up to date as we continue to make improvements to our platform’s multi-location fulfillment and inventory management capabilities, so you can continue to build the best apps to help extend these new features.
Shopify Apps Team
Is this a revised schedule? I thought the last email from February where it stated May 7 as option to enabled multi-location inventory and then Jan 1 2019 where it goes read only.
Just so I'm clear, if we use the product variant to track inventory levels but do not use them to track muli-location inventory levels, does this new July 1st date effect us in this use case?
It would be a lot better if you guys could allow us to enable multi location on our development stores before releasing this nice addition to the grand public.
We are authoring an inventory management platform with a nice integration with Shopify. This is a very important change we need to get right from the start and we don't have much time left.
Another question which came up from our engineering team is: how are existing merchands who don't have multi-location enabled going to be affected? Will the deprecated inventory APIs be disabled for this merchands cohort as well?
Thanks in advance.
Tahar from Stock&Buy
Stay tuned for details on enabling multi-location features on development shops. I don't have any public details to share except that it will be available to all partner developers before it launches to merchants.
If you have specific implementation questions for the migration please contact email@example.com.
Thanks for all the awesome detail.
I have a quick question about the affect of inventory on the orders api. There is a flag on the create order api call called inventory_behavior. Do the changes made that will affect the inventory levels on the Product API have an affect on this? I know they are totally different API endpoints but I wasn't sure if the underlying behavior would cause any changes on Order api as well.
Hello, after reading the post i realized that for the FulfillmentApi the only change that's need is to provide a location_id.
The question is: where do i find the location_id? I mean no location has been specified right now for products and variants, so how can they be associated to a Location? Is this something that happens by default for all the inventory?
There is no change to the orders API. If you specified inventory_behavior = decrement_obeying_policy Shopify will handle all of the inventory decrementing using the new APIs.
You can get the location_id from https://help.shopify.com/api/reference/location#index to see them all or from https://help.shopify.com/api/reference/inventorylevel to see locations for a specific item.
Hello Ryan O,
Two issues with this:
1. This change violates the golden API rule.. once publised, behaviour should not change or break. Why not allow us to continue setting variant -> inventory_quantity and under the hood just update the appropriate inventory item/level for the default Location?
2. This change will incur extra API calls.
Upon further review...
Affected API | Changing behaviour
Setting inventory_quantity will adjust a product variant's inventory at its location that has the lowest ID. The inventory at that location will be adjusted so that the sum of inventory across all locations matches the value set by inventory_quantity. Use the Inventory Level endpoint instead.
July 1, 2018
Apps will no longer be able to set inventory_quantity or inventory_quantity_adjustment on the product variant.
(a) and (b) seem to contradict each other or does "Setting inventory_quantity.." refer to current behaviour?
So with a new shop where you have to add lets say 100 product calls to the api, you now have to add that x times for each variant due to the inventory level getting its own endpoint ? Isn't it possible to just send the inventory items with the variants within the same call for when you add a new product with variants ?