Background:
Shopify introduced a platform change affecting third-party fulfillment apps. Order management apps can no longer create fulfillments for orders assigned to a different app’s fulfillment service (Shopify link).
In practice, this means a warehouse or fulfillment app may only mark an order as fulfilled if that order (or its fulfillment order) is assigned to the location/fulfillment service associated with that app.
Apps can still read and manage orders globally, but Shopify’s API now prevents fulfillment creation if the order’s items are assigned to another app’s location. Fulfillment service apps can only fulfill orders assigned to them, while orders assigned to merchant-managed (in-house) locations remain fulfillable by order management apps as usual.
Shiphero Default Behaviour and Premise
The Premise:
All orders to be fulfilled by Shiphero need to be assigned to a merchant location.
Shiphero Default Behaviour:
Starting on June 6th, 2025: If a fulfillment-order line is assigned to a location not owned by ShipHero, we set the fulfillable_quantity to 0 or calculate the right fulfillable quantity based on the allocation.
How to configure Shopify to correctly assign orders to merchant locations?
- On the most essential use case, you want your whole order or order lines to be assigned to Shiphero based on inventory available.
For this scenario you need to make sure the default merchant locations are in your order routing rules ranked first:
Step 1: You need to go to Settings: -> Shipping and delivery and click on Order routing:
Step 2: This is how it looks if it's on default settings:
Step 3: Click on Add Rule:
Step 4: Select ranked locations:
Step 5: Create a new location group to contain the 3rd Party Locations:
Step 6: Move the 3rd party locations to the new location group and click done:
Step 7: Move the new rule to be the second priority:
Step 8: Then click save:
Step 9:
✅ That's it! Now your orders should be routed first to Shiphero if the inventory is available and it's the closest location to the destination address and to the 3rd Party if it's not.
My use case is more complex I need to map orders / line items to certain location based on destination country, or other conditions, what can I do?
Shopify Flow empowers you to build custom automations that help you run your business more efficiently. Flow makes it easy to create unique workflows without needing to code, giving you more time to focus on growing your business. Connect your apps together to complete even more jobs. From automating inventory tasks like reordering and restocking to managing fraud concerns, Flow can support nearly any task you can think of.
Let's imagine an scenario where customer needs to map orders that are not going to US or CA into a location from China. MX orders would go to US or CA locations usually due to proximity, so a different approach is needed.
You can setup a Shopify Flow using the following steps:
Define the trigger:
In this case we want to run this on order creation.
Define the conditions:
Since more than a fulfillment order will be created per order we need to select all of the FOs per order:
And then iterate using foreach
Finally it will look like this:
This will, on order creation, if the country is not US or CA, assign the fulfillment orders to a different location defined in the last step.
More Resources:
Smart Order Routing: https://www.shopify.com/blog/smart-order-routing
How to use order routing logic: https://help.shopify.com/en/manual/fulfillment/setup/order-routing
Shopify Flow: https://www.shopify.com/flow