I have created a custom Fulfillment Service API (https://help.shopify.com/en/api/reference/shipping-and-fulfillment/fulfillmentservice)
I am correctly receiving the Shopify webhooks (fetch_tracking_numbers and fetch_stock).
I also have created a Shopify webhook triggered when a new order is paid (using "orders/paid" event) that creates the order in my app too.
Everything is working fine, and I can see the requests/responses going from Shopify to my app and vice-versa.
The problem is that when I create a new order in Shopify, the fulfillment status should turn automatically to "OPEN" but it does not. It use to do that a few weeks ago, and everything was working correctly.
To replicate that issue, here are the steps:
1) Create a new fulfillment service with "inventory_management": true (for stock updates) and "tracking_support": true (for tracking updates)
2) Create a new product in the Shopify admin and under the "Inventory managed by", select the newly created Fulfillment Service.
3) Now this product stock/tracking will be managed by my custom Fulfillment Service app.
4) Create a new order with that newly created product, and mark the order as "paid".
5) At this point, the "Fulfillment" status of the order is set to "Unfulfilled"
6) After a few minutes, it should turn to "Open" automatically, as it is the normal behaviour for an order managed by a fulfillment service. I know there's an API call that allows you to "open" and "unfulfilled" order, but I'd rather avoid that extra call complication - as it was working fine 2 weeks ago.
My problem is that none of my orders statuses turn to "Open" anymore, they just stay on status "Unfulfilled".
It used to work before: see my order id 1032395685969 (#1350) from August 2, 2019 at 10:38 am.
Does someone has any tips/clue on why this is not working anymore?
Nothing would have changed on Shopify's end of thing to cause this behaviour. Did the setting for "Automatically fulfill the order‘s line items" when orders are paid (found in the checkout settings of your shop) change? This would make a separate call (or clicking the button in the order) to fulfill the order necessary.
With this setting enabled, what would happen is once the order is marked as paid, Shopify would automatically send a fulfillment request to your service and set the fulfillment's status as pending. Once your service acknowledges that request, it would be set to open.
In any case, a fulfillment needs to exist in order for it to have a status of "Open". Whether it's automatic with the aforementioned setting, manually, or through our API, you'll need to create a fulfillment.
Also, one thing to note is that an orders fulfillment_status is different than a fulfillment's status. An order's fulfillment_status can be unfulfilled but not open. Similarly, a fulfillment's status can be open but not unfulfilled.
Here are all the valid fulfillment_status values that can be on an order.
- fulfilled: Every line item in the order has been fulfilled.
- null: None of the line items in the order have been fulfilled.
- partial: At least one line item in the order has been fulfilled.
- restocked: Every line item in the order has been restocked and the order canceled.
Here are all the valid status values that can be on a fulfillment.
- pending: The fulfillment is pending.
- open: The fulfillment has been acknowledged by the service and is in processing.
- success: The fulfillment was successful.
- cancelled: The fulfillment was cancelled.
- error: There was an error with the fulfillment request.
- failure: The fulfillment request failed.
Let me know if you still have concerns or questions.