Receiving empty payload on inventory_levels/update webhook when multiple inventory items are updated (Shopify React Router app, API 2026-01)

Hi everyone,

I’m working on a Shopify app using the Shopify React Router template with API version 2026-01.
I’m using the built-in webhook handler:

const { topic, shop, payload } = await authenticate.webhook(request);


The issue

When a merchant updates a single product’s inventory or multiple products at once (bulk editor), I receive:

  • the correct number of webhook calls (one per item)

  • but the payload is empty or {} for many of them

So my webhook handler receives:

{}

even though Shopify clearly sends one webhook per item.


Details

  • App type: Shopify React Router template

  • Webhook: inventory_levels/update

  • API version: 2026-01

  • No custom body parsers

  • I am not calling request.json(), request.text(), or any manual stream reading

  • Webhook code looks like:

export const action = async ({ request }) => {
  const { topic, shop, payload } = await authenticate.webhook(request);

  console.log("payload:", payload);
  return new Response("ok");
};


Questions

  1. Is this expected behavior for inventory_levels/update during bulk inventory changes?

  2. Does Shopify intentionally send “light” or empty payloads for high-volume inventory updates?

  3. Is there a recommended fallback pattern (e.g., fetching the inventory item using the Admin API) when payload is empty?

  4. Is this a known issue for API version 2026-01 or the new React Router app template?

DUDE, stop spamming with your AI nonsense. You literally left this in there:

Here is a clean, clear Shopify-Community-style answer you can post.
(No extra suggestions, just the explanation.)

Thank you, Luke. Could you please help me with my issue as well?