---
schema_version: "1"
id: fd3a7b662ccb7b11e49d6b6d343f5b2b342ad6a15ef3fedc19fac536d03dd4e1
title: Inventory Management Using Omnichannel Inventory
collection: admin
version: current
locale: en-us
portal_url: https://docs.salesforce.com/admin/current/en-us/cc/264-0-0/b2c_inventory_management_omnichannel_inventory.md
canonical_url: https://help.salesforce.com/s/articleView?id=cc.b2c_inventory_management_omnichannel_inventory.htm&release=264.0.0&type=5
source_site: help.salesforce.com
content_type: documentation
content_hash: b1b53cd08b6f01e35bcd87b5c4b340010c8b5b11943b2c97a5763e89ed9be3b2
description: Integrating with Salesforce Omnichannel Inventory provides more powerful features for handling B2C Commerce inventory data and working with external management systems.
products:
  - Commerce
  - B2C Commerce
release: "264"
---
# Inventory Management Using Omnichannel Inventory

Integrating with Salesforce Omnichannel Inventory provides more powerful features for handling B2C Commerce inventory data and working with external management systems.

## Omnichannel Inventory Integration

When you manage inventory with Omnichannel Inventory, you don’t create or modify inventory records in B2C Commerce. The integration handles that for you by automatically updating availability in B2C Commerce based on data received from Omnichannel Inventory. Reserving inventory for a basket or order is the only way that B2C Commerce can affect inventory levels. Perform all other inventory updates in Omnichannel Inventory.

