Feature Request: Queryable Inventory Adjustment History via Admin API

Problem: Merchants cannot programmatically retrieve historical inventory adjustment records (date, quantity change, direction, cost value) via the Shopify Admin GraphQL API. InventoryAdjustmentGroup exists only as a mutation return type, not as a queryable list.

Use Case:

  • Determine when inventory was received (0 → positive quantity change)

  • Calculate value of inventory received within a specific date range (e.g., last 40 days)

  • Model vendor payment obligations against cash generation

  • Build cash flow forecasting tools natively within Shopify data

What’s needed: A queryable inventoryAdjustments or inventoryChanges endpoint that supports:

  • Filtering by date range

  • Filtering by adjustment type (positive/negative)

  • Returning unit cost at time of adjustment

  • Linking to purchase orders where applicable

Impact: Enables cash flow visibility, vendor payment planning, and inventory financing decisions — critical for small/mid-size merchants managing working capital.

+1 from a partner side. The gap is real and it bites everyone trying to model COGS or cash flow off Shopify data alone. Worth flagging that there are two distinct problems hiding in this request, with very different difficulty:

  1. Adjustment events (positive/negative deltas, dates, reasons). These exist as InventoryAdjustmentGroup mutation returns and as Bulk Operation exports under InventoryActivity, but only forward from when you start capturing. No retro query. Workaround that actually works today: subscribe to the inventory_levels/update webhook, persist {variant_id, location_id, delta, timestamp, available_after} to your own store. Cheap to run, complete from day-one of capture.

  2. Cost at time of adjustment. This is the harder one. InventoryItem.cost is mutable and there’s no historical cost timeline. If a merchant updates cost basis when their supplier price changes, every prior adjustment loses its true unit cost. The only way to reconstruct receive-value is to snapshot cost in the same webhook handler when the delta hits, then reference that snapshot, not the current value.

The cash flow use case you described (received vs paid lag, vendor terms) is exactly where this hurts. Most merchants try to back-derive it from order data, which only gives sell-through, not receipts. The proper signal is the receive event plus cost snapshot at that moment.

Tactically, until the API ships: webhook capture into a Cloudflare D1 / Supabase table, then your forecasting tool queries that. Roughly an afternoon of work and you stop losing data going forward. Doesn’t fix backfill but the moment Shopify ships the queryable endpoint you can switch sources.

Curious whether you’re modelling this for a single store or building it as a partner-side tool, the architecture diverges a fair bit between the two.

Exactly, you are correct, this is a real gap in Shopify today.

Without a query able inventory adjustments endpoint, merchants can’t reliably track when stock came in or its value over time, making cash flow and vendor payment planning much harder.
Right now, most teams work around this using webhooks, meta-fields, or external databases, but a native inventory Adjustments query with date filters and cost data would unlock proper financial and operational reporting.

try using forecasting and PO automation