← All posts NetSuite & ERP 3 min read

WooCommerce Order Routing with NetSuite: Multi-Warehouse Logic That Actually Works

Quick Summary WooCommerce Order Routing with NetSuite — Multi-Warehouse Logic That Works Multi-warehouse order routing means deciding which physical location fulfils each order at the moment the order is placed — then writing that decision to both WooCommerce and NetSuite correctly. The routing decision must happen before the NetSuite Fulfillment Request is created — changing…

Quick Summary

WooCommerce Order Routing with NetSuite — Multi-Warehouse Logic That Works

  • Multi-warehouse order routing means deciding which physical location fulfils each order at the moment the order is placed — then writing that decision to both WooCommerce and NetSuite correctly.
  • The routing decision must happen before the NetSuite Fulfillment Request is created — changing location after the fact creates inventory discrepancy between systems.
  • Three routing strategies: nearest warehouse (distance), availability-first (highest stock), and priority-list (fixed preference per location type).
  • NetSuite’s Inventory Detail record is what locks a specific lot or serial number to a fulfillment — required for serialised inventory routing.
Pre-FR
When routing must be decided — before the Fulfillment Request record is created in NetSuite
3
Routing strategies — nearest, availability-first, priority-list
Inventory Detail
NetSuite record that locks serial or lot to a fulfillment — required for serialised stock
Atomic
The routing + NetSuite write must be atomic — partial writes create split inventory records

Multi-warehouse routing is one of the most operationally impactful capabilities a NetSuite + WooCommerce integration can provide — and one of the most common sources of inventory discrepancy when implemented incorrectly. The key architectural rule: the routing decision is made once, at order placement, and written atomically to NetSuite. Any system that allows the routing decision to be changed after the Fulfillment Request is created will accumulate inventory errors.

The Three Routing Strategies

Strategy How it works Best for NetSuite complexity
Nearest warehouse Geolocate shipping address, route to closest location with stock Perishables, time-sensitive delivery Medium — requires geocoding service integration
Availability-first Route to location with highest available quantity for the ordered item High-SKU-count catalogs with uneven stock distribution Low — SuiteQL inventory query per location
Priority list Fixed priority order per location (e.g., always try Warehouse A, then B, then C) Operations that want deterministic routing for planning Low — hard-coded or configurable priority list

The Correct Integration Flow

1
On order placed (WooCommerce webhook)

Receive the order. Query NetSuite inventory by location for each ordered SKU using SuiteQL. Apply your routing strategy. Select the fulfilment location. Write the decision to WooCommerce order meta (_fulfillment_location) immediately.

2
Create the NetSuite Sales Order with location set

Create the SO with the location field set to the selected warehouse. Do not create the SO first and update the location later — the location field on a committed SO affects inventory allocation and should not be changed post-creation.

3
Create the Fulfillment Request

After the SO is confirmed, create the Fulfillment Request (Item Fulfillment) with the same location. The FR is what physically triggers the pick-and-pack process in the warehouse. If you use a WMS, the FR is the record it polls or receives via webhook.

Atomic write requirementRouting decision and NetSuite write must succeed together or not at all:

If your integration writes the routing decision to WooCommerce meta successfully but then fails to create the NetSuite SO with the correct location, the two systems are out of sync. Implement a retry with idempotency check: before retrying a failed SO creation, check whether an SO already exists for this order ID. Never create duplicate SOs for the same WooCommerce order.

Sources & Further Reading

References

  1. NetSuite Item Fulfillment ReferenceOracle NetSuite Help — Item Fulfillment (Fulfillment Request) record fields including location and inventory detail.
  2. SuiteQL for Inventory QueriesOracle NetSuite Help — SuiteQL queries for inventoryBalance by location used in routing decisions.
  3. WooCommerce Orders REST APIWooCommerce.com — order meta fields used for storing routing decisions on WooCommerce order records.
Discussion

Leave a Reply

Your email address will not be published. Required fields are marked *


Ship it

Need this in your stack?

We build, integrate, and ship — no calls, just delivery.

Start a project →