Using the Inventory Details Page

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

  1. In the app, go to Inventory → All Inventory.
  2. Select a product (SKU) to open the Inventory Details page.
  3. Use the Location dropdown to view inventory for a specific location.
  4. (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.
  5. 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: 

  1. 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. 
  2. 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 HandCommittedAvailableFutureCommitted FutureInbound, 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

  1. In the Activity section, click Add Custom Column.
  2. Enter a Name for the column.
  3. (Optional) Enter a Fallback value for when the field is missing or null.
  4. Write your expression in the Code editor.
  5. Click Test to validate. The Output panel shows the result.
  6. 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:

We're here to help you succeed with your operations.

Was this article helpful?
0 out of 0 found this helpful

Comments

0 comments

Article is closed for comments.

Have more questions?
Submit a request
Share it, if you like it.