· there's endpoint to retrieve all requested fulfillment orders and requested cancellation, why do we still need to provide callback url?
· for the orders requested fulfillment, can we create fulfillment without accepting fulfillment request?
· can we create fulfillment for orders not requested fulfillment or not retrieved in assigned_fulfillment_orders endpoint
> there's endpoint to retrieve all requested fulfillment orders and requested cancellation, why do we still need to provide callback url?
callback_url is necessary. It enables reactive flow for fulfillment. Same way as notifications in smartphones let us react to new messages on time.
In addition to receiving fulfillment request pings, callback_url can also be used to support sharing tracking numbers and inventory levels with Shopify.
> for the orders requested fulfillment, can we create fulfillment without accepting fulfillment request?
Accepting fulfillment requests is mandatory for fulfillment services. It shows merchants that the fulfillment order will be fulfilled. It's expected to accept fulfillment requests as they arrive before packing goods for delivery. It shows the merchant that there is a fulfillment process happening on your side.
Out of interest, why do you want to skip this step?
> can we create fulfillment for orders not requested fulfillment or not retrieved in assigned_fulfillment_orders endpoint
It would mean that your app acts not like a fulfillment service but an order management app + fulfillment service. It would mean that your app wants to send fulfillment requests and act like a merchant. With "write_third_party_fulfillment_orders" permission, you will be able to fulfill fulfillment orders not yet requested to be fulfilled, and also fulfill fulfillment orders assigned to other fulfillment services. Once again, it is not a behavior expected from a fulfillment service.
If the merchant enables "Automatically fulfill the order‘s line items" in Shopify Admin, fulfillment requests will be created automatically once new orders are received and routed to fulfillment service locations.
I have a similar issue. We manage our fulfilment internally and our B2C Shopify sites are a very small part of our business. As a result of having to move over to the 'fulfillment order' model, we had to enter an API endpoint into the fulfillment service. Since we use IP filtering to protect all of our externally visible APIs, we had to enter a dummy API endpoint, since Shopify will not provide an IP address range for API calls.
So the process is now in production and working fine, except we now get error notifications from Shopify as it is failing to send the fulfilment callbacks to the dummy API. I will look to see if I can find some publicly accessible 3rd party system I can dump these API calls.
This is just a waste of resources, and would be much easier if we could just turn off the call back process.
Any help to clean this up would be appreciated.
Please can you explain your response in some more detail. If I cannot receive a notification from Shopify since you do not provide an IP address range, how will the webhooks (?) resolve this issue? and which methods are you referring too?
I just want to add to this.
The Callback URL is completely unauthenticated as well, no session, no query params, just a "kind" value in the payload... The Shopify API tools are unable to turn this request into a usable session to query the store admin api, so I don't "really" know which store it is or whether I actually have requests.
Whereas the Webhooks are totally authenticated, and provide the right information to start an authenticated request using the shopify-api tools in node.
I've just set up a URL for those callback requests, and ignore them... the Webhook setup is already required for the mandatory webhooks, so it's just extra steps to randomly add a callback url for this specific instance