Inventory management apps
Inventory management apps provide merchants with various ways to manage their inventory. For example, an inventory management app might query and adjust inventory quantities on behalf of a merchant.
This guide describes the inventory management lifecycle, provides use cases for inventory management apps, and offers some developer tools and resources to get you started.
How it worksAnchor link to section titled "How it works"
Inventory is the set of items that a merchant tracks and uses to conduct their business. This can include items that are physically at a location and ready to be sold, items that are incoming to a merchant's location, and items that are set aside for holds or inspection.
Merchants track inventory to avoid selling products that have run out of stock, and determine when they need to order or make more of a product. Apps and third-party logistics providers can automate the inventory management process by querying and adjusting inventory quantities on behalf of merchants.
The following diagram shows some of the inventory management activities that an app or third-party logistics provider can perform in the context of an order lifecycle:
- Customers place and receive orders that contain product variants.
- Shopify decrements the available inventory quantity for product variants that are included in an order, and increments the committed inventory quantity for the order. After the order is fulfilled, Shopify decrements the committed inventory quantity.
- Apps or third-party logistics providers automate the inventory management process by querying inventory quantities at one or more locations, managing inventory quantities, and moving inventory quantities between states.
- Merchants or third-party fulfillment services track inventory in the Shopify admin and fulfill orders.
Inventory statesAnchor link to section titled "Inventory states"
An inventory state represents the quantities of a product at a specific location or quantities that have been committed to orders.
Inventory is grouped into different states. The
on_hand state is a grouping that equals the sum of inventory quantities in the
reserved states. The
reserved states are mutually exclusive.
||The inventory that’s on its way to a merchant's location. For example, the inventory might be in an incoming shipment. Incoming inventory isn’t available to sell until it has been received and its state has been changed to
||The total number of units that are physically at a location. The
||The inventory that a merchant can sell. Available inventory isn’t committed to any orders and isn’t part of incoming transfers.|
||The number of units that are part of a placed order but aren't fulfilled. When a draft order is created, the inventory isn't committed until the draft order is completed and an order is created.|
||The on-hand units that are temporarily set aside. For example, a merchant might want to set on-hand units aside for holds or inspection. Inventory quantities in a
The following diagram shows the relationships between inventory states and the GraphQL Admin API query or mutation that's executed:
inventoryItemqueries retrieve inventory quantities in the
inventoryAdjustQuantitiesmutation adjusts the inventory quantity for a given product, state, or location combination by the given delta. For example, if the previous inventory count in the
availablestate is 100, and you want to change it to 102, then the given delta (difference) is 2.
inventorySetOnHandQuantitiesmutation explicitly sets the quantity of inventory in the
on_handstate to the given value.
inventoryMoveQuantitiesmutation moves the quantity of inventory between the
Common use cases for managing inventory include the following:
- Manage what customers can purchase on the merchant's sales channels
- Organize and manage goods throughout the supply chain
- Determine when to make a purchase order to increase product quantities
- Centralize inventory and order data so that merchants can sell across multiple online and offline channels, and use multiple warehouses
Your app can subscribe to the following inventory-related webhooks. For more information on webhook payloads, refer to the
InventoryLevel reference topics.
||Occurs when an inventory item is created.|
||Occurs when an inventory item is updated.|
||Occurs when an inventory item is deleted.|
||Occurs when an inventory level is connected.|
||Occurs when an inventory level is disconnected.|
||Occurs when an inventory level is updated.|
Developer tools and resourcesAnchor link to section titled "Developer tools and resources"
Explore the following developer tools and resources to learn more about managing inventory.
Consult the GraphQL Admin API reference to learn more about the InventoryLevel object.
Consult the GraphQL Admin API reference to learn more about the InventoryItem object.
Consult the REST Admin API reference to learn more about the InventoryLevel resource.
LimitationsAnchor link to section titled "Limitations"
You can't use the Admin API to adjust or move inventory quantities in the
committed state. Inventory quantities in the
committed state are only affected by the creation and fulfillment of a merchant's orders.