Inventory
How many units of each SKU you actually have, where they sit, and how many are still free to sell once commitments, reservations, and buffers come off.
See it
What it is
Inventory is a count per SKU per location, and the number you show a shopper is rarely the number in the warehouse. Start with on hand (physically there), then subtract everything spoken for: committed units on accepted, unfulfilled orders, short-lived reservations held during checkout, unavailable stock (damaged, quarantined, awaiting inspection), and whatever safety buffer you hold back. What is left is available to sell, and its exact formula is a policy decision your platform lets you configure, not a law of physics. Write the formula down, because two systems quietly using different ones is how phantom stock appears.
Storefronts spend inventory on three decisions: whether to show an add to cart button, whether to show urgency ('Only 2 left'), and whether to offer a back-in-stock signup instead. Platforms also let you keep selling past zero, which turns the order into a backorder or preorder rather than a hard block.
Gotcha: overselling. Stock moves in your warehouse, on Amazon, and at the market stall, and the sync between them lags by minutes. The fix is boring and works: hold a safety-stock buffer so the storefront hits zero before reality does, and take an expiring reservation at checkout or payment authorization rather than at add to cart, or one abandoned cart locks up your last unit for an hour.
Ask AI for it
Build an inventory state display for a product page. Derive the stock state from an available-to-sell quantity and a low-stock threshold, and render four states: in stock (green dot), low stock (amber dot, 'Only 3 left'), out of stock (grey dot, add-to-cart disabled, swapped for a 'Notify me when back' email field), and backorder (blue dot, add to cart enabled with an 'Ships in 2 to 3 weeks' note under the button). Compute dispatch messaging separately from a fulfillment location, a daily cutoff time, a handling time in business days, and a working calendar, then render it as its own line ('Order in 3h 12m for dispatch today'). Never infer 'ships today' from stock alone, and fall back to a vaguer line when any of those inputs is missing. Keep the button height identical across all four states so the layout does not jump, and announce state changes through a polite live region.