Overselling happens when your WooCommerce catalog promises stock that does not exist at the location fulfilling the order. Extendons Multi Locations Inventory Management for WooCommerce solves this by tracking inventory per warehouse and store, so each location's stock stays accurate and orders route to the site that actually has the product in hand. Without location-based assignment, a single stock number masks the reality that your Austin store and Ohio warehouse hold completely different quantities.
Why Location-Based Product Assignment Matters for Your WooCommerce Store
Picture a retailer running one warehouse in Ohio and two storefronts in Austin and Portland. A shopper in Austin buys the last red jacket on the shelf, but WooCommerce still counts that jacket as available because the catalog only tracks a single stock number. Another customer orders it the same afternoon, and someone has to apologize, refund, and explain.
Assigning products to locations fixes the root cause, not the symptom. Each product carries accurate stock for every warehouse and store, so the storefront stops selling what Austin does not physically have. Orders route to the location with available units, which shortens fulfillment time and cuts cross-country shipping costs. Location-based inventory transforms a multi-site operation from guesswork into a reliable system where stock numbers reflect what customers can actually receive.
How to Assign Products to Multiple Locations in WooCommerce?
Multi Location Inventory for WooCommerce treats each warehouse and store as a separate inventory container. The steps below cover installation, location creation, and per-product assignment using the dedicated tool built for this task.
Method 1: Assign Products to Locations Using Extendons Multi Locations Inventory Management
WooCommerce multi-locations inventory management records stock per warehouse, updates each location in real time as orders come in, and gives you a single screen to manage it all. The steps below walk through installation, global settings, location creation, and per-product assignment.
Step 1: Configure Global Inventory Settings
First, configure the plugin's global settings to manage inventory across different locations.
- From your WordPress dashboard, navigate to WooCommerce → Settings → Multi Locations Inventory.
- Open the General Settings tab to configure the plugin's inventory options.
- Enable the multi-location inventory features you need, such as location-based stock management and inventory display options.
- Configure the default inventory behavior and other available settings according to your store's requirements.
- Save the changes before proceeding to the location setup.
Step 2: Add Inventory Locations
Before assigning products, create the locations where your inventory will be managed.
- Navigate to the plugin's Locations section in your WordPress dashboard.
- Click Add New Location to create a location.
- Enter the location name and other available details, such as its address and contact information.
- Configure any additional location settings required by your store.
- Save the location and repeat the process for each warehouse, branch, or storage facility you want to manage.
Once your locations are created, you can assign products to them individually.
Step 3: Assign Products to Locations Using Product-Level Settings
After configuring the global settings and creating locations, assign products to the required locations from their individual product editing pages.
- Navigate to Products → All Products in your WordPress dashboard.
- Find the product you want to assign and click Edit.
- Scroll to the Product Data section and open the Inventory tab.
- Enable the Use Multi Inventory? option to manage the product's inventory across multiple locations.
- Click Add New Inventory to create an inventory entry for the product.
- In the Location field, select the location where you want to stock the product.
- Enter the stock quantity available at that location. Configure other available fields, such as regular price, sale price, inventory priority, dates, expiry date, or supplier, if required.
- If the product is available at multiple locations, click Add New Inventory again. Select another location and enter its inventory details. Repeat this process for each location where the product should be available.
- Review the assigned locations and their stock quantities, then click Update to save the product.
You can repeat these steps for other products to control which locations hold each item and how much stock is available at each location.
Important: Create your inventory locations before assigning products. Product-level inventory entries determine the locations associated with each product, while global settings control the overall inventory behavior of the plugin.
Method 2: Manual Location Tracking Using Custom Fields and Code
If a plugin feels like more than you need right now, you can build a lightweight version of location tracking yourself. The idea is simple: store a location value against each product, then read that value wherever you need it. WooCommerce already gives you the storage layer through custom fields, so the manual route is mostly about deciding where the data lives and how you display it.
Be honest about the tradeoff before you start. Manual tracking can tell a customer which store holds a product, but it will not decrement stock per location, generate purchase orders, or forecast replenishment. Those are the jobs Extendons Multi Locations Inventory Management exists to handle.
Step 1: Register a Custom Field for Each Location
Start by deciding what a "location" means in your catalog. Most stores use one entry per physical site, for example a city or a warehouse code.
- Location Name: the human-readable label, such as "Austin Warehouse."
- Location Code: a short unique identifier, such as "AUS-01," which is easier to query and less prone to typos.
- Stock Quantity: the number of units on hand at that site.
WordPress stores custom field data in the postmeta table, and WooCommerce products are a post type, so product-level fields appear under the Custom Fields panel on the product edit screen. Registering the field properly with register_post_meta() makes it available to the REST API and gives you a schema to validate against.
Step 2: Store Location Data on Each Product
Once the field exists, you need to populate it. You have two realistic options.
- Add the value by hand on each product's edit screen, which works for small catalogs but does not scale.
- Bulk-load values through the WooCommerce product CSV importer, mapping your location columns to the custom field keys.
If a product sits in more than one place, you need a repeatable structure rather than a single value. WordPress meta supports arrays, so you can save an array of location objects (code plus quantity) under one key and loop over it later. Keep the shape consistent, because inconsistent meta is the main reason homegrown inventory setups break.
Step 3: Display Location Data on the Front End
Showing the data is where most manual builds get interesting. You can hook into woocommerce_single_product_summary or use a shortcode to print the stored locations near the add to cart button.
- Read the meta value, check that the product is in stock, then output a simple list or table.
- Hide locations with a zero quantity, so shoppers only see options you can actually fulfill.
- Escape every value before output, since meta can contain unexpected characters.
This gives customers visibility, but the assignment stays manual. When an order comes in, someone has to decide which site ships it and update that site's count by hand.
Step 4: Query Products by Location
To build a "shop by location" filter, run a WP_Query against your meta key. Pass a meta_query argument matching the location code you want, and WooCommerce returns the products assigned to that site.
The performance ceiling arrives quickly. Meta queries are slower than indexed taxonomy queries, so once you pass a few hundred products, converting location into a custom taxonomy is the usual fix. That also gives you archive pages per location for free.
Manual tracking earns its place for a two-location store with a handful of SKUs. Beyond that, the maintenance cost outgrows the savings.
Troubleshooting: Why Products Aren't Syncing Across Locations
Even with a clean setup, multi-location stock can drift. The symptoms are usually identical: the shop page shows available units, a customer orders, and the picking list for that location comes up short. That gap is where the overselling pain starts.
Stock Not Decreasing After an Order
Check whether Disable front-end location selection is enabled, which is the setting described in Step 6. When that option is on, customers order without choosing a location, and the plugin waits for you to assign a location to the order from the backend before the associated location stock updates.
If orders sit unassigned, the numbers never move. Assign each pending order manually, or switch the Location Assignment Rule so the plugin selects a location automatically, then confirm the change on the next test order.
Wrong Location Gets Picked
When the plugin assigns stock from a warehouse you did not intend, the culprit is normally Inventory Priority on the product edit page, covered in Step 5. The location ranked first there is the one drawn down first, regardless of which site is closest to the buyer.
If you would rather the plugin choose the location holding the most units, set Location Assignment Rule to Location with most inventory in stock. If predictable routing matters more than quantity, keep Location as per priority in stock and reorder your priority list to match how you actually ship.
Location Data Missing on the Product Edit Page
A product with no location rows cannot sync anything. Open the product and confirm that Use Multi Inventory? is checked, then verify the Total Stock field reflects the combined quantities you entered.
- Each entry must point to a different location. Adding the same location twice on one product produces unreliable totals.
- If a stock entry has an Expiry Date that has already passed, that quantity may no longer count toward availability.
- Save the product after edits, then reload the page to confirm the rows persisted.
Plugin conflicts are the last thing to rule out. Deactivate other inventory or stock-management plugins temporarily and place a test order. Without official documentation confirming a specific integration, this remains a diagnostic step: if stock updates correctly with the other plugin off, you have found the conflict.
Conclusion
Assigning products to locations in WooCommerce stops the cycle of overselling and customer disappointment that comes from a single stock number. Once you have created your locations, populated supplier details, and tagged each product with per-location quantities, your inventory picture becomes honest: Austin's shelf shows Austin's stock, Ohio's numbers reflect Ohio's reality, and orders route to the site that can actually fulfill them.
The manual approach works for very small, static inventories, but it requires hand updates every time a unit sells and cannot forecast replenishment. If you are running three or more locations or expect your catalog to grow, the operational overhead of tracking by spreadsheet or custom fields will quickly exceed the cost of a dedicated tool. Install Extendons Multi Locations Inventory Management today to automate stock syncing, eliminate the guesswork, and give your team a system they can trust.


30-day money back guarantee
Dedicated Support Team
Safe & Secure Free Update
Safe Customized Solutions