Updated Deadline: Aug 1st -- [Deprecation] Important changes to ProductVariant, Refund and Fulfillment APIs

Ryan
Shopify Staff
492 42 113

UPDATE JAN 2: 

https://ecommerce.shopify.com/c/api-announcements/t/deadline-reminder-important-changes-to-productva...

UPDATE SEP 14 

Hey Devs!

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:

X-Shopify-API-Deprecated-Reason

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"

 

Happy Coding!

 

UPDATE JUNE 28: 

Hey Devs,

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!

Cheers All!

Ryan

 

Hey Devs,

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.

Key dates

July 1st, 2018

  • Apps will no longer be able to create fulfillments without specifying a location
  • Apps will no longer be able to set inventory on the Product/Variant APIs

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.

If you have any questions about this change, please read our detailed FAQ or contact deprecations@shopify.com.

 

Thanks,

Shopify Apps Team

Ryan | Shopify 
 - Was my reply helpful? Click Like to let me know! 
 - Was your question answered? Mark it as an Accepted Solution
 - To learn more visit the Shopify Help Center or the Shopify Blog

Replies 149 (149)
Ryan
Shopify Staff
492 42 113

Hi Jurgen,

There is a daily automated to check to see if the app has made any deprecated calls within the past week.  Once there are no calls in the last week, the banner is removed.

Cheers,

Ryan | Shopify 
 - Was my reply helpful? Click Like to let me know! 
 - Was your question answered? Mark it as an Accepted Solution
 - To learn more visit the Shopify Help Center or the Shopify Blog

Jurgen_Feuchter
Shopify Partner
224 1 32

haha so I must wait a week :P Coolio haha thanks for the information. That should be added to the Locations Private Apps documentation. 

Cheers!

Entrepreneur, Developer, Geek, Gamer and very passionate about WEB development! :P

Need help with your Shopify Store? Contact me: jfeuchter@gmail.com :D
Jonathan-HA
Trailblazer
199 10 55

Hey Ryan,

We have one customer of our app who had recently switched to a multi-location inventory setup and their inventory items are currently connected to a "Custom fulfillment service" location.

Following the API docs, when we POST to `/inventory_levels/set.json`, we specify `disconnect_if_necessary:true` in the request.

However, only one of their inventory items was able to get a successful response and the rest are giving a 422 error with the message: "Could not deactivate item at its location"

Any ideas what could be causing this?

 

Co-Founder / Developer at Highview Apps
Our Shopify Apps: EZ Exporter | EZ Inventory | EZ Importer | EZ Notify | EZ Fulfill
Ryan
Shopify Staff
492 42 113

Hi Jonathan, generally that is because the item has open pending commitments (needs to be fulfilled on an order).  In order to force relocate these commitments to the new location you should use an /admin/inventory_levels/connect.json call with relocate_if_necessary: true.

 

 

Ryan | Shopify 
 - Was my reply helpful? Click Like to let me know! 
 - Was your question answered? Mark it as an Accepted Solution
 - To learn more visit the Shopify Help Center or the Shopify Blog

Jonathan-HA
Trailblazer
199 10 55

Hey Ryan,

Thanks for the explanation!

I was checking with the customer over the weekend and had him send me over a screenshot of the variant detail page and noticed a field called "Inventory managed by" and it was set to this 3rd Party Fuliifillment Service.

I asked him if it's possible for him to change that to "Shopify" but apparently they can't do that as it would affect their process.

So I just want to confirm: for them to be able to use Shopify's multi-location inventory feature, the "Inventory managed by" field has to be set to "Shopify" correct? And there's no other way around it?

Co-Founder / Developer at Highview Apps
Our Shopify Apps: EZ Exporter | EZ Inventory | EZ Importer | EZ Notify | EZ Fulfill
Ryan
Shopify Staff
492 42 113

So I just want to confirm: for them to be able to use Shopify's multi-location inventory feature, the "Inventory managed by" field has to be set to "Shopify" correct? And there's no other way around it?

It really depends on what you mean by this.  Having variants controlled by a fulfillment service just means that that variant is managed by the fulfillment service.  A variant can not be stocked at a fulfillment service ("legacy" location), and a standard location simultaneously. That is the only restriction on it, which is on a per variant level.

Ryan | Shopify 
 - Was my reply helpful? Click Like to let me know! 
 - Was your question answered? Mark it as an Accepted Solution
 - To learn more visit the Shopify Help Center or the Shopify Blog

Jonathan-HA
Trailblazer
199 10 55

Hey Ryan,

I think I understand.

So if they want to use Shopify's multi-location inventory feature, the "Inventory managed by" setting on the variant page will have to be set to "Shopify" right, since these are all Standard locations?

And if they change their mind later and want to go back to the Legacy location, they can change that setting back to that 3rd party fulfillment service but then they can't use the multi-location feature as you can't set the inventory on both the Legacy location and one of the Standard locations?

Co-Founder / Developer at Highview Apps
Our Shopify Apps: EZ Exporter | EZ Inventory | EZ Importer | EZ Notify | EZ Fulfill
Ryan
Shopify Staff
492 42 113

So if they want to use Shopify's multi-location inventory feature, the "Inventory managed by" setting on the variant page will have to be set to "Shopify"

I still don't know what you mean by this. What part of the feature?

An inventory item can be stocked at any amount of locations where legacy = false, but only one if legacy = true.  That is the restriction to inventory when using a fulfillment service to manage the item.  Setting an inventory item to managed by a fulfillment service, stocks that item at the location tied to that fulfillment service.

 

Hopefully that clears up the question?

Ryan | Shopify 
 - Was my reply helpful? Click Like to let me know! 
 - Was your question answered? Mark it as an Accepted Solution
 - To learn more visit the Shopify Help Center or the Shopify Blog

Jonathan-HA
Trailblazer
199 10 55

Hey Ryan,

Sorry for all these questions. 

The main thing I want to confirm is what the "Inventory managed by" setting should be for the merchant to be able to use multiple Standard locations. (for whatever reason, the UI also seems a little different in his store also, on our test store with multi-location enabled, it simply says "Fulfillment Service" instead of "Inventory managed by").

My assumption is this would need to be set to "Shopify" to be able to set inventory in the Standard locations, correct?

 

Co-Founder / Developer at Highview Apps
Our Shopify Apps: EZ Exporter | EZ Inventory | EZ Importer | EZ Notify | EZ Fulfill
Jonathan-HA
Trailblazer
199 10 55

Just realized I was basically going in circles.  What you said makes sense and I confirmed in the Shopify admin that you can only set inventory levels in multiple locations per variant if the "Inventory managed by" setting is set to "Shopify" (as the Location options disappear if you select something else).

Thanks and sorry again for all the comments!

Co-Founder / Developer at Highview Apps
Our Shopify Apps: EZ Exporter | EZ Inventory | EZ Importer | EZ Notify | EZ Fulfill