DTC · Amazon · Retail · B2B wholesale

Omnichannel Fulfillment Services

Omnichannel fulfillment that pools one SKU across DTC, retail, Amazon, and B2B channels. Rules-based routing, no triple inventory.

from $1.05
Pick + pack per order
5 days
Sign to first parcel ships
4 PM PT
Same-shift cutoff (Vancouver HQ)
Custom
Quote on everything else

What omnichannel fulfillment covers

Five workflows that make "one pool" actually work

"Omnichannel" is the most-abused word in 3PL marketing. Below are the five workflows that distinguish one-pool architecture from multi-customer-record-in-the-WMS marketing copy. If your 3PL cannot describe each of these in concrete terms, they are not running omnichannel.

01

One SKU pool, one bin location per SKU

Every SKU lives in one physical bin location regardless of how many channels it serves. No "DTC bin" and "retail bin" for the same unit. The WMS holds a single inventory record per SKU and the brand sees one inventory number across DTC, Amazon, retail, and wholesale.

02

Rules-based channel routing at pick time

The WMS reads every order against a channel-priority rule layer that decides which channel each unit serves. Default priority: retail SLA windows first, then DTC same-day, then Amazon FBA replenishment, then B2B wholesale. Overrides for stockout-risk SKUs, retailer chargeback exposure, and margin-per-channel logic.

03

Single inventory record across every channel

Shopify, Amazon Seller Central, Walmart Vendor, Saks, Nordstrom, REI, and your B2B portal all read against the same inventory record. When DTC velocity spikes, FBA replenishment auto-defers. When a retail PO arrives, the ASN window gets prioritized. No manual transfers between channel-specific bins.

04

Channel-specific packout from the same pick

A DTC order from Shopify gets branded packout with insert, tissue, and thank-you card. An Amazon FBM order gets Amazon-spec packout. A retail PO gets bulk-pack into master cartons with UCC-128 labels. All three pull from the same bin location; the pack station applies the channel-specific packout based on the order source.

05

Real-time stockout signal, one number

Customer service, merchandising, and finance all see the same inventory number at the same time. No "the warehouse says 200 units but Shopify says 0" disconnect. Stockout risk surfaces as a single signal in the Ops Console, with auto-routing rules that defer the lowest-priority channel when supply tightens.

Who this service is for

Four brand profiles we run omnichannel for

Omnichannel fulfillment fits brands shipping the same SKU catalog through 2 or more channels (DTC, Amazon, retail, B2B). Single-channel brands rarely need this architecture; the moment a second channel goes live, the inventory math starts breaking.

The DTC brand winning their first retail door

Has been Shopify-only for 2 to 4 years, just got into Nordstrom or REI. Already has Amazon FBA running. About to have inventory in three places at the cheap-tier 3PL. Wants one inventory pool from Day 0 so the retail layer does not double the storage bill.

The Series B brand with 4 channels and a fragmented inventory

$25M+ ARR. DTC on Shopify, Amazon FBA at scale, multiple retail doors, and a B2B wholesale program. Currently paying storage 3 or 4 times on the same SKU because the cheap-tier 3PL split inventory by channel. Sees the bill compound every quarter and wants out.

The brand expanding internationally with regional retail

