Location Management
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.
Each product can be assigned one location per type. For example, a product might sit on one shelf in your shop and be available from one supplier - but not two shelves simultaneously. If you need to track a product across two similar places, create additional types (more on this below). Location types are unlimited, so you can create as many as your business needs.
Step 1 - Create location types
Navigate to your WordPress admin:
Stokkap → Location Types
Adding a type
- Enter a Label - the display name shown throughout the admin (e.g., "Shop")
- 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.
- 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.
Real-world type examples
Here are setups for different kinds of stores:
Small independent shop:
| Type | Priority |
|---|---|
| Shop | 10 |
| Supplier | 20 |
Simple - sell from the shop first, fall back to supplier stock.
Multi-location retailer:
| Type | Priority |
|---|---|
| Shop | 10 |
| Warehouse | 20 |
| Supplier | 30 |
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:
| Type | Priority |
|---|---|
| Primary Warehouse | 10 |
| Overflow Warehouse | 20 |
| Drop-Ship Supplier | 30 |
Prioritise your main warehouse, overflow handles excess, suppliers fulfil the rest.
Retailer with shelved and displayed stock:
| Type | Priority |
|---|---|
| Display | 10 |
| Shelf | 20 |
| Back Room | 30 |
| Supplier | 40 |
Sell displayed items first, restock from shelves, then back room, then fall back to supplier.
Container storage business (real customer example):
| Type | Priority |
|---|---|
| Shop Floor | 10 |
| Small Container | 20 |
| Large Container | 30 |
| Back Office | 40 |
| Supplier | 50 |
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
- Enter a Name - the specific place (e.g., "Main Shop", "Birmingham Warehouse", "Acme Supplies Ltd")
- Select the Type from the dropdown
- 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.
Real-world location examples
Small independent shop with one supplier:
| Location Name | Type | Priority |
|---|---|---|
| My Shop | Shop | 10 |
| Main Supplier | Supplier | 20 |
Multi-location retailer:
| Location Name | Type | Priority |
|---|---|---|
| Manchester Store | Shop | 10 |
| Leeds Store | Shop | 10 |
| Central Warehouse | Warehouse | 20 |
| Acme Wholesale | Supplier | 30 |
| Budget Parts Ltd | Supplier | 30 |
Multiple locations can share the same type and priority. Products are assigned to one location per type, so a product would be in the Manchester Store or the Leeds Store - not both. If you need to track a product across both stores, create separate types (e.g., "Manchester Shop" and "Leeds Shop") - location types are unlimited.
Warehouse with zone-based shelving:
| Location Name | Type | Priority |
|---|---|---|
| Zone A - Electronics | Shelf | 10 |
| Zone B - Clothing | Shelf | 10 |
| Zone C - Homeware | Shelf | 10 |
| Returns Area | Shelf | 15 |
| Main Supplier | Supplier | 20 |
Each product sits on one shelf in one zone. The returns area has a slightly higher priority number so new stock is sold before returned items.
Container storage with position codes (real customer example):
| Location Name | Type | Priority |
|---|---|---|
| Shop Front | Shop Floor | 10 |
| L/H/S/Shelf 1 | Small Container | 20 |
| L/H/S/Shelf 2 | Small Container | 20 |
| L/H/S/Rack 1 | Small Container | 20 |
| R/H/S/Shelf 1 | Large Container | 30 |
| R/H/S/Rack 1 | Large Container | 30 |
| Back Office Store | Back Office | 40 |
| Wholesale Direct | Supplier | 50 |
This customer uses short position codes as location names - L/H/S (left-hand side), R/H/S (right-hand side) followed by the shelf or rack number. Each product is assigned to one location within each container type, making it easy for staff to find items during picking.
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)
A note above the table reads: "Drag rows to reorder priority. Stock depletes from top to bottom."
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 - toggle the location on or off (only shown when editing)
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.
If you deactivate a location that has stock assigned, stock at that location is excluded from the WooCommerce total and a background recalculation runs automatically.
Deleting a location
When you click Delete, Stokkap checks whether any products have stock at that location.
If no products have stock: A simple confirmation dialog appears.
If products have stock: A detailed dialog appears with three options:
- 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.
- 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).
- 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.
After deletion, the location's stock meta keys are cleaned up across all products automatically.
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.
Stock depletes from top to bottom. The location at the top of the list is checked first when an order comes in. If it has enough stock, the full quantity is taken from there. If not, the remainder cascades down to the next location.
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 works through locations from lowest priority number (highest priority) to highest:
Example: A customer orders 8 units of a product. A customer orders 8 units of a product.
| Location Name | Priority | Stock Available | Action |
|---|---|---|---|
| Main Shop | 10 | 3 units | Take 3 (0 remaining) |
| Warehouse | 20 | 10 units | Take 5 (5 remaining) |
| Supplier | 30 | 50 units | Skipped (order fulfilled) |
Result: 3 units depleted from Main Shop, 5 from Warehouse. WooCommerce total stock drops by 8.
If a product allows backorders and there is not enough stock across all locations, the shortfall is applied to the highest-priority location (lowest number), keeping the backorder tracked in one place.
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.
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)
- Open any simple product and go to the Inventory tab
- Tick Manage with Stokkap to enable multi-location stock management. This also enables WooCommerce's "Manage stock?" if it was not already enabled.
- The location stock section appears. Click Add location type... and select a type (e.g., "Shop")
- A row appears with a dropdown of all locations of that type. Select the specific location (e.g., "Main Shop")
- Enter the stock quantity
- Repeat for additional types - add a Warehouse location, a Supplier location, etc.
- The Total Stock at the bottom updates automatically as you change quantities. This total is synced to WooCommerce's stock field.
To remove a location from a product, click the X button next to the row.
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:
- Go to Products in WooCommerce
- Hover over a product and click Quick Edit
- The Stokkap section shows the same location type rows - adjust quantities or add/remove locations
- 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.
Total stock calculation
The WooCommerce stock quantity you see on the product list and the front end is always the sum of all active location stocks. Stokkap recalculates this automatically whenever stock changes - through the admin, via the API, or when an order depletes stock.
You never need to manually update the WooCommerce stock field. It is kept in sync automatically. If you change a location stock from 10 to 15, the WooCommerce total immediately reflects the difference.
Inactive locations are excluded from the total. If you deactivate a location holding 20 units, those 20 units are removed from the WooCommerce total until the location is reactivated.
Bulk setup and CSV import
If you are migrating an existing store to Stokkap and need to enable location management across many products at once, the Bulk Setup tool can do this in one operation. It runs in the background and handles hundreds or thousands of products without timing out.
Alternatively, CSV import tools (such as WP All Import or WooCommerce's built-in importer) can be used to assign stock to locations by writing to the _st_stock_{location_slug} meta fields directly. You must also set _st_managed to yes on each product for Stokkap to recognise it as managed.
There is no need to update WooCommerce's stock field separately - Stokkap recalculates totals automatically when products are saved. When using CSV import, ensure you do not assign a product to more than one location name within the same location type.
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.
- Use the transfer option when closing a location. This preserves stock data and saves you from manually updating every product.
- 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).
- Need two of the same kind? If a product genuinely needs to be tracked in two locations of the same kind (e.g., two supplier warehouses), create two separate types like "Primary Supplier" and "Secondary Supplier". Types are unlimited.