If you rely on Shopify’s inventory shipment webhooks, the platform just got a lot easier to work with. Starting with the 2026-10 API version, every shipment‑related webhook payload now carries an inventory_transfer_id, letting you pinpoint the exact inventory transfer that generated the shipment. In this post we’ll break down what changed, who needs to care, and how to update your code so you can start leveraging the new field today.
What Changed
Shopify added a new top‑level field called inventory_transfer_id to the payloads of eight inventory_shipment webhook topics: create, delete, add_items, remove_items, update_item_quantities, mark_in_transit, receive_items, and update_tracking. The field is a string containing the ID of the associated inventory_transfer record, or null if the shipment isn’t tied to a transfer. Here’s a trimmed example of a inventory_shipments/create payload after the update:
{"id":"gid://shopify/InventoryShipment/1234567890","inventory_item_id":"gid://shopify/InventoryItem/987654321","location_id":"gid://shopify/Location/111222333","inventory_transfer_id":"gid://shopify/InventoryTransfer/555666777","quantity":10,"created_at":"2026-10-01T12:34:56Z"}
Before this release, developers had to query the InventoryTransfer API separately and join the data manually to discover that link. The new field makes the relationship explicit, reducing latency, API calls, and code complexity.
Who Is Affected
The change is additive – it doesn’t break existing integrations. Any app or custom script that subscribes to the listed shipment webhooks will automatically start receiving the extra field once you upgrade to the 2026-10 version. Developers building fulfillment, inventory reconciliation, or analytics tools will see the biggest benefit, because they can now map shipments to transfers without extra lookups. Merchants themselves won’t notice a UI change, but they’ll benefit indirectly from faster, more reliable third‑party apps.
How to Update Your Integration
interface InventoryShipmentPayload { id: string; inventory_item_id: string; location_id: string; quantity: number; created_at: string; inventory_transfer_id?: string | null; // new field }
if (payload.inventory_transfer_id) { // fetch additional transfer details if needed await shopify.inventoryTransfer.get(payload.inventory_transfer_id); } else { // fallback logic for non‑transfer shipments }
Best Practices & Common Pitfalls
Conclusion & Next Steps
The addition of inventory_transfer_id to inventory shipment webhooks is a small change with a big payoff for developers building inventory‑centric solutions. By upgrading to the 2026‑10 API version, updating your payload schema, and testing the new field, you’ll eliminate a noisy data‑join step and make your app more performant.
Ready to get started? Update your webhook subscriptions today, fire a test shipment, and watch the new ID appear in the payload. Need help or have questions? Drop a comment below or reach out on the Shopify Community forums – we’re happy to help you make the most of this update.
