Docs / Getting started
Create your first warehouse
A warehouse is the top of your inventory hierarchy — a physical site that holds stock in bins. Most teams start with one and add more as they grow. From the dashboard, open Locations → New warehouse, give it a name and address, and set its time zone so cycle-count schedules and receiving timestamps line up with the floor.
Every quantity in Shelfwise is anchored to a warehouse, so on-hand for the same SKU is tracked independently at each site. Transfers move stock between warehouses with a full audit trail.
Import your SKUs
You don’t have to key in your catalog. Go to Inventory → Import and upload a CSV or Excel export. Shelfwise walks you through mapping your columns to fields:
- SKU — your unique item code (required, must be unique per account).
- Description — the human-readable item name.
- On hand — current quantity, imported per warehouse.
- Bin — where it lives; new bins are created on the fly.
- Reorder point and reorder quantity — optional, but they light up low-stock alerts immediately.
The importer previews the first rows, flags duplicate SKUs before committing, and keeps the original file attached to the import job so you can trace any value back to its source.
Set up bins & zones
A bin is the smallest addressable location — a shelf, a pallet position, a drawer. Bins roll up into zones (an aisle, a mezzanine, a receiving dock). Naming bins consistently is what makes directed putaway and short pick paths work. A common scheme is ZONE-AISLE-LEVEL, for example A-04-2.
Once your zones are drawn, turn on directed putaway so receiving suggests the right bin, and pick-path optimization so pickers walk the aisle once instead of backtracking.
Print labels & scan
Shelfwise generates GS1-128 barcodes for SKUs and bins. Print them to any standard thermal printer from Inventory → Labels, then scan with a USB/Bluetooth HID scanner or the Shelfwise mobile app. Scanning a bin then a SKU is enough to receive, move, count, or pick — the app knows the action from the screen you’re on.
Docs / Core concepts
SKUs & variants
A SKU (stock-keeping unit) is a single sellable or stockable item. When the same product comes in multiple sizes, finishes, or pack quantities, model each as a variant under a parent SKU. Variants share attributes and reporting but hold their own on-hand and reorder point. Variants never count against plan SKU limits — only the number of distinct stockable items does.
Bins & locations
The full address of any unit of stock is warehouse › zone › bin. A single SKU can live in several bins at once (bulk in reserve, eaches in pick-face); Shelfwise tracks quantity per bin and, when you pick, pulls from the bin your rules prefer — usually the pick-face, falling back to reserve.
Reorder points
A reorder point is the on-hand level at which a SKU should be replenished. Set it manually, or let Shelfwise suggest one from recent demand and supplier lead time. When on-hand crosses the reorder point, the SKU enters the low-stock queue and — if PO automation is on — a draft purchase order is created for the SKU’s default supplier, grouped with its other due items.
Cycle counts
Instead of freezing the warehouse for a wall-to-wall count, run rolling cycle counts by zone or ABC class. Shelfwise schedules counts so fast-moving A items are checked often and slow C items less so. Counters scan a bin, enter what they see, and any variance is recorded with the counter, timestamp, and the bin — then routed for approval before it touches on-hand.
Docs / Reference
REST API
Every action in Shelfwise is available over a JSON REST API. Authenticate with a workspace API key sent as a bearer token. Base URL: https://api.shelfwise.app/v1. Rate limits are per key and returned in the X-RateLimit-Remaining header.
Adjust on-hand for a SKU in a bin:
# Receive 120 units of HEX-M8-50 into bin A-04-2 POST /v1/inventory/adjustments Authorization: Bearer sk_live_… Content-Type: application/json { "sku": "HEX-M8-50", "warehouse": "wh_columbus", "bin": "A-04-2", "delta": 120, "reason": "receipt", "reference": "PO-10482" }
A successful call returns 201 with the new on-hand for that bin and the resulting transaction id. Webhooks (inventory.low_stock, po.approved, count.variance) let you push changes into your ERP without polling.