For information on configuring and customizing Omnichannel Inventory, see the [Omnichannel Inventory topics in Salesforce Help](https://help.salesforce.com/articleView?id=inv_omnichannel_inventory_service.htm&language=en_US).

## Location Graph

The location graph is the collection of inventory locations and location groups in Omnichannel Inventory that fulfill orders from your B2C Commerce storefront. A location represents a specific inventory source, usually a physical location like a warehouse. A location group is a related set of locations, such as those covering a defined geographic area or locations that belong to a common brand or storefront. The location group aggregates and exposes the inventory at those locations. Inventory quantities for a location group are calculated as the sums of the corresponding quantities of the locations in that group. For example, the On Hand quantity for a location group is the sum of the On Hand quantities of all the locations in that group.

![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png)

Note A location isn’t required to belong to a location group, but a location group must include at least one location.

To expose inventory data, B2C Commerce associates inventory lists with the locations and location groups in your location graph. Create one inventory list in B2C Commerce for each location or location group in Omnichannel Inventory that you want to directly expose to the storefront. The ID of the inventory list must match the External Reference value of the associated location or location group in Omnichannel Inventory. If a location only fulfills orders as part of a location group, then creating a list for that location isn’t required.

![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png)

Note The integration uses the inventory list ID and the location or location group External Reference to transfer data between B2C Commerce and Omnichannel Inventory. For B2C Commerce to interact with an element of your location graph, it must have an inventory list whose ID matches that element’s External Reference.

For each B2C Commerce site, use a location or location group to represent the default inventory available to fulfill orders placed on that site. Assign the inventory list for that location or location group to the site. If you use other inventory lists, such as for a store, associate them with locations or location groups of their own.

![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png)

Note Only associate one inventory list with each site or store. Other inventory lists can expose inventory availability data for individual locations in the group.

## Inventory Reservations

When B2C Commerce creates an order, it sends an inventory reservation request to Omnichannel Inventory. Omnichannel Inventory tries to assign the reservation to the location or location group associated with that site’s or store’s inventory list. If insufficient inventory is available, the reservation fails. After Omnichannel Inventory accepts a reservation, it handles any further processing together with your order management system.

![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png)

Note When B2C Commerce sends a reservation request for a location group, it can’t affect the way Omnichannel Inventory transfers the reservation to specific locations in the group. Omnichannel Inventory and Salesforce Order Management provide tools for managing and processing inventory reservations.

If you implement a customization that requests temporary inventory reservations for baskets, the integration sends those requests to Omnichannel Inventory.

## Considerations and Limitations When Using Omnichannel Inventory

- Visible inventory availability data is eventually consistent, so availability may not immediately reflect a new reservation. This delay affects all B2C Commerce functionality that relies on availability data, such as Script API customizations that use inventory availability queries. For details, see [Omnichannel Inventory Data Synchronization](https://help.salesforce.com/s/articleView?id=cc.b2c_omnichannel_inventory_data_synchronization.htm&release=264.0.0&type=5 "Omnichannel Inventory availability data is eventually consistent, so an update can take a few seconds to appear in the B2C Commerce UI or API. Knowing how B2C Commerce caches and refreshes this data helps you interpret availability during and after inventory reservations.").
- If your custom code requests temporary reservations for baskets, those temporary reservations affect visible inventory availability. (When not using Omnichannel Inventory, the Commerce platform considers existing temporary reservations when creating reservations, but doesn’t include them in visible availability data.)
- You can’t enable the On Order Inventory feature.
- You can create up to 20 location groups.
- The IDs of inventory lists associated with locations and location groups have the following restrictions:
    - They must be 2–128 characters in length.
    - They can only include the following characters: A–Z, a–z, 0–9, \_ (underscore), - (hyphen)
- You can’t create or update inventory records in B2C Commerce. Import inventory lists into B2C Commerce, but must import product inventory data directly into Omnichannel Inventory.
    
    ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png)
    
    Note Attempting to import an individual inventory record into B2C Commerce causes this warning: **Omnichannel Inventory doesn’t support the import of inventory records. Skipping element.**
- Don’t export inventory data from B2C Commerce. It exports stale data from before the integration with Omnichannel Inventory. To export inventory data, export it from Omnichannel Inventory.
- You can’t use custom properties on inventory records.
- You can’t use B2C Commerce APIs to modify individual inventory records. Otherwise, inventory-related script API methods work the same as they do when not using Omnichannel Inventory.
- You can’t make Open Commerce API (OCAPI) calls to the `inventory_lists/{inventory_list_id}/product_inventory_records` endpoint.
- Because Omnichannel Inventory releases inventory reservations for unplaced orders after 30 days, keeping unplaced orders (in status Created) in B2C Commerce can cause availability discrepancies. To avoid this issue, use the **Auto-Fail Orders** setting in the site-level order preferences.
- Omnichannel Inventory doesn’t support explicit preorders. Instead, it represents expected inventory restocks with futures. Each future has a quantity and an expected date.
    - If a product has any futures in Omnichannel Inventory, then in B2C Commerce, its backorderable flag is true. Otherwise, that flag is false.
    - In B2C Commerce, product preorderable flags are always false.
    - In B2C Commerce, a product’s BackorderAllocation quantity is the sum of all existing future quantities for that product, and its inStockDate is the expectedDate of its earliest future. Its PreorderAllocation quantity is always zero, so its PreorderBackorderAllocation quantity always matches its BackorderAllocation.
    - Omnichannel Inventory futures require expectedDate values. When not using Omnichannel Inventory, B2C Commerce backorder and preorder quantities don’t require inStockDate values.
- Omnichannel Inventory doesn’t support perpetual availability for individual inventory records. However, you can implement similar functionality in a couple of ways.
    - Use a B2C Commerce inventory list’s **Default In-Stock** setting. When an order uses an inventory list with Default In-Stock turned on, products not on the list are automatically available. However, those products aren’t included in reservation requests. If you use Default In-Stock this way, customize your order workflow to create and manage reservations for those products.
    - In Omnichannel Inventory, set a product’s available inventory at one or more locations to 999999999. In B2C Commerce, handle that product normally. In this case, customize your order workflow to fulfill orders for that product at an appropriate location.
- B2C Commerce builds its Availability Search Index using the cached availability data received from Omnichannel Inventory. Remember that this data is considered eventually consistent.
- For best performance when implementing Omnichannel Inventory customizations, use the headless Commerce API. The corresponding Salesforce core Connect APIs and actions simply call the Commerce API under the hood. Updating the location graph is an exception, since the Commerce API doesn’t provide that functionality.
    
    ![Warning](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_warning.png)
    
    Warning Attempting to upload large inventory data files using the Salesforce core Connect APIs can greatly affect your org’s performance. When using the Connect APIs, an inventory data file must be in JSON format and is limited to 10 MB. When using the headless Commerce API, a file can be in JSON or GZIP format and is limited to 100 MB.
- You can’t use Omnichannel Inventory with a staging instance of B2C Commerce that uses a custom SSL certificate. Custom domain traffic from B2C Commerce isn't allowlisted, so communication with Omnichannel Inventory requires the embedded Content Delivery Network (eCDN). The eCDN isn’t active for a staging instance.
- You can’t use Omnichannel Inventory with the order post-processing API (Gillian cartridge).

## Inventory Modes and Data Synchronization

B2C Commerce operates in one of three inventory modes and rebuilds its availability search index from cached data. For how availability data syncs and refreshes, see [Omnichannel Inventory Data Synchronization](https://help.salesforce.com/s/articleView?id=cc.b2c_omnichannel_inventory_data_synchronization.htm&release=264.0.0&type=5 "Omnichannel Inventory availability data is eventually consistent, so an update can take a few seconds to appear in the B2C Commerce UI or API. Knowing how B2C Commerce caches and refreshes this data helps you interpret availability during and after inventory reservations.").

## Converting Existing Storefronts to Use Omnichannel Inventory

Integrating Omnichannel Inventory with an existing B2C Commerce storefront requires extra planning. For the planning checklist, see [Omnichannel Inventory Integration Setup and Configuration](https://help.salesforce.com/s/articleView?id=cc.b2c_omnichannel_inventory_integration_setup_config.htm&release=264.0.0&type=5 "Plan and implement your integration of Salesforce Omnichannel Inventory with B2C Commerce.").

## Terminology

The following terminology differs between B2C Commerce and Omnichannel Inventory.

  
| B2C Commerce Term | Omnichannel Inventory Term | Description |
| --- | --- | --- |
| n/a | On Hand Quantity | Current physical quantity |
| n/a | Safety Stock | Quantity of physical stock set aside to avoid overselling |
| Allocation Quantity | n/a | Calculated as (On Hand Quantity) - (Safety Stock) |
| Allocation Reset Date | Effective Date | Date of the most recent inventory data update; when using Omnichannel Inventory, this value can be null |
| Backorder Allocation Quantity (and Preorder Backorder Allocation Quantity) | Future Quantity (if multiple future quantities exist, the value in B2C Commerce is their sum) | Sellable expected future restock quantities |
| In Stock Date | Earliest Future Expected Date | Date when future restock quantities are expected |
| Turnover, Reserved, and On Order Quantity | Total Reserved | Quantity reserved to fulfill orders |
| Stock Level | Available to Fulfill (ATF) | Calculated as (On Hand Quantity) - (Safety Stock) - (Total Reserved); with a minimum value of 0 |
| Available to Sell (ATS) | Available to Order (ATO) | Calculated as (On Hand Quantity) + (Future Quantities) - (Safety Stock) - (Total Reserved); with a minimum value of 0 |

- **[Omnichannel Inventory Integration Setup and Configuration](https://help.salesforce.com/s/articleView?id=cc.b2c_omnichannel_inventory_integration_setup_config.htm&release=264.0.0&type=5)**  
    Plan and implement your integration of Salesforce Omnichannel Inventory with B2C Commerce.
- **[Omnichannel Inventory Data Synchronization](https://help.salesforce.com/s/articleView?id=cc.b2c_omnichannel_inventory_data_synchronization.htm&release=264.0.0&type=5)**  
    Omnichannel Inventory availability data is eventually consistent, so an update can take a few seconds to appear in the B2C Commerce UI or API. Knowing how B2C Commerce caches and refreshes this data helps you interpret availability during and after inventory reservations.
- **[Omnichannel Inventory Location Graph Changes](https://help.salesforce.com/s/articleView?id=cc.b2c_omnichannel_inventory_location_graph_changes.htm&release=264.0.0&type=5)**  
    When you manage inventory with Omnichannel Inventory, changes to the location graph in Omnichannel Inventory require coordinated updates in B2C Commerce. To make any of the changes described here, follow the appropriate steps in order.
- **[Troubleshooting the Omnichannel Inventory Integration](https://help.salesforce.com/s/articleView?id=cc.b2c_troubleshooting_omnichannel_inventory_integration.htm&release=264.0.0&type=5)**  
    If you experience any of these problems with your B2C Commerce Omnichannel Inventory integration, try these steps.