Omnichannel fulfillment is serving every sales channel from one inventory pool: your own website, marketplaces like Amazon and Walmart, wholesale and retail purchase orders, and in-store or curbside pickup. The word describes an inventory architecture, not a service you can buy off a rate card. Nobody quotes an omnichannel rate. You pay the ordinary rate for each order type — $2.50 to $7.00 per parcel order, $7 to $20 per pallet moved, $12 to $40 per pallet per month stored (Warehouse Bridge network data, 2026) — against one pool of stock instead of three.
That distinction is the whole decision. A brand selling on four channels with four separate inventory allocations is running multichannel fulfillment, and it is paying for it in working capital. A brand serving four channels from one pool is running omnichannel, and it is paying for it in systems complexity. This guide covers what each channel actually costs to fulfill in Canada, how to decide whether your pool should be shared or split, and the specific things that break when brands try this without the right operator.
If you are still setting up the base operation, start with the e-commerce fulfillment in Canada guide. This post covers what changes once you are selling on more than one channel.
The Four Channels and Why Each Costs Differently
The same unit sitting on the same pallet costs a different amount to ship depending on which channel calls for it. This is the part brands consistently miss when they model a blended cost per order.
Direct-to-consumer parcel. Your own website. An each pick, packed to your brand standard, handed to a parcel carrier. This is the rate everyone quotes: $2.50 to $7.00 per order across Canadian markets, $3.50 to $6.50 in Toronto and $4.00 to $7.00 in Vancouver. You control the packaging, the insert, and the cutoff.
Marketplace parcel. Amazon merchant-fulfilled, Walmart, Etsy, your own accounts on someone else’s storefront. Operationally identical to DTC — same each pick, same parcel handoff, same rate band — with one difference that matters: the marketplace sets the shipping promise and measures you against it. Late shipment rates and valid tracking rates are account health metrics, not internal KPIs. An operator that misses a cutoff on your website costs you a customer complaint. One that misses an Amazon cutoff costs you selling privileges.
Retail and wholesale. Purchase orders shipped on pallets to a retailer’s distribution centre. Priced as pallet handling, $7 to $20 per pallet moved depending on the city, plus freight. The cost that does not appear on the rate card is compliance: routing guide adherence, EDI transaction sets including the 856 advance ship notice, GS1-128 carton and pallet labelling, and delivery appointments booked into the retailer’s window. Get any of it wrong and the chargeback lands on you. The retail compliance and chargebacks guide covers how that liability gets assigned between brand and 3PL, which is a contract question you want settled before the first PO.
In-store and curbside. Replenishment to your own retail locations, or customer orders picked up at a store. These are case picks or pallet moves on a schedule, not each picks on demand, so they are usually the cheapest per unit you will ship. The complexity is not in the warehouse, it is in whether your inventory system can see store stock.
The Single-Pool Decision
This is the real architectural choice, and the honest answer depends on where your inventory physically sits.
Within one facility, splitting is an allocation decision, not a location one. If all your stock lives in one Canadian 3PL warehouse, you can serve every channel from it without carrying more units. Reserving stock by channel inside that building buys you predictability — the retail PO cannot be cannibalized by a DTC flash sale — at the cost of stranded inventory. Units allocated to a channel that is not moving sit there while another channel stocks out. For most brands under a few thousand orders a month, channel reservations create more problems than they solve. Run one pool with allocation rules that prioritize committed retail POs, and let everything else draw from the same units.
Across facilities, splitting genuinely costs you inventory. This is the case brands underestimate. The moment you commit units to Amazon FBA, or open a second node in another city, you are holding separate safety stock in each place. Safety stock scales with the square root of the number of stocking locations: going from one pool to two raises it roughly 41 percent, one to three roughly 73 percent. The warehouse network design guide works through that math city by city. The same arithmetic applies to a channel-dedicated FBA position — it is a second stocking location wearing a channel’s name.
The hybrid most Canadian brands land on is a 3PL master pool that serves DTC, marketplace merchant-fulfilled, and retail, with a deliberately small forward FBA position replenished from it. That keeps Prime eligibility on your Amazon listings without parking a quarter of your inventory inside Amazon’s network. The FBA versus 3PL comparison covers the cost structures on both sides of that split.
What It Costs by City
There is no omnichannel line item. Your invoice is the sum of the order types you actually ran that month against one storage charge. Canadian rates, 2026:
| City | DTC / marketplace pick and pack | Pallet handling (retail POs) | Pallet storage (shared pool) |
|---|---|---|---|
| Toronto & GTA | $3.50 – $6.50 /order | $10 – $18 /pallet | $18 – $35 /pallet/mo |
| Vancouver | $4.00 – $7.00 /order | $12 – $20 /pallet | $20 – $40 /pallet/mo |
| Montreal | $3.25 – $5.75 /order | $9 – $16 /pallet | $16 – $32 /pallet/mo |
| Calgary | $3.00 – $5.50 /order | $8 – $15 /pallet | $14 – $28 /pallet/mo |
| Ottawa | $3.00 – $5.50 /order | $9 – $15 /pallet | $15 – $30 /pallet/mo |
| Edmonton | $2.75 – $5.00 /order | $8 – $14 /pallet | $13 – $26 /pallet/mo |
| Halifax | $2.75 – $5.25 /order | $8 – $15 /pallet | $14 – $27 /pallet/mo |
| Winnipeg | $2.50 – $4.75 /order | $7 – $13 /pallet | $12 – $24 /pallet/mo |
Warehouse Bridge network data, Q2 2026, across 150+ facilities in 25+ Canadian markets. Per-order economics are broken down further in the fulfillment cost per order guide.
Two costs sit outside this table and both are quoted per situation. EDI setup and mapping for a new retail trading partner is project work, not a rate. And returns from mixed channels are priced per unit received and inspected, which is worth pinning down early, because a retail return arrives as a pallet and a DTC return arrives as a parcel with a customer waiting on a refund.
What Actually Breaks
Four failure modes account for most omnichannel problems, and none of them are about warehouse labour.
Inventory sync latency. Your channels each hold a number for available stock. If the 3PL’s system pushes updates every fifteen minutes and you sell fast, you will oversell during promotions. Ask what the sync interval is and whether it is push or poll. “Real time” is a word, not a specification.
Allocation rules nobody wrote down. When one unit is wanted by a retail PO due Thursday and a DTC order placed this morning, something has to decide. If your operator has no written allocation logic, the decision is made by whoever picks first, and you find out when the retailer charges you for a short shipment.
Channel-blind cutoffs. A single daily cutoff is fine until a marketplace demands a tighter one. Confirm the operator can run different cutoffs for different channels rather than applying the loosest one to everything.
Returns landing in the wrong pool. A returned unit is either sellable inventory or it is not, and if it is, it needs to go back into the shared pool rather than a returns limbo that no channel can see. This is a process question. Ask how long a return takes from dock to sellable, in days.
What to Ask a 3PL
Five questions separate operators who genuinely run omnichannel programs from those who run DTC and hope:
- Which retailers do you currently ship compliant purchase orders to, and what was your chargeback rate last year?
- What is your inventory sync interval to each of my channels, and is it push or poll?
- How is a unit allocated when a retail PO and a DTC order both want it? Show me the rule.
- Can you run different order cutoffs per channel?
- How many days from returns receipt to that unit being sellable again?
The first question does most of the work. Parcel fulfillment is a commodity capability in Canada. Retail compliance is not, and an operator who cannot name their trading partners is telling you which side of the line they sit on.
Get Pricing Against Your Actual Channel Mix
A blended cost per order is a useless number if half your volume ships on pallets. Send your real mix — orders per month by channel, average units per order, pallets stored, retail trading partners — and get quotes priced against it.