Inventory is the operational bridge between your sales channels, fulfillment providers, and back-office systems. Accurate inventory data enables effective order routing, helps prevent overselling, and keeps every channel aligned on what is available to ship now and in the near future.
The Inventory section contains all inventory information and activity for your business. In most cases, inventory syncs automatically between your connected 3PL or inventory management system and the app. You can also edit inventory manually when needed.
Inventory lists SKUs with inventory records and shows available, committed, on hand, inbound, and future quantities. This page is the central hub for monitoring stock, diagnosing issues, and making bulk updates. Inventory is always tracked at the SKU–location level. Totals shown in grouped views are calculated from individual location records and cannot be edited directly.
What you can do here
- Monitor stock across locations and SKUs
- Review location-level availability and commitments
- Identify negative or misaligned inventory
- Manage inventory records per location
- Import or export CSV files for bulk updates
Key Points
-
Group by SKU
- On: Calculated totals per SKU across locations for each SKU; unlocks Simulate totals for (integration-specific view).
- Off: Displays individual SKU–location records (required for edits and bulk actions); unlocks Hide virtual inventory, Do not track inventory, Source integration, and Entity ID filters.
-
Virtual vs. physical
- Physical = real units at locations; Virtual = calculated for routing/allocation.
- Use Hide virtual inventory (when Group by SKU is Off) to focus on physical location records.
-
Location-based inventory (core principle)
- Every inventory record belongs to a specific location.
- All edits, deletes, and tracking changes apply to SKU-location records only.
- Some locations may be configured with an infinite availability flag. When enabled, the platform treats that location as having unlimited stock for routing and availability purposes, regardless of the recorded on-hand quantity.
- Grouped totals are derived views and are not editable.
-
Bulk operations
- Import/export applies to SKU–location records.
- Bulk actions operate only on selected location-level rows.
- Totals automatically update after location-level changes.
Before you begin
- Confirm your 3PL or inventory system is connected and syncing with the app.
- Decide your working view:
- Grouped totals (by SKU) for channel-level availability and high-level analysis.
- Individual records (SKU–location) for operational edits and reconciliation.
Inventory Types
Inventory Relationship (core rule)
The platform always maintains the following relationship:
💡 Available = On Hand - Committed - Unavailable
This relationship is enforced at the location level.
Important constraints
- On Hand ≥ 0 (never negative)
- Committed ≥ 0 (never negative)
- Unavailable ≥ 0 (never negative)
- Available can be negative
If there is a misalignment between incoming warehouse data and calculated values, the platform may adjust Available and/or Unavailable to preserve the core relationship above.
Inventory types explained
| Inventory type | What it means | Source and behavior |
|---|---|---|
| On Hand | Total physical units at a location. | Typically provided by the warehouse/3PL. Always ≥ 0. |
| Committed | Units reserved for existing orders. | May come from the warehouse or be calculated by the platform. Always ≥ 0. |
| Unavailable | Units not sellable (for example, damaged or held). | Typically provided by the warehouse. Always ≥ 0. |
| Damaged | Units identified as damaged and not available for sale. Tracked separately from Unavailable. | Typically reported by the warehouse via ingest events. Always ≥ 0. |
| Hold | Units placed on hold (for example, pending inspection or quarantine). | Tracked separately from Unavailable. Always ≥ 0. |
| Available | Units currently sellable. | May come from the warehouse or be calculated. Can be negative. |
| Future | Units expected later (for example, pre-orders). | Added manually or via integration to support pre-orders. |
| Available to Promise | Represents the total quantity that can be promised to new orders, accounting for both current sellable stock and expected future inventory minus pre-order commitments (available + future − committedFuture). |
Calculated by the platform; not stored directly. |
| Committed Future | Future units already reserved for orders. | Tracks allocation against future inventory. |
| Inbound | Units in transit to a location (transfer or PO). Stored in the incoming field. |
Not yet part of On Hand until received. |
Filtering Inventory
- Go to Inventory → All Inventory.
- Use Group by SKU to toggle (enabled by default):
- On: See aggregated totals across all locations per SKU.
- Off: See individual records for each SKU–location pair.
Import or Export Inventory (CSV)
- Export: Use Export CSV to download current inventory records (often filtered to your current view for targeted analysis).
-
Import: Use Import CSV to upload updates to inventory.
- Bulk operations apply to individual records, not grouped totals.
- Validate column headers and SKU/location identifiers in your file.
- Start with a small sample to confirm results before large updates.
Make Manual Edits
- Go to Inventory → All Inventory.
- Turn Group by SKU Off.
- Locate the specific SKU-location record.
- Open the record and adjust inventory for that location.
- Save.
The platform recalculates grouped totals automatically after the location-level update.
Totals VS Individual Records
- Grouped view: Aggregated totals across locations (read-only).
- Individual view: Location-level records (editable).
- All business logic: routing, commitments, and availability, operates at the location level.
Core Filters
| Filter | Type | Usage | Notes/Schema |
|---|---|---|---|
| Search | Text input | Search inventory by SKU (substring). Example: EMOCK finds all SKUs containing “EMOCK”. |
- |
| Group by SKU | Boolean toggle | On: grouped totals by SKU. Off: individual SKU–location records. | Controls which conditional filters appear |
| Created | Date range | Filter by record creation date. | createdAt |
| Updated | Date range | Filter by last update date. | updatedAt |
| Product SKU | Product selector | Search/select products by attributes such as name or SKU. | - |
| Location | Multi-select | Filter by locations. Excludes “Exclude from Totals” by default; you can include them. | - |
| On Hand | Numeric with operators | Filter by physical stock. | onHand |
| Available | Numeric with operators | Filter by sellable stock (On Hand − Committed). | available |
| Tags | Array | Filter records by tags assigned to the inventory entity. | tags |
Conditional Filters
When Group by SKU = On
| Filter | Type | Usage |
|---|---|---|
| Simulate totals for | Integration dropdown | Preview totals as a specific integration sees them, honoring location exclusions. |
When Group by SKU = Off
| Filter | Type | Usage | Notes/Schema |
|---|---|---|---|
| Hide virtual inventory | Boolean toggle | Exclude virtual records from results. |
type (filters out virtual) |
| Do not track inventory | Boolean | Show/hide records with tracking disabled. | inventoryNotTracked |
| Source integration | Integration dropdown | Filter by integration managing the record. | integration |
| Entity ID | Text input | Filter by related entity (often orders). | entityId |
Viewing Inventory
| Column | Source | Description | Behavior/Usage |
|---|---|---|---|
| SKU (expandable) | sku |
The SKU identifier. | Expand to see more details. |
| Name (clickable) | Product lookup | Human-readable product name. | Opens the product details page. |
| Location |
locationId (name) |
Where stock is stored. | Displays the location name. |
| Available | available |
Sellable units. | Calculated as On Hand − Committed. |
| Committed | committed |
Units reserved for orders. | Helps assess allocation. |
| On Hand | onHand |
Physical units on shelves. | Inventory check baseline. |
| Inbound | incoming |
Units on the way. | Not yet part of On Hand. Plan near-term stock increases. |
| Source integration | integration |
The integration that performed the latest update for this SKU–location record. | Use to filter or identify which system last modified the record (for example, a 3PL or ecommerce channel). |
| Last event | event |
Most recent change type. Common values: ingest, adjust, ship, shipCancel, shipCancelRestock, fulfill, xferout, xferfulfill, xferin, receive, virtualCommit, futureShip, release, futureShipCancel, POSOrder, touch, custom, revise, return. |
Explains why the quantity changed and what operation triggered it. |
| Event Source | ptype |
The system type that triggered the last event. Values: wms (warehouse management system), pos (point of sale), erp, custom. |
Identify the category of system that originated the inventory change. |
| Updated | updatedAt |
Last modification time. | Gauge data freshness. |
| Adjusted by | user |
User who made the last manual adjustment. | Populated for manual changes. |
Optional (Hidden by Default)
| Column | Source | Description | Usage |
|---|---|---|---|
| Vendor SKU | vendorSKU |
Supplier’s SKU. | Useful for POs and vendor comms. |
| Avail + Inbound | Calculated | available + incoming |
Combines sellable and arriving units. |
| Avail to Promise | Calculated | available + future − committedFuture |
Understand total promisable quantity including pre-orders. |
| Future | future |
Expected units for pre-orders. | Plan for future availability. |
| Unavailable | unavailable |
Unsellable units (damaged, held). | Track problem inventory. |
| Damaged | damaged |
Units identified as damaged. | Track damaged stock separately from other unavailable inventory. |
| Hold | hold |
Units on hold (for example, quarantine or inspection) | Track held stock separately from damaged or unavailable inventory. |
| Committed Future | committedFuture |
Pre-order reservations. | Understand future allocation. |
| Commit Ship | commitShip |
Units committed for shipping. | Subset of committed. |
| Commit Transfer | commitXfer |
Units committed for transfers. | Subset of committed. |
| Adjust Quantity | quantity |
Change amount in the last event. | Size of the latest adjustment. |
| Last Order | orderId |
Order that caused the last change. | Link operational events to orders. |
| Last Event Entity | entityId |
Entity tied to the last event. | Identify the triggering object. |
| Entity Type | entityType |
Type of entity that triggered the last event. Possible values: orders, fulfillments, arrivals, receipts, shipments, inventory. |
Classify the triggering object and its context. |
| Created | createdAt |
When the record was created. | Track record start date. |
| Do Not Track Inventory | inventoryNotTracked |
Whether tracking is disabled. | Identify unmanaged SKUs. |
| Inventory Type | type |
physical or virtual (default physical). |
Distinguish real vs calculated. |
| Lot ID | lotId |
Lot or batch identifier for the inventory record. | Track inventory at the lot or batch level when lot-level traceability is required. |
Column Customization Options
- Use the Refresh icon to reload data.
- Resize columns directly on the page.
- Drag-and-drop columns to reorder them.
-
Open the column selector (squares icon in the top-right corner) to manage display settings:
- Show or hide specific columns
- Adjust layout with view modes: Comfortable (default), Compact, or Full
- Enable or disable Word Wrap
- Restore default settings at any time with Restore Defaults
Viewing Inventory History (Ledger)
Each inventory record maintains a full event history that shows every change made to that SKU–location pair over time.
To view inventory history:
- Go to Inventory → All Inventory.
- Select a SKU–location record to open its detail page.
- Review the event log, which shows each event in sequence with the event type, quantity change, source integration, related entity, and timestamp.
Each ledger entry includes:
-
Event type — the operation that caused the change (for example,
ship,receive,adjust) -
Event source (
ptype) — the category of system that triggered it (wms,erp,pos,custom) - Quantity change — the adjustment amount for that event
- Related entity — the order, fulfillment, arrival, shipment, or receipt linked to the event
- Timestamp — when the event was recorded
The ledger is read-only. It cannot be edited directly.
Bulk Actions
Select one or more rows with the checkboxes and choose the action from the toolbar.
Available Actions
| Action | What it does | When to use | Requirements and notes |
|---|---|---|---|
| Push | Resends the current inventory for the selected SKU-location records to connected sales channels and integrations. | Retry sending inventory updates for specific SKUs or locations if a selling channel did not reflect an organic inventory change (from a user edit or 3PL sync). | Not required after normal adjustments. Use only to resend inventory when a channel may have missed or failed to process a prior update. |
| Enable inventory tracking | Sets tracking on for selected items (inventoryNotTracked = false). |
Start tracking inventory for items that were previously unmanaged. | Ensure quantities are correct before enabling to avoid inaccurate availability. |
| Disable inventory tracking | Sets tracking off for selected items (inventoryNotTracked = true). |
Exclude items from inventory calculations (for example, services, digital goods, or externally managed SKUs). | Disabled items do not affect totals or availability. Use with care to avoid overselling. |
Inventory Details Page
Selecting a product in the All Inventory table by clicking the SKU or opening the row redirects you to the Inventory Details page for that SKU, where you can review a per-location breakdown of Available, Committed, On Hand, Inbound, and Future quantities, inspect recent inventory events and update timestamps, and confirm the Source integration and other record metadata before returning to the list.
Troubleshooting
Why don’t I see all my products on the Inventory page?
- The Inventory page shows inventory records for SKUs, not a full product catalog.
- A product can exist on the Products page but not appear in Inventory if the app has no inventory record for that SKU.
- To add it:
- Import inventory via CSV, or
- Wait for your 3PL to sync inventory for that product.
Totals look wrong or incomplete
- Check whether some locations are excluded from totals.
- Use Simulate totals for to audit how a specific integration sees inventory.
Quantities look stale
- The Updated column refreshes only when a quantity changes for a specific SKU–location record.
- If your 3PL submits inventory but the quantities remain the same, the Updated timestamp will not change.
- All submissions are still recorded in the Inventory Details ledger, even if no quantity difference is detected.
- To verify activity, open the SKU and review the Inventory Details page for recent ledger entries.
- Confirm your 3PL or inventory system’s most recent sync completed successfully.
Virtual records are cluttering the view
- Turn on Hide virtual inventory (available when Group by SKU is Off).
Need Help?
If you need additional assistance:
- Use Ask Pippen, our AI agent, located at the top of the app page.
- Submit a support request with as much relevant detail as possible. Learn how to submit a request.
- For urgent issues, email us directly at support@pipe17.com.
We're here to help you succeed with your operations.
Comments
0 comments