Established US operation, adding Canadian DTC plus regional retail (Sephora Canada, Hudson's Bay, Indigo). Needs a 3PL that runs both nodes on the same WMS, with one inventory record across both countries and the right cross-border logistics on top.

The brand pre-empting the channel-split problem

Currently Shopify-only at $8M to $15M ARR, knows the next 18 months include Amazon FBA at scale and the first retail PO. Wants to onboard with the omnichannel architecture in place before the inventory split happens, rather than re-platform 9 months in.

What goes wrong at "omnichannel" 3PLs that are not actually omnichannel

Five failures that come from multi-customer-record architecture

Most "omnichannel" 3PLs are running multi-customer-record architecture under the hood. Every channel gets its own inventory pool, with all the failure modes that creates. Below are the five we hear about every week from brands switching to one-pool.

01

Storage gets billed multiple times on the same SKU

The 3PL physically splits inventory into "DTC bin" and "retail bin" and "Amazon FBA reserve" and "B2B wholesale" bins. Same SKU sits in 3 or 4 bin locations. Storage gets billed against every bin. For a multi-channel brand at meaningful ARR, the overbill on storage alone is significant, plus the labor cost of inter-bin transfers.

02

False stockouts on the channel with the empty bin

DTC velocity spikes on a Tuesday. The DTC bin runs dry by 2 PM. The retail bin has 240 units of the same SKU sitting on the floor. The WMS will not pull from the retail bin because the two bins are different "customer records" in the system. Customer-service starts answering tickets about out-of-stock items the warehouse manager can literally see. The fix is a manual transfer that takes 24 to 48 hours.

03

Stockout signal is 4 conflicting numbers

Customer service sees one inventory number from Shopify. Merchandising sees a different number from the WMS dashboard. Finance sees a third from the warehouse report. The Amazon team sees a fourth from Seller Central. None of them reconcile and nobody knows which one is true. Operational decisions get made on the wrong data and the brand loses revenue to false stockouts every quarter.

04

Retail PO ships from low-priority inventory

A Walmart Vendor PO with a 2-hour ASN window arrives at 9 AM. The 3PL's default routing pulls from "retail bin" only, which is short. Instead of pulling from the DTC bin that has units in stock, the WMS sends a backorder notice on the 855 acknowledgment. The retailer hits an OTIF compliance failure, the brand burns a chargeback, and the same SKU sits idle 200 feet away in a different bin.

05

"Omnichannel" in the marketing copy, multi-customer-record in the WMS

The 3PL website says "omnichannel fulfillment" and what they mean is they can fulfill orders from multiple channels. But under the hood, every channel gets a separate customer record in the WMS, which means every channel gets its own inventory pool. The brand discovers this when storage starts compounding a few months in. The 3PL claims "this is how omnichannel works" but the actual one-pool architecture is rare.

How we run omnichannel fulfillment at Vertex

One-pool architecture, rules-based routing, the actual workflow

The WMS configuration is where one-pool architecture actually happens. We use Datex as the system of record, which supports allocation strategies at the SKU level rather than the customer level. That distinction is the foundation of the entire architecture. Most 3PL WMS setups (including some that run on Datex but configure it wrong) hold a single customer per brand and split that customer's SKUs into channel-specific sub-locations. We hold a single SKU pool per SKU, with channel as a routing attribute on the order rather than a partition on the inventory.

Channel-priority rules sit on top of the inventory pool in a custom rule layer on top of Datex. The rule layer reads every incoming order, identifies the channel source (Shopify, Amazon, EDI 850 from retailer X, B2B portal), and decides routing priority. Default priority order is retail SLA windows first (because chargeback exposure is highest), then DTC same-day (because customer-experience risk is highest), then Amazon FBA replenishment (because Amazon's restock-limit API throttles us anyway), then B2B wholesale (because lead times are longer and tolerance for delay is higher). Brands can override the default at the SKU level or the channel level.

When DTC velocity spikes on a particular SKU, the router auto-allocates more units to DTC and queues retail to ship from the next inbound truck. No manual transfers. No second receipt cycle. The brand sees one inventory record and one stockout signal in their dashboard, even though the underlying allocation is decisioning across multiple channels in real time. For stockout-risk SKUs (defined as inventory days-on-hand under a configurable threshold), the router escalates to a "stockout watch" status that defers the lowest-priority channels first and flags the brand's account manager before any channel would go short.

Channel-specific packout runs from the same pick. A pick wave pulls SKUs from bin locations into a tote. At the pack station, the WMS reads the order source and applies the channel-specific packout: a Shopify DTC order gets branded packout with insert, tissue, and thank-you card; an Amazon FBM order gets Amazon-spec packout with the correct prep; a retail PO gets bulk-pack into master cartons with UCC-128 labels printed from the per-retailer template library. All three packouts pull from the same physical SKU pool. The brand does not pre-allocate units to channels at receipt; the allocation happens at the order level when the order routes to the pack station.

Lot-controlled SKUs (cosmetics, supplements, food-adjacent products) get a small exception: we split inventory by lot rather than by channel, because the FDA and retailer-specific lot rules require physical separation by expiration date or production lot. Even then, the routing rules still apply. The retail PO routes to the lot closest to its expiration window the retailer requires; the DTC orders pull from the freshest lot. That is still rules-based routing, just with the lot dimension layered in. The brand does not get billed twice on the same SKU; lot-split is a sub-classification of one inventory pool, not a duplicate.

The savings compound. For a multi-channel brand running multiple channels on a meaningful SKU catalog, the savings on storage alone (no duplicate bin assignments), plus labor (no inter-bin transfers), plus revenue recovery from eliminating false stockouts, add up quickly. The brand also gets a real-time inventory record they can trust, which means customer service stops triaging tickets about "out of stock items the warehouse has on the floor" and merchandising can make replenishment decisions on accurate data instead of conflicting numbers.

Omnichannel routing, live

One pool. Four channels. Rules-based routing.

The single inventory pool sits in the center. Orders pulse from each channel. The routing rule fires. Watch four scenarios cycle.

DTC

Shopify, TikTok Shop, BigCommerce. Same-day cutoff priority.

Amazon FBA

Replenishment batches on weekly cadence with capacity caps.

Retail B2B

EDI 850 / 855 / 856 / 810, ASN window per retailer.

Wholesale

B2B bulk POs, weekly batch with NET-30 terms.

Pricing snapshot

Pick + pack starts at $1.05. One pool, one bill.

The omnichannel premium is zero. We do not charge extra for routing rules, multi-channel order ingestion, or single-inventory-record architecture. That is just the WMS configuration. Storage is billed once, on the one bin location.

Pick + pack

from $1.05

starting per order, includes first item

Storage

Custom

per cubic foot per month, one pool

Channel routing

$0

no surcharge for rules-based routing

Setup fee

$0

no implementation cost

Where this service runs

Omnichannel fulfillment, every Vertex facility

One-pool architecture runs at every Vertex node. The WMS configuration is identical across facilities, the channel-routing rules are identical, and the inventory record syncs across nodes for brands running multi-node setups. A DTC order that pulls from East-Coast inventory still decrements against the same single inventory record the West-Coast facility reads.

For multi-channel brands at scale, multi-node setup typically cuts blended ground-shipping cost meaningfully while preserving the one-pool architecture across nodes. The discovery call covers which node profile fits your channel mix.

Ready for one inventory pool across all channels?

Talk to our omnichannel team

One SKU pool, one bin location per SKU, rules-based channel routing across DTC, Amazon, retail, and B2B. Single inventory record, no duplicate storage bills, no manual transfers. Pick-and-pack starts from $1.05; storage and accessorials are quoted on the discovery call. No setup fee.

Talk to our 3PL team

Custom quote in 24 hours.

Tell us what you ship and where your customers are. We respond from a human address inside one business day. No mailing list.

We reply from a human address. No drip sequence, no mailing list.