Setup Guide

Stokkap Location Setup Guide

Stokkap Connect uses a two-tier system to organise where your stock is stored: Location Types and Locations. This guide covers everything from initial setup to day-to-day management.

Location management (creating types, creating locations, reordering, and deleting) is done within the WordPress plugin admin. The Stokkap web app provides additional ways to assign locations to individual products - such as scanning, the product list edit button, and the product detail view - but the setup and configuration is handled in the plugin.

Understanding the two-tier system

Location Types are categories that describe the kind of place stock is stored. Think of them as labels: Shop, Warehouse, Supplier.

Locations are the specific named places within those categories. "Main Shop", "London Warehouse", "Acme Supplies Ltd" are all locations.

A product can have multiple locations of the same type. For example, it can hold stock in two shops or on several warehouse shelves. Use types to group similar locations; you do not need a separate type for each place.

Step 1 - Create location types

Navigate to your WordPress admin:

Stokkap → Location Types

Adding a type

  1. Enter a Label - the display name shown throughout the admin (e.g., "Shop")
  2. Optionally set a Slug - an internal identifier auto-generated from the label if left blank. Uses only lowercase letters, numbers, and underscores. The slug cannot be changed after creation, so choose carefully or leave blank to auto-generate.
  3. Set the Priority - this controls stock depletion order (explained in detail below). Lower numbers mean higher priority. The default auto-increments in steps of 10 (10, 20, 30...) to leave room for re-ordering later.

Click Add Location Type to save.

Slugs are permanent. Once a location type is created, its slug cannot be changed - even via CSV import. This protects existing locations and product stock meta that reference the slug. If you need a different slug, delete the type (only possible when no locations use it) and recreate it.

Location types admin screen

Real-world type examples

Here are setups for different kinds of stores:

Small independent shop:

TypePriority
Shop10
Supplier20

Simple - sell from the shop first, fall back to supplier stock.

Multi-location retailer:

TypePriority
Shop10
Warehouse20
Supplier30

Shop floor stock sells first. When the shop is empty, warehouse stock is used. Supplier stock is the last resort.

Online-only business with multiple warehouses:

TypePriority
Primary Warehouse10
Overflow Warehouse20
Drop-Ship Supplier30

Prioritise your main warehouse, overflow handles excess, suppliers fulfil the rest.

Retailer with shelved and displayed stock:

TypePriority
Display10
Shelf20
Back Room30
Supplier40

Sell displayed items first, restock from shelves, then back room, then fall back to supplier.

Container storage business (real customer example):

TypePriority
Shop Floor10
Small Container20
Large Container30
Back Office40
Supplier50

This customer uses container types to separate different physical storage areas. Stock is taken from the shop floor first, then small containers, then large containers, then back office reserves, and finally the supplier. Each container type can hold many location names describing exact positions.

Editing and deleting types

  • Click Edit next to any type to change its label or priority. The slug remains fixed.
  • Click Delete to remove a type. You can only delete a type that has no locations assigned to it. Reassign or delete its locations first.

Step 2 - Create locations

Navigate to your WordPress admin:

Stokkap → Locations

This page will not be available until you have created at least one location type.

Adding a location

  1. Enter a Name - the specific place (e.g., "Main Shop", "Birmingham Warehouse", "Acme Supplies Ltd")
  2. Select the Type from the dropdown
  3. Set the Priority - defaults to the type's priority, but can be overridden per location. This controls the order within the same type and across types.

Click Add Location to save.

Locations admin screen

Real-world location examples

Small independent shop with one supplier:

Location NameTypePriority
My ShopShop10
Main SupplierSupplier20

Multi-location retailer:

Location NameTypePriority
Manchester StoreShop10
Leeds StoreShop10
Central WarehouseWarehouse20
Acme WholesaleSupplier30
Budget Parts LtdSupplier30

Multiple locations can share the same type and priority, and a product can hold stock in both Manchester Store and Leeds Store under the Shop type.

Warehouse with zone-based shelving:

Location NameTypePriority
Zone A - ElectronicsShelf10
Zone B - ClothingShelf10
Zone C - HomewareShelf10
Returns AreaShelf15
Main SupplierSupplier20

A product can hold stock on several shelves. A location named Returns Area is still sellable unless it was explicitly created as non-sellable. A lower depletion priority only delays its use; it does not prevent sales from it.

Container storage with position codes (real customer example):

Location NameTypePriority
Shop FrontShop Floor10
L/H/S/Shelf 1Small Container20
L/H/S/Shelf 2Small Container20
L/H/S/Rack 1Small Container20
R/H/S/Shelf 1Large Container30
R/H/S/Rack 1Large Container30
Back Office StoreBack Office40
Wholesale DirectSupplier50

Short position codes such as L/H/S (left-hand side) and R/H/S (right-hand side), followed by a shelf or rack number, help staff find items. A product can have several locations within each container type.

The locations table

Your locations are displayed in a table showing:

  • Priority number
  • Name
  • Slug (shown as the meta key format _st_stock_{slug})
  • Type
  • Status (Active/Inactive)
  • Actions (Edit, Delete)

Drag rows to reorder depletion priority. Orders use eligible active sellable locations from top to bottom; non-sellable stock is skipped.

Editing a location

Click Edit next to any location. You can change:

  • Name - rename the location at any time
  • Type - reassign to a different type
  • Priority - adjust the depletion order
  • Active — ordinary locations can be deactivated only after their stock is transferred or cleared. Non-sellable locations cannot be deactivated.

The slug cannot be changed after creation. The slug is generated from the original name and is used internally as the stock meta key. Renaming a location updates only the display name - all stock data remains intact because the slug stays the same.

Sellability is fixed when a location is created. Existing locations cannot be switched between sellable and non-sellable. Transfer stock to a sellable location when it is ready for sale.

Deleting a location

Deleting a location removes the location itself, rather than its assignment to one product. Non-sellable locations must be emptied before deletion. Outstanding references or operations may also need resolving before deletion is allowed.

When empty: confirm deletion after any remaining references or operations have been resolved.

For ordinary sellable locations with stock: the deletion dialog offers these options. They do not bypass the checks for non-sellable locations:

  1. Download Report - Generates a text file listing every product at that location with its SKU, barcode, stock quantity, and product name. Use this to verify what will be affected before proceeding.
  2. Transfer & Delete - Choose a destination location from the dropdown. All stock is transferred to the destination in the background, then the location is deleted. Use this when moving stock to a new location (e.g., closing a store and moving inventory to your warehouse).
  3. Delete Without Transfer - Permanently removes the location and all associated stock data. This requires an extra confirmation checkbox: "I understand this will permanently lose X unit(s)". Only use this if the stock no longer exists physically.

Removing an assignment from one product is a separate action. Use a normal or bulk transfer to move goods before deleting a non-sellable location.

Non-sellable locations

Non-sellable locations hold recorded stock that is unavailable for sale, such as damaged goods, returns awaiting inspection or stock awaiting quality checks.

Non-sellable is a property of an individual location, not a separate location type. Sellable and non-sellable locations can both belong to Warehouse or Shop.

Enable and create a non-sellable location

  1. Update Stokkap Connect to 1.6.6 or newer and use the latest Stokkap app.
  2. Open Stokkap → Settings.
  3. Under the Location Types settings card, find Non-sellable locations and click Enable non-sellable locations.
  4. Open Stokkap → Locations, create a new location and tick Non-sellable.
Stokkap Settings showing the Non-sellable locations activation button below Location Types
Enable non-sellable locations in Stokkap → Settings, below the Location Types card.

Existing locations remain sellable. Enabling this feature does not change existing stock.

Sellability is fixed at creation: existing locations cannot be switched between sellable and non-sellable. Once enabled, the feature cannot be switched off through Settings.

To release stock for sale, transfer it to a sellable location.

Supported workflows and limitations

For ordinary products without serial tracking:

  • View and adjust: product editing, Quick Lookup, Stock Control and Scan support non-sellable quantities. Locations display a clear Non-sellable classification label.
  • Move stock: normal and bulk transfers support moving stock between sellable and non-sellable locations.
  • Counting: non-sellable locations are excluded from stocktakes and tally/bulk counting.
  • Unsupported destinations: non-sellable locations cannot be used for serial stock, purchasing receipts or bulk activation.
  • CSV imports: supported import workflows cannot create or modify non-sellable balances. Ordinary sellable imports continue working.
  • Reports and exports: these can show non-sellable quantities and location labels. Non-sellable stock is excluded from cost and retail valuation and does not count as available selling stock in low/out-of-stock reporting.

Reordering locations (drag and drop)

The locations table supports drag-and-drop reordering. Grab the handle on the left side of any row and drag it to a new position. The priority numbers update automatically when you drop.

Eligible sellable stock depletes from top to bottom. Orders use active sellable locations in priority order, moving to the next when needed. Non-sellable stock is skipped regardless of priority.

This is the quickest way to adjust depletion order without manually editing priority numbers.

How priority and stock depletion works

Priority is the core concept that determines which location's stock is used first when a customer places an order.

The depletion cascade

When an order is placed, Stokkap uses eligible active sellable locations from the lowest priority number (highest priority) to the highest. Non-sellable stock is always skipped:

Example: A customer orders 8 units of a product.

Location Name Priority Stock Available Action
Main Shop103 unitsTake 3 (0 remaining)
Warehouse2010 unitsTake 5 (5 remaining)
Supplier3050 unitsSkipped (order fulfilled)

Result: 3 units come from Main Shop and 5 from Warehouse. WooCommerce selling stock falls by 8.

If backorders are allowed and eligible sellable stock is insufficient, the shortfall is applied to the highest-priority eligible sellable location. Non-sellable stock cannot supply a backorder shortfall.

Type priority vs location priority

Location types have a default priority that new locations inherit. You can override this on individual locations.

For most setups, keeping all locations of the same type at the same priority works well - the system processes them in the order they appear. If you need finer control (e.g., preferring one warehouse over another), give individual locations different priority numbers.

Smart Delivery add-on: zone-based priority overrides

With the Smart Delivery add-on (coming soon as a subscription), you can override the default type priority per WooCommerce shipping zone. This lets you change which location type is preferred based on where the customer is shipping to.

For example, your default priority might be Shop (10) > Warehouse (20) > Supplier (30). But for international orders, you could set it to Warehouse first because it is closer to the port. Each shipping zone can have its own priority order.

Smart Delivery also enables:

  • Geolocation-aware depletion - Stokkap detects the customer's location automatically and applies the correct priority order before they even reach checkout.
  • Delivery time messages - Show customers estimated delivery times on product pages based on which location would supply their order.
  • Shipping rate filtering - Automatically show or hide shipping methods based on which location types will fulfil the order.
  • Click-and-collect fulfilment - Orders using a click-and-collect shipping rate can be prioritised to deplete shop floor stock.

Bulk import & export (CSV)

Use the built-in CSV import and export tools when you need to create a lot of locations or location types at once - for example, 10+ locations, warehouse aisle-and-bin grids, or multi-store rollouts.

This is different from the product-stock CSV import described below in Assigning locations to products. This section creates and updates the locations and location types themselves; it does not assign product quantities to those locations.

Two separate CSVs

Stokkap uses separate importers for:

  1. Location Types - the categories such as Shop, Warehouse, Supplier, or Aisle M01.
  2. Locations - the actual places within those types, such as Main Shop, Central Warehouse, or M01-G01.

Create location types first, then import locations that reference those types.

Location Types CSV columns

Column Required? Notes
label Required Display name for the type, such as Warehouse or Aisle M01.
slug Optional Internal identifier. If blank, Stokkap generates one from the label. Slugs are permanent after creation and cannot be changed by importing a CSV later.
priority Optional Depletion priority. Lower numbers are used first. If blank, Stokkap uses the normal default priority behaviour.

Locations CSV columns

Column Required? Notes
name Required Display name for the location, such as Main Shop or M01-G01.
type Required The location type. You can use either the type slug or the type label; matching is case-insensitive.
priority Optional Depletion priority for this location. If blank, Stokkap uses the location type's priority/default behaviour.

Duplicate detection and preview

For locations, duplicates are detected by name + type. If your CSV contains a location with the same name under the same type as an existing location, Stokkap treats it as the same location rather than creating a duplicate.

After you drop in a CSV, Stokkap shows an import preview table with a per-row status. Review this before importing so you can catch missing required columns, unknown types, duplicate rows, and invalid priority values.

Export existing data

Use Export existing before preparing a large import. The exported CSV gives you the current column structure and real examples from your store, so it is the safest starting point for edits in a spreadsheet.

From the Locations import card, you can also use the Export location types shortcut. This is useful when building a locations CSV because you can copy the exact type labels or slugs into the type column.

Worked example: 792 warehouse bins

Scenario: a warehouse with 8 aisles x 99 bays = 792 storage bins.

  1. Create 8 location types, one per aisle: M01, M02, ... M08. You can create them through the UI or import a Location Types CSV:

    label,priority
    Aisle M01,10
    Aisle M02,20
    ...
    Aisle M08,80
  2. Generate the bay locations in a spreadsheet:

    name,type,priority
    M01-G01,aisle_m01,10
    M01-G02,aisle_m01,20
    ...
    M08-G99,aisle_m08,990
  3. Save the spreadsheet as CSV, drop it into the import widget, review the preview table, then click Import.

Assigning locations to products

Location assignment within the plugin is available on the WooCommerce product edit screen and quick edit. The Stokkap web app offers additional ways to assign locations - including barcode scanning, the product list, and the product detail view.

Simple products (full edit)

  1. Open any simple product and go to the Inventory tab
  2. Tick Manage with Stokkap to enable multi-location stock management. This also enables WooCommerce's "Manage stock?" if it was not already enabled.
  3. The location stock section appears. Click Add location type... and select a type (e.g., "Shop")
  4. A row appears with a dropdown of all locations of that type. Select the specific location (e.g., "Main Shop")
  5. Enter the stock quantity
  6. Repeat for other locations, including multiple locations of the same type.
  7. The totals distinguish sellable, non-sellable and recorded stock. Only stock in active sellable locations is used for WooCommerce selling stock.

Tip: On product edit screens, the Add location dropdown has a search box above it - type to filter through long location lists.

Click X beside a location row to remove that product’s assignment. You do not have to save its quantity at zero first. Removal removes its recorded quantity from that product; it does not transfer stock or make non-sellable stock sellable. Use a transfer when goods are physically moving. Transferring all stock can leave a zero-quantity assignment; removing that assignment is a separate action.

Stokkap stock management on product edit screen

If you enable Stokkap on a product that already has WooCommerce stock (e.g., 50 units), a dialog appears asking where to assign the existing stock. Choose a location to transfer it, or start fresh with zero.

Simple products (quick edit)

For faster updates from the product list:

  1. Go to Products in WooCommerce
  2. Hover over a product and click Quick Edit
  3. The Stokkap section shows the same location type rows - adjust quantities or add/remove locations
  4. Click Update to save

Quick edit is ideal for day-to-day stock adjustments without opening the full product editor.

Variable products

For variable products, stock is managed per variation, not at the parent level. Open each variation's panel to see the same location type and stock fields as simple products. Each variation can be at different locations with different quantities.

Stokkap stock management on variation

Sellable, non-sellable and recorded stock

WooCommerce selling stock comes from active sellable locations. Non-sellable quantities remain recorded separately and are excluded from selling stock.

TotalMeaning
Sellable stockStock in active sellable locations; used for WooCommerce selling stock.
Non-sellable stockRecorded quantities in non-sellable locations, excluded from selling stock.
Recorded stockSellable stock plus non-sellable stock.

Example: 10 sellable + 4 non-sellable = 14 recorded. WooCommerce selling stock is 10. Transfer 2 units to a sellable location: 12 sellable + 2 non-sellable = 14 recorded. WooCommerce selling stock is now 12.

Stokkap Scan showing the Staging Area Non-sellable badge and separate selling, non-sellable and recorded stock totals
In Scan, Staging Area is labelled Non-sellable. Selling stock is 6, non-sellable stock is 1 and recorded stock is 7.

Stokkap keeps WooCommerce selling stock in sync automatically when eligible sellable quantities change. Adjusting only non-sellable stock does not increase selling stock.

Inactive locations do not contribute to WooCommerce selling stock. Transfer or clear stock before deactivating an ordinary location; non-sellable locations cannot be deactivated.

Bulk setup and CSV import

There are three bulk workflows, each for a different job:

  • Bulk Setup — enables Stokkap management for many products. Use a sellable location as the activation destination; non-sellable locations are not supported as destinations.
  • CSV import for locations and location types - new in 1.4.9. Use the built-in CSV tools to create or update the locations and types themselves. See Bulk import & export (CSV) above.
  • Product-stock CSV imports — ordinary sellable imports remain supported, including multiple locations of the same type. Supported import workflows cannot create or modify non-sellable balances. Use product editing, Quick Lookup, Stock Control or Scan for adjustments, and transfers when moving stock. Location setup CSVs above create or update locations and types, rather than product quantities.

Tips and best practices

  • Start simple. Two types (Shop and Supplier) is enough for most small businesses. Add more as your needs grow.
  • Use types for categories, locations for specifics. "Warehouse" is a type. "Birmingham Warehouse" is a location.
  • Leave gaps in priority numbers. The auto-increment of 10, 20, 30 leaves room to slot in new types later without renumbering everything.
  • Drag to reorder rather than editing priority numbers manually - it is faster and the numbers update automatically.
  • Download the report before deleting a location with stock. Even if you plan to transfer, the report is a useful backup.
  • Transfer stock when goods move. Normal and bulk transfers support sellable and non-sellable locations. Empty a non-sellable location before deleting it.
  • Slugs are permanent. Think of them as internal codes. The display name can be changed freely, but the slug sticks. If you make a mistake, delete the location and create a new one (transferring stock to the replacement).
  • Several locations of the same kind? Keep them under the same type. A product can have stock in more than one of those locations.
Back to documentation