Virtual locations are special locations used to temporarily hold committed inventory for orders that cannot yet be routed to a fulfillment location.
When an order is routed, the committed quantity is applied to the assigned fulfillment location. This reduces the available inventory at the warehouse and updates connected selling channels, helping prevent overselling.
When an order is placed on hold or cannot yet be routed, inventory would normally remain uncommitted. This creates a risk of overselling because selling channels may still display the inventory as available.
Virtual locations reduce this risk by temporarily committing inventory until routing occurs. Once the order is routed, the commit is cleared from the virtual location and reassigned to the correct fulfillment location.
The app supports two types of virtual locations, each serving a different operational purpose.
Types of Virtual Locations
Type |
Purpose |
How it’s created |
|---|---|---|
Routing virtual location |
Routes exception orders such as non-fulfillable items or self-fulfilled SKUs |
Created manually and referenced in routing rules |
Inventory Engine virtual location |
Holds virtual commits to prevent overselling before orders are routed |
Managed by the inventory engine when virtual commits are required |
Use Cases
Prevent oversell: Ensures selling channels reflect accurate availability for items tied up in on-hold orders.
Route exceptions: Direct orders containing specific SKUs (for example, self-fulfilled or non-fulfillable items) to a non-routable location.
Operational flexibility: Provide a safe holding place for inventory while order routing and automation rules run.
Creating a Virtual Location in Pipe17
Prerequisites
Order routing is configured.
Locations are set up in the app.
Virtual Location must be enabled in the Inventory in Pipe17.
Steps
Go to Inventory → Locations.
Select Create Location.
Enter a location name (for example, Non-Fulfillable SKUs or Self-Fulfilled Orders).
Enable Exclude from Totals.
Leave 3PL Integration blank.
Select Save.
Result: The location appears under Inventory → Locations and can be used in routing rules.
For a routing virtual location (exception handling), Exclude from Totals is typically enabled so the location does not affect selling-channel availability.
For an Inventory Engine virtual location (oversell prevention), the location generally must remain included in totals so virtual commits are reflected in inventory totals sent to selling channels.
Adding Virtual Location to Order Routing
Go to Order Routing → Routing Rules.
Click Add Custom Rule → Manually Configure Rule.
Name the routing rule (for example, UNFULFILLABLE).
Add filters to specify which orders/line items should route here.
Check Do not check inventory.
Select a destination/region if applicable.
In the Fulfillment Location dropdown, select your virtual location.
Save the rule.
Orders routed to a virtual location will trigger a Sent Order Failure exception. You can disable these under Integrations → Exception Engine.
How Virtual Locations Work
The virtual commit model adjusts inventory before a shipping request is created.
When an order requires inventory but has not yet produced a shipping request:
A virtual commit event adjusts inventory at the virtual location.
The adjustment represents the difference between order quantity and shipment quantity, which helps keep inventory totals accurate prior to shipping request creation.
When a shipping request is generated:
The commit is removed from the virtual location.
The commit is reassigned to the fulfillment location.
If the shipping request is canceled, the commit can be restored to the virtual location.
Orders in these states are ignored:
Draft
Canceled
Archived
Fulfilled
If an order is later canceled, archived, or no longer requires shipping, the virtual commit is cleared.
Inventory Behavior in Virtual Locations
Virtual commits increase the committed value and drive the available value negative to reserve inventory.
The calculation follows this behavior:
Committed is clamped to 0 or greater. If an event would reduce committed below 0, committed is set to 0.
Available is computed as the negative of committed after clamping.
Practical outcomes:
If committed is 10, available becomes -10.
If a negative adjustment would bring committed below 0, committed becomes 0 and available becomes 0 (not positive).
On-hand does not change as part of the virtual commit calculation.
Location Settings
These settings appear on the standard location create/edit form. Some are used more often for warehouses, but all may be present.
Setting |
What it controls |
When to use it |
|---|---|---|
Virtual Commit |
Enables the virtual commit inventory model for the location |
Use for locations that should hold virtual commits (for example, an inventory-engine virtual location) |
Exclude from Totals |
Excludes the location from totals sent to selling channels |
Use for routing virtual locations that should not affect channel availability |
Exclude from totals by integration |
Excludes the location from totals for specific channels |
Use when a location should be ignored for one channel but included for others |
Do Not Track Inventory |
Stops pulling inventory for all SKUs from the warehouse location |
Use for temporary scenarios such as cycle counting or a temporary inventory pull pause |
Pause Location |
Stops routing orders to the location |
Use when a warehouse cannot accept new routed orders due to short-term operational issues |
Preserve Bundles |
Prevents bundle decomposition for bundle-only fulfillment locations |
Use when the 3PL expects bundle masters rather than decomposed components |
Bundles and Virtual Commits
Virtual commits are tracked as virtual inventory records for bundle SKUs (bundle-type SKUs).
Operationally, this may look like commits applying at the bundle master level rather than per-component inventory. Bundle recalculation may be required to keep component availability aligned with bundle commitments.
Sending Inventory Adjustments to Selling Channels
You have two ways to reflect virtual commits in selling channels.
Option 1: Map a channel location
Map the virtual location in the app to a location in your selling channel.
Requirements:
The channel location supports negative inventory values.
The mapped location exists in the channel.
This approach publishes negative availability directly.
Option 2: Send totals including the virtual location (recommended)
Send inventory totals without excluding the virtual location.
Benefits:
Works across channels that do not support negative inventory.
Ensures commits are included in totals sent to selling channels.
Advanced Fields (API)
Some scenarios use additional fields that may be configured through advanced setup or APIs.
Field |
Purpose |
|---|---|
excludeInventoryEvents |
Excludes specific inventory event types from automated processing for the location |
routingPausedRanges |
Defines scheduled time intervals when routing is paused for the location |
virtualCommitSources |
A list of string identifiers (for example integration IDs or requestor IDs) that can participate in virtual commit behavior |
excludeFromTotalsFor |
A list of string identifiers (requestor IDs) used to exclude the location from totals for specific channels |
inventory record type (virtual or physical) |
Classifies inventory records and can affect how inventory is queried and filtered |
Known Limitations
If totals are used, the virtual location must remain included in totals calculations.
If sending per-location inventory data, the mapped channel location must support negative inventory values.
Some channels may misinterpret inventory if partial orders are routed to the platform.
SKU swaps (manual, API, or automation) do not automatically adjust existing virtual commits.
Bundles may require recalculation to keep component inventory aligned with bundle-level commits.
Troubleshooting
Symptom |
Likely cause |
Resolution |
|---|---|---|
Overselling still occurs |
Virtual location not enabled or excluded incorrectly |
Confirm virtual commits are enabled and the inventory-engine virtual location is included in totals |
Inventory discrepancies in selling channels |
Channel does not support negative inventory |
Use totals including the virtual location |
Bundle inventory not accurate |
Bundle recalculation delays |
Review bundle recalculation behavior during high-volume sales |
Old SKUs holding commits |
SKU swaps after commits were created |
Review SKU swap processes and manual cleanup approach |
Need Help?
If you need additional assistance:
Use Ask Pippen, our AI agent, located at the top of the platform page.
Submit a support request with as much relevant detail as possible. Learn how to submit a request.
For urgent issues, email us directly at support@pipe17.com.
We're here to help you succeed with your operations.
Comments
0 comments