The Inventory Details page provides visibility into inventory levels, historical changes, and manual adjustment options. For bundle products, the app can calculate availability based on component inventory levels, to help you avoid overselling and reduce manual work.
This page helps you:
- Track real-time and historical inventory changes
- Manage stock levels across multiple locations
- Understand bundled product availability
Steps
- In the app, go to Inventory → All Inventory.
- Select a product (SKU) to open the Inventory Details page.
- Use the Location dropdown to view inventory for a specific location.
- (Optional) Update one or more inventory counts. Select Edit in the page header to enter edit mode, update On Hand, Unavailable, or any other editable field in a single pass, then select Save changes in the sticky footer. You can also click an individual editable field inline to update only that value.
- Use the Inventory Ledger to review what changed, when, and why.
Product Information
| Element | Description |
|---|---|
| Product Name | Displays the name of the product associated with the SKU. |
| SKU Display | Shows the product SKU as a clickable link to the Product Details page. |
| Actions Available |
• Lock Inventory: Stops automatic ingests from overwriting the record (inventoryNotTracked = true). When locking, you choose one of four options for how to handle current quantities:Keep current inventory levelsClear on hand inventory (sets On Hand to 0, keeps Committed and Unavailable)Clear available inventory (adjusts On Hand so Available becomes 0)Manually set inventory levelsManual adjustments remain allowed while the record is locked. |
• Unlock Inventory: Re-enables automatic ingests for the record (inventoryNotTracked = false). When unlocking, you choose between keeping current inventory levels or reverting to the state the record was in before it was locked (retrieved from the ledger history). |
|
| • Copy: Creates a new inventory record for the same SKU at a different location. All quantity fields default to 0 and must be entered manually. Ledger history, integration settings, and existing values are not carried over. | |
| • Sync: Pushes current inventory levels for the selected record out to connected sales channels and integrations. This is a one-way, push-only operation. | |
| • Delete: Permanently removes the current SKU–location inventory record. This deletes a single record only. After deletion, you are redirected to the All Inventory list. | |
| Location Dropdown | Switch between different stocking locations to view inventory levels per location. |
| View Location | Redirects to the details page for the selected location. |
Inventory Status
You can edit inventory fields in two ways:
- Select Edit in the page header to enter edit mode and update multiple fields together, for example, On Hand and Unavailable at the same time, then select Save changes in the sticky footer.
- Click an individual editable field to update only that value inline. Available is calculated automatically and is read-only.
| Field | Description |
|---|---|
| On Hand | Physical inventory available for shipment at the stock location. On Hand = Available + Committed + Unavailable. |
| Committed | Inventory reserved for existing orders (includes commitShip and commitXfer). |
| Available | Inventory available to sell. Calculated automatically as Available = On Hand − Committed − Unavailable. This field is read-only and cannot be edited directly. Adjust On Hand, Committed, or Unavailable to change it. |
| Future | Inventory expected but not yet received (for pre-orders). Must be added manually. |
| Committed Future | Future inventory reserved for existing orders (pre-orders). |
| Inbound | Inventory in transit from transfer or purchase orders. |
| Unavailable | Inventory that cannot be sold or shipped. |
Use Edit in the page header when you need to change On Hand together with Committed or Unavailable. Because Available is recalculated from the other counts on every save, updating them one at a time can produce intermediate values that do not match what you intended. Editing them together avoids that.
Bundled Items Section
This section appears only for bundle products. It shows a table of all component SKUs, each row showing:
- SKU (linked to the component's Product Details page)
- Product Name
- Quantity In Bundle (how many units of this component are required per bundle)
- Current inventory levels for the component: On Hand, Committed, Available, Future, Committed Future, Inbound, and Unavailable
Bundle availability behavior depends on the location configuration:
- If the location does not preserve bundles, the app can calculate bundle availability based on components. A common approach is to limit bundle availability by the lowest component availability (based on the required quantities).
- If the location preserves bundles (Preserve Bundles flag enabled), bundle availability may be managed differently, and component-based calculation may not apply for that location.
Activity Section with Inventory Ledger
Activity Chart/Ledger Diagram
Displays a line chart of the last 100 ledger events for the selected SKU–location record. Each of the following quantities is plotted as a separate line over time: On Hand, Committed, Available, Future, Committed Future, Inbound, and Unavailable. Use this chart to spot trends, sudden drops, or unexpected spikes before drilling into the ledger table. Click View last 100 ledger events to expand or hide the chart.
Inventory Ledger Table Filters
| Filter | Description |
|---|---|
| Select Date Range | Filter events by creation or update date. Use the date picker to select a start and end date. |
| Event Type | Filter by type of inventory event (see table below). |
| Inventory ID | Filter by a specific inventory record ID. Useful for tracking single transactions. |
| Entity ID | Filter by the related entity (order, fulfillment, transfer, etc.). |
| Available | Numeric filter with comparison operators (equals, greater than, less than) to view entries by available inventory conditions. |
| On Hand | Numeric filter with comparison operators (equals, greater than, less than) to view entries by on-hand inventory conditions. |
Event Types and Meanings
| Event Type | Description |
|---|---|
| ingest | Quantities reported by the fulfillment channel (warehouse), typically from nightly syncs. |
| adjust | Manual inventory update or bundle recalculation. |
| touch | Simulated update to trigger sync/recalculation (no quantity change). |
| ship | Shipping request created – reduces available, increases committed and commitShip. |
| fulfill | Order fulfilled – reduces committed, onHand, and commitShip. |
| shipCancel | Shipping request canceled – decreases committed, adjusts onHand and commitShip. |
| shipCancelRestock | Canceled shipment with restock – reduces committed, increases available. |
| receive | Stock received – increases available, decreases incoming. |
| xferout | Transfer order initiated from location – reduces available, increases committed. |
| xferin | Transfer/purchase order to location – increases incoming. |
| xferfulfill | Transfer order fulfilled – reduces committed, onHand, and commitXfer. |
| futureShip | Pending shipping request – increases committedFuture. |
| release | Pending inventory becomes available – moves from committedFuture to committed. |
| futureShipCancel | Canceled future shipping request – reduces committedFuture. |
| virtualCommit | Virtual location inventory adjustment for order processing. |
| POSOrder | Point of sale order – reduces available and onHand. |
| revise | Inventory revision or correction applied to a record. Used to reconcile discrepancies between the platform and external systems. |
| return | Inventory adjustment triggered by a return order. Updates stock levels when returned items are processed back into a location. |
ℹ️ The custom event type is a standard event available to any connector, not exclusive to Logiwa IO. Its effect on inventory levels depends on the specific connector's implementation. Some connectors use it for informational purposes only (such as reason codes), while others may use it to apply inventory adjustments. Check the behavior of your specific integration if you see unexpected custom events in the ledger.
View JSON Option
Each ledger event includes a View JSON option. This opens the complete raw data structure, including all metadata. It is useful for debugging and in-depth analysis.
Add Custom Column
The Inventory Ledger table supports custom columns, allowing you to surface additional data from each ledger event, including fields from custom events or any standard fields in the ledger JSON.
Click Add Custom Column (top right of the Activity section) to open the modal. Each column is defined by a small JavaScript snippet that receives the ledger event object as input and returns the value to display.
| Field | Description |
|---|---|
| Name | The column header label shown in the ledger table. |
| Fallback | Value displayed if the code returns null or blank (e.g., - or a default warehouse code). |
| Code | JavaScript snippet that returns the value. The ledger event JSON is passed in as the input variable. |
| Input | A read-only preview of the current event's JSON structure — useful for identifying field names. You can paste a copied JSON payload here for testing. |
| Output | Shows the result of running your code against the Input. Displays "Valid Code" and the computed value when successful. |
Writing the Code
The entire ledger event JSON is available as input. You can return any top-level or nested field:
// Return a standard field
try {
return input.locationId;
} catch (err) {
return '-';
}
// Return a nested field from the internal object (e.g. on custom events)
try {
return input.internal.fromWarehouseCode;
} catch (err) {
return '-';
}Tip: Click View JSON on any ledger row to inspect the full event structure before writing your column code. You can copy that JSON and paste it into the Input panel of the modal to test your expression before saving.
Steps
- In the Activity section, click Add Custom Column.
- Enter a Name for the column.
- (Optional) Enter a Fallback value for when the field is missing or null.
- Write your expression in the Code editor.
- Click Test to validate. The Output panel shows the result.
- Click Save. The new column appears in the ledger table.
To remove or update a column, click the ⋮ menu icon in the column header and choose Delete.
Troubleshooting and Best Practices
Manual Inventory Adjustments
| Challenge | Best Practice | Why It Matters |
|---|---|---|
| Unsure which field to update | Adjust the On Hand value in most cases | Other fields (Future, Inbound, etc.) have specific purposes and may not sync correctly if misused |
| No sync triggered after saving | Actually change the value up or down before saving | Simply saving without a change won’t trigger outbound sync |
| Manual changes keep disappearing | Automatic 3PL ingests overwrite manual edits, often nightly | Use manual adjustments only when absolutely necessary and expect them to be replaced by ingests |
| Adjusted wrong location | Always confirm the Location Dropdown before editing | Prevents accidental changes at the wrong stock location |
Future Inventory Management
| Challenge | Best Practice | Why It Matters |
|---|---|---|
| Want to sell more than current inventory | Use Future inventory when expecting inbound stock | Supports pre-orders and avoids stockouts |
| Unsure how future quantities affect selling | Apply the formula: Available to Promise = OnHand – Committed + Future – Future Committed – Buffer | Helps calculate accurate sellable quantities |
| Manual effort for many SKUs | Use CSV import to bulk-manage Future values | Saves time and ensures consistency across locations |
| Forgetting to reduce Future inventory | Track receipts; Future values reduce automatically when stock is received | Prevents overselling and misalignment with actual stock |
Bundle Inventory Management
| Challenge | Best Practice | Why It Matters |
|---|---|---|
| Bundle availability looks wrong | Remember: bundle inventory = lowest available inventory among components | Prevents confusion when bundle inventory doesn’t match On Hand |
| Bundle not updating after component changes | Force recalculation: edit a component SKU’s On Hand and save | Triggers bundle recalculation |
| Attempting direct bundle edits | Do not edit bundle inventory directly | Only component SKUs drive bundle availability |
Location Management
| Challenge | Best Practice | Why It Matters |
|---|---|---|
| Edited inventory at the wrong location | Double-check the Location Dropdown | Prevents incorrect edits |
| Totals don’t match across systems | Use location merging and exclusions to configure reporting | Ensures integrations receive the right values |
| Unsure how e-commerce channels see stock | Use the Simulate totals for filter | Lets you preview what selling channels will receive |
Using the Inventory Ledger
| Challenge | Best Practice | Why It Matters |
|---|---|---|
| Can’t find the right events | Use filters for date range, event type, or Entity ID | Narrows results to the transactions you need |
| Unexpected “adjust” events | Often indicates bundle recalculation | Helps separate manual changes from system-driven recalculations |
| Unsure who changed inventory | Look for user attribution in the ledger; ingests show integration updates | Traces accountability and source of change |
| Need more technical details | Use View JSON for raw data | Supports advanced debugging |
Integration Considerations
| Challenge | Best Practice | Why It Matters |
|---|---|---|
| Manual changes keep being overwritten | Be aware that most 3PL connectors sync nightly | Avoid wasted effort by timing manual edits |
| Selling channels not updated | Outbound updates usually take minutes | Verify changes synced correctly to Shopify or other channels |
| Overselling risk | Use inventory buffers in selling channel integrations | Protects against stock discrepancies |
General Usage Tips
| Tip | Why It Matters |
|---|---|
| Use SKU links to go directly to Product Details | Saves time when managing product-level settings |
| Switch locations quickly with the dropdown | Makes location-by-location comparisons easier |
| Use CSV import/export for bulk operations | Efficient for large catalog updates |
| Review ledger activity regularly | Catches errors or sync delays early |
| Cross-reference with your 3PL | Ensures data accuracy across systems |
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