Webhook fulfillment_orders/order_routing_complete Sending Empty JSON Payload After API Update

I’ve been using the fulfillment_orders/order_routing_complete webhook in Shopify. After updating from API version 2024-04 to versions 2024-07 and 2024-10, I’ve noticed that the webhook sends an empty JSON payload ({}) when triggered. This behavior is different from what I experienced with version 2024-04, where the webhook delivered the expected data.

Has anyone else encountered this issue? Is this an expected change in the newer API versions, or is there something specific I need to adjust in my setup to receive the full JSON data?

Any insights or suggestions would be greatly appreciated!

Thank you.

8 Likes

I wonder if you used the includeFields option (WebhookSubscription - GraphQL Admin) to select which fields to include in the webhook payload. And so moving to another version with different field names would not show them because of that filter. Otherwise it’s a bug and I’d advise to report it through the support via the partner dashboard.

Our app is currently working fine, and the fields are correctly set up. The only thing we did was update the API version. I also called the WebhookSubscriptions query to verify the setup, and we tried using the new TOML format for the configuration. In this case, when includeFields is not specified, all fields should be returned, and other webhooks are working without any issues. However, only this particular topic returns an empty JSON.

At this point, we believe it’s either a change in required scopes between versions or a bug.

FULFILLMENT_ORDERS_ORDER_ROUTING_COMPLETE: {
  deliveryMethod: DeliveryMethod.PubSub,
  pubSubProject: process.env.GOOGLE_CLOUD_PROJECT,
  pubSubTopic: "shopify-fulfillment-orders-order-routing-complete",
  includeFields: ["id", "status"],
}

Let me know if you’d like any adjustments!

In the code snippet you shared, I see includeFields: ["id", "status"]: have you tried without that config on the new version? I think that starting with the 2024-07 version, includeFields is strictly enforced. So that’d mean that the fulfillment_orders/order_routing_complete payload that is like

{
  "fulfillment_order": {
    "id": "gid://shopify/FulfillmentOrder/1",
    "status": "open"
  }
}

you need to specify the following rule: includeFields: ["fulfillment_order.id", "fulfillment_order.status"] (or you can just not use it as it seems to be the only fields in that payload).

3 Likes

The app is still working fine after the update. Thanks!