Inventory count not updated after Order fulfillment, Cancellation and Restocked

SKUs available count is not updated after the following events:-

  • Order fulfillment. Ideally, the count should be decreased.

  • Order cancellation with restock as True. Ideally, the count should be increased.

  • Order reverse fulfillment with disposition as RESTOCKED . Ideally, the count should be increased. (Source: Manage reverse deliveries)

In addition, we didn’t receive any response from the webhook (attached to event topic INVENTORY_LEVELS_UPDATE) for the above-mentioned events.

Looking for urgent help.
Thanks !!

Hey @Abhisek_Roy :waving_hand: - definitely happy to look into this. Could you share the API calls you’re making to request SKU count and if possible, share a shop ID?

If you’re also able to share the name of the app you’re using as it appears in the merchant’s admin that would be super helpful as well - can help us narrow down what the issue might be in our logs on our end here.

Hope to hear from you soon!

Hi @Alan_G, thanks for the reply to our query. I have the following information for you.

Custom APP: POPCOINS LOYALTY ARECOMEXP (https://partners.shopify.com/3180234/apps/241353555969/overview)

Store: arecomexp (arecomexp.myshopify.com)

Admin API: GraphQL (version 2025-04)

Order Create API: orderCreate - GraphQL Admin

Fulfillment: Done from the Shopify dashboard with AWB and tracking info.

Cancellation + Restock API: orderCancel - GraphQL Admin

Webhook Subscription Topic to receive inventory update: INVENTORY_ITEMS_UPDATE

Our goal is that when there is any delta (+ or -) update of SKU’s inventory count, then we will receive a push to our webhook for Order fulfillment and cancellation.

Need your help to reach our goal.

Thanks !!

Hey @Abhisek_Roy thanks for sharing that info! Just clarifying here - you’re not seeing the webhook trigger when you expect it to? If you’re able to share an example Order ID where you didn’t see the webhook trigger when expected, I can definitely take a closer look to see if we can narrow down a specific reason for this - are you just not seeing the webhook trigger at all? Does it trigger if you manually update inventory/stock levels in the admin (https://help.shopify.com/en/manual/products/inventory/managing-inventory-quantities/track_inventory)?

Hi @Alan_G
Webhook got triggered when the Merchant updates inventory / Stock from the dashboard (see the link below)

https://admin.shopify.com/store/arecomexp/products/inventory?selectedColumns=VARIANT_NAME%2CSKU%2CUNAVAILABLE_QUANTITY%2CCOMMITTED_QUANTITY%2CAVAILABLE_QUANTITY%2CON_HAND_QUANTITY%2CINCOMING_QUANTITY&location_id=68202332223&start=MQ%3D%3D

But when I fulfilled or cancelled orders, inventory counts did not change, and the webhook was not triggered.

(PAID + Fulfilled) order → OR2a008a01bd_368548 (inventory count is not reduced)

(UNPAID + Fulfilled + Cancelled) order → OR2a008a01bd_368551 (Inventory update is not received)

Hey @Abhisek_Roy :waving_hand: - thanks for sharing that example there, I think I have an answer for you after doing some testing on my end. For tracking inventory quantity level changes, you would actually want to use the INVENTORY_LEVELS_UPDATE webhook topic: Webhooks

I tested this on my end, and when an inventory item is assigned to a order, the Inventory_Item_Update webhook isn’t triggered like we’re seeing here, but the INVENTORY_LEVELS_UPDATE is and includes a payload like this:

{
  "inventory_item_id": 49167707537430,
  "location_id": 52569341974,
  "available": 616,
  "updated_at": "2025-04-16T11:05:41-04:00",
  "admin_graphql_api_id": "gid://shopify/InventoryLevel/86812557334?inventory_item_id=49167707537430"
}

I think this is what you’d be looking for here. Can you let me know if this works and if when you use this topic, you’re still seeing the inventory count itself not be reduced?

Hope this helps!

Hi @Alan_G
Thank you so much for the reply.

I also tried with the INVENTORY_LEVELS_UPDATE webhook, but haven’t received any update when the order was fulfilled or cancelled.

Rather, I am getting updates when I am changing inventory manually from the Shopify dashboard, see the link below.

https://admin.shopify.com/store/arecomexp/products/inventory?selectedColumns=VARIANT_NAME%2CSKU%2CUNAVAILABLE_QUANTITY%2CCOMMITTED_QUANTITY%2CAVAILABLE_QUANTITY%2CON_HAND_QUANTITY%2CINCOMING_QUANTITY&location_id=68202332223&start=MQ%3D%3D

Goal:
I am looking for a real-time inventory update from Shopify via. Webhook during order fulfillment and cancellation.

Can you please suggest something to achieve this goal?

Thanks !!

Hey @Abhisek_Roy - no worries, thanks for confirming your set up there too.

Right now, inventory is usually deducted at payment time, not upon fulfilment, so you wouldn’t see inventory move when the fulfillment is confirmed, only when the inventory is initially assigned to the order. This is meant to to prevent selling out-of-stock items, but restock operations definitely should trigger that webhook though, provided the item is tracked and the location matches. To track specific fulfillments, you can use the fulfillments/updated webhook.

If the SKU/inventory item is tracked, the restocks and changes in the admin itself should be triggering though. If you still see the available value jump in the Admin/API but never get a payload, could you share the approximate timestamp for when you made the product inventory adjustment in the admin and we can try to trace it?

Hope this helps - let me know if I can clarify anything as always here!

Hi @Alan_G
Thanks a lot for your reply.

As you said, inventory will be deducted when the order is fulfilled + Payment is done, I tried with a PREPAID order, did fulfillment, but no changes reflected on inventory, and didn’t get any response from INVENTORY_LEVELS_UPDATE webhook.

In addition, in the case of order cancellation, can you please tell us which combination will restock the inventory? We tested the following cases when no changes happened on the inventories.

  1. Unpaid (COD) order + Not fulfilled + Cancelled → ?
  2. Prepaid Order + Fulfilled → Cancelletion not possible → No Change (expected)
  3. Prepaid Order + Not fulfilled + Cancelled → ?
  4. Unpaid (COD) order + Fulfilled + Cancelled → ?

Thanks !!