For processing the order as 3PL we have subscribed to fulfillment_orders/fulfillment_request_submitted and then we process it. We have registered our location as fulfillment service. Shopify only send this webhook automatically only if we select order processing > Automatically fulfill the order‘s line items. This is not feasible as the client store may have other fulfillment location which do not want this and Only in Plus account, you can setup this per location level. Our clients stores are not using Plus.
I have tried to use fuflillment_orders/order_routing_complete, But it seems not much reliable. It’s not coming for all the orders.
I need a help which events will solve my use case. It should be most reliable event.
Hey @Nirmal_Patel The premise here is slightly inverted. fulfillment_orders/fulfillment_request_submitted isn’t tied to the “Automatically fulfill the order’s line items” setting. Per the WebhookSubscriptionTopic enum, it fires “when a merchant submits a fulfillment request to a 3PL.” With automatic fulfillment off, that request isn’t submitted until the merchant clicks Request fulfillment on the order, so the event is reliable; the missing trigger is the merchant action, not the webhook. There’s also a second channel you already have as a registered fulfillment service. Your app provides a callbackUrl, and Shopify posts to the callback_url/fulfillment_order_notification endpoint to send fulfillment and cancellation requests (fulfillmentServiceUpdate). That callback is the primary notification path for a 3PL and is worth confirming alongside the webhook subscription.
fulfillment_orders/order_routing_complete answers a different question. It fires once order routing finishes and the fulfillment orders are guaranteed to exist, roughly a second or two after the order is created, and it tells you a fulfillment order has been assigned to your location, not that the merchant has asked you to fulfill it. If your goal is to act the moment an order is routed to you, before any merchant request, that’s the right event. If you’re waiting for a fulfillment request, it’s the wrong signal, and its absence on some orders may be expected rather than unreliable.
If order_routing_complete is missing for orders that did route a fulfillment order to your location, share a couple of those order IDs and the fulfillment-order scopes your app holds (read_assigned_fulfillment_orders versus the broader read_third_party_fulfillment_orders) and I can take a closer look for you - thanks!