> For the complete documentation index, see [llms.txt](https://docs.in8sync.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.in8sync.com/client-admin-guide/creating-catalogs/inventory-management.md).

# Inventory

How a catalog includes per-location inventory data, and where every stock number actually comes from.

<code class="expression">space.vars.productName</code> does **not** manage inventory. Stock levels live in NetSuite. A catalog reads them when it's built and ships them to the portal as a snapshot. Adjustments — receiving, transfers, fulfillments — all happen in NetSuite, and the catalog reflects them on the next rebuild.

For the most up-to-date stock numbers, you can also configure the **Product Locations** page block to fetch live inventory directly from NetSuite as the user is browsing.

## When you'd use this

* Configuring a catalog that needs to display stock per location.
* Diagnosing why a portal's stock numbers look wrong or out of date.
* Trimming a catalog's output size by removing inventory data the portal doesn't use.
* Setting up the Product Locations block to show live stock levels from NetSuite in real time.

## The Locations toggle

In the Edit Catalog page → **Settings** section, the **Locations** toggle is what brings inventory data into the catalog output.

| Toggle state | What gets included                                                                                                                  |
| ------------ | ----------------------------------------------------------------------------------------------------------------------------------- |
| **On**       | Per-location stock data for every item. The output carries quantities broken down by each NetSuite location the item is stocked at. |
| **Off**      | No location-level inventory data. Items appear in the catalog but without stock breakdown.                                          |

If you also want the location-level *availability* number (on-hand minus committed), that's covered when Locations is on.

## What stock numbers exist in NetSuite

NetSuite tracks several quantities per item per location. The catalog can surface any of them:

| Quantity      | Meaning                                                                                      |
| ------------- | -------------------------------------------------------------------------------------------- |
| **On Hand**   | Physical quantity at the location.                                                           |
| **Available** | On Hand minus committed/reserved quantity. Usually the most useful number to show end users. |
| **Committed** | Reserved for open orders not yet fulfilled.                                                  |
| **On Order**  | Expected from open purchase orders.                                                          |

For most portals, **Available** is the meaningful number — it's what can actually be sold without overselling committed stock.

## Where every value comes from

| Catalog field | NetSuite source                                 |
| ------------- | ----------------------------------------------- |
| On Hand       | Inventory detail records per location           |
| Available     | Calculated: On Hand minus Committed             |
| Committed     | Open sales order lines                          |
| On Order      | Open purchase order lines                       |
| Location list | NetSuite Locations, filtered to your subsidiary |

The catalog reads all of this at build time. Stock changes after that — a sale, a transfer, a receipt — won't show in the portal until the catalog is rebuilt.

## What the Product Locations block shows

The **Product Locations** Page Builder block displays per-location stock data from your catalog. When you configure it, you can choose which columns to show:

**Standard columns:**

* **Location Name** — the NetSuite location.
* **Subsidiary** — which subsidiary the location belongs to.
* **Quantity Available** — on-hand minus reserved (usually what end users want to see).
* **Quantity On Hand** — total physical stock at the location.
* **Quantity Committed** — stock reserved for open orders.
* **Unit of Measure** — the item's unit (each, case, box, etc.).

**Additional columns (optional):**

* **Quantity Back-Ordered** — on open customer orders waiting to be fulfilled.
* **Quantity On Order** — expected from open purchase orders from suppliers.
* **Average Cost** — the item's average cost at that location.

## Live inventory sync

By default, the Product Locations block shows inventory data from your last catalog rebuild — a snapshot that may be minutes or hours old. You can configure it to fetch live stock levels directly from NetSuite instead. This is useful when stock moves quickly and you want shoppers to see the most current numbers.

In the Page Builder, select the **Product Locations** block and open its settings:

* **Real-time sync** — fetches live inventory from NetSuite as soon as the page loads (if the item is in view).
* **Fetch on scroll** — waits until the Product Locations block scrolls into view before fetching live data. Use this on long pages where the inventory table might not be visible above the fold.
* **Show refresh button** — displays a button that lets shoppers manually refresh the stock levels.

Live inventory works for regular items and kit/package items. For kits, the system calculates availability based on the stock of all component items.

## Special handling for kit and package items

When the Product Locations block displays a kit or package item, it shows a table that's expandable:

* Click any location row to see the **component breakdown** — a mini-table showing each component item's required quantity, available quantity, and on-hand quantity.
* This helps users understand why a kit may or may not be in stock (a kit is only available if all its components are in stock).

## Inventory statuses tab

If you enable **Inventory Statuses** in the Product Locations block settings, a second tab appears showing inventory broken down by status (e.g. *In Stock*, *Backordered*, *Damaged*) at each location. This comes directly from NetSuite's inventory status tracking.

## Multi-location workflows

When **Locations** is on in your catalog, the output includes stock for every location the item is stocked at. From there:

* A portal page can display all locations side-by-side.
* A user whose session is scoped to a specific location (driven by their role and workflow) can see only their location's stock — the filtering happens in the page configuration, not in the catalog itself.

## After you toggle Locations

Click **Save & Update** to rebuild the catalog so the change reaches the portal. Just **Save** stores the config but won't include (or remove) the location data until the next rebuild.

{% hint style="info" %}
A scheduled NetSuite-side refresh will eventually pick up the change too, but if you need it live now, **Save & Update** is the fastest path.
{% endhint %}

## Common issues

* **Stock looks stale** — the catalog is a snapshot. Trigger **Reprocess** on the catalog row in the list. After it flips to *Completed*, the new stock numbers reach the portal.
* **A location is missing from the output** — confirm the item is actually stocked at that location in NetSuite. Locations with zero on-hand are typically still included; locations the item isn't associated with at all aren't.
* **Numbers in the catalog don't match NetSuite reports** — confirm you're comparing the same point in time. The catalog snapshot can be minutes or hours old depending on when it was last built.

## Related

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Creating a Catalog</strong></td><td>Where the Locations toggle lives plus the rest of the Edit Catalog page.</td><td><a href="/client-admin-guide/creating-catalogs.md">Catalogs</a></td></tr><tr><td><strong>Pricing &#x26; Availability</strong></td><td>How the other Settings toggles affect the catalog output.</td><td><a href="/client-admin-guide/creating-catalogs/pricing-and-availability.md">Pricing &amp; Availability</a></td></tr></tbody></table>
