A space to discuss GraphQL queries, mutations, troubleshooting, throttling, and best practices.
We have opted into "permits_sku_sharing" for our fulfillment service.
A few questions / observations:
1- This makes the fulfillment_service option in the variant properties respond with "manual". Is there a way to determine if we are assigned as a fulfillment_service option for a particular variant? I have found no way to do this (inventoryItem, inventoryLevel, etc).
2- We can set the fulfillment_service property through the variant endpoint, and we receive a 200 result. This routes our fulfillment orders correctly. Is this a reliable way to indicate a product is associated with a fulfillment service?
3- Is it possible to OPT OUT of sku sharing at some point? The result we get in response is "cannot be reverted via the FulfillmentServiceUpdate API". Based on the above questions, it seems that it may be more reliable in some circumstances to NOT have this option enabled, as it appears to create some unpredictability with fulfillment routing.
Thanks ---
Geoff B
Hey @gvbrown , thanks for getting in touch, you're right, that there's not currently a super straightforward way to determine if you are the assigned fulfillment service option for a particular variant - I could see how it might seem a little bit hidden. That said, there is a way to do this. Our changelog on this from last mentions that you'd have to use the location field to determine which fulfillment location an item is at. An example query you could use would look something like this:
{
productVariants (first:10, query:"location_id:'test'") {
edges {
node {
id
title
inventoryItem {
inventoryLevels (first:10) {
edges {
node {
id
location {
id
name
fulfillmentService {
id
serviceName
}
}
}
}
}
}
}
}
}
}
This would let you pull a particular fulfillment service id/service name for a particular location (for instance, if you know the location ID of your warehouse, etc. this would help narrow down specific variants). You could also use the query with the product_id query parameter if you had a specific product ID you wanted to look up.
My understanding is that it's not possible to opt out once the fulfillment service is created for a merchant's shop, but I do understand where you're coming from here. In terms of routing unpredictability, do you mean that it's difficult to determine which location(s) are holding onto a particular inventory item, etc during the fulfillment process? Just want to clarify so I can present a use case to our product team in order to look into this further for you.
Hope this helps and hope to hear from you soon. Happy to dig into this further!
Al | Shopify Developer Support
Developer Support @ Shopify
- Was this reply helpful? Click Like to let us know!
- Was your question answered? Mark it as an Accepted Solution
- To learn more visit Shopify.dev or the Shopify Web Design and Development Blog
Using the Rest API -
Using the Product end point, fulfillment_service will indicate the fulfillment service assigned if the store is not using shared skus. Otherwise, this option returns "manual".
When requesting a variant, using the end point below, there is no "location" property per variant.
https://shopify.dev/docs/api/admin-rest/2023-01/resources/product-variant#get-variants-variant-id
I can query the inventory_items endpoint using the variant and the location, but this always returns information, regardless of where the variant is currently assigned.
Using the connect inventory endpoint does assign us as a fulfillment service option, but there's two issues --
- There's no method to determine what the currently assigned fulfillment service is, when using shared skus (other than when an order is batched in, which is manageable, currently, but puts the burden of assigning fulfillment on the store).
- More importantly, there's no way to determine if a variant has or has not been connected, other than tracking on our side whether or not we had made a request to connect previously. This would be extremely useful from a performance standpoint, as we may be making unnecessary calls to connect when a variant has already been connected.
We are not opting in to sku sharing moving forward, which makes the process much more straightforward. But without a method to remove the option for existing stores, there does not appear to be a method to determine whether a sku has been connected to us for fulfillment or if it requires us to request a connection.
Thanks !