BlogHow-To

How to Manage Retail Inventory Across In-Store and Online Channels

A retail ops director's guide to managing omnichannel inventory across POS, Shopify, Amazon, Walmart, and Etsy. Single source of truth, channel allocation, BOPIS workflows, returns handling, and channel-level sell-through reporting.

Davaughn White·Founder
12 min read

Omnichannel inventory is the bug that doesn't make a sound until your top SKU oversells on Amazon and you're refunding 8 customers on a Sunday morning while your store manager is texting you that a buy-online-pickup-in-store order just came through for the same unit she sold to a walk-in 20 minutes ago.

This is the daily reality for retailers running more than two channels. One physical inventory pool. Five-plus sales channels — your POS, your Shopify storefront, Amazon, Walmart Marketplace, Etsy, maybe a TikTok Shop and a wholesale B2B portal — each pulling from the same shelves. Every channel has its own sync cadence, its own oversell tolerance, its own chargeback rules. Get it wrong and the costs stack up fast: Amazon Account Health hits, Walmart Seller Performance dings, credit-card chargebacks at $20-25 each, customer-service hours, and the slow erosion of trust that shows up as a 3.4-star review you can't get removed.

This is the playbook a retail ops director uses to keep omnichannel inventory honest. Five steps, the order they actually need to happen in, and the math behind the decisions.

Step 1: Single Source of Truth — One System Owns the Number

Before anything else, decide which system holds the master quantity. Not "we sync everywhere." One system holds the truth. Every other channel is a follower.

POS as master: Best for retailers whose center of gravity is the physical store — boutiques, specialty retail, sporting goods, anywhere foot traffic still drives 60%+ of revenue. The POS records every sale the moment it happens, and online channels poll the POS (or get pushed updates) on a tight cadence. Pro: real-time accuracy at the register, where most oversells originate. Con: legacy POS systems that lack a real API or webhook layer struggle to push fast enough to Amazon's 5-minute repricer, much less to a TikTok flash sale.

Ecommerce platform as master (typically Shopify): Best for retailers where ecommerce is 50%+ of revenue and the store is essentially a fulfillment node and showroom. Shopify becomes the inventory backbone, the POS treats every sale as a Shopify order with a "store" location, and external marketplaces (Amazon, Walmart, Etsy) connect through Shopify's native channels or a multichannel listing tool like Sellbrite, Linnworks, or Channel Advisor. Pro: ecosystem maturity — Shopify's inventory API is well-trodden. Con: in-store sales speed depends on your network connection, and your in-store cashier is now dependent on a cloud system that occasionally has a bad afternoon.

Dedicated inventory hub: Larger retailers (3+ stores, 10K+ SKUs, complex wholesale + retail mix) usually graduate to a purpose-built inventory system — Cin7, Brightpearl, NetSuite, or an ERP — that sits between the POS and every sales channel. The POS and storefronts are all clients of the hub. This is more software to run, but at a certain scale you stop having a choice.

Sync frequency that actually matters: "Real-time sync" is a marketing word. What you actually need:

- Hot SKUs (your top 50-100 by velocity): sub-5-minute sync, ideally event-driven via webhook on every sale and every receipt. - Mid-velocity SKUs: 15-30 minute sync is plenty. - Long-tail SKUs (anything selling fewer than 1 unit per week per channel): hourly or even 2x daily sync is acceptable.

The failure mode is treating every SKU like a hot SKU. You burn API calls, hit rate limits, and ironically end up with stale data on the SKUs that actually matter.

Step 2: Channel Allocation Strategy

Once one system owns the number, the next decision is whether every channel sees the full quantity or whether you allocate.

The naive approach — "show 50 on every channel because we have 50" — is exactly how oversells happen. Two channels race to sell the same unit. The lag between the sale on Channel A and the inventory update on Channel B is your oversell window, and it is never zero.

The defensive approach is channel allocation with reserves.

Reserve a buffer per channel. A common rule for hot SKUs: never expose more than 80% of available stock to any one channel. If you have 50 on hand and you are listed on POS, Shopify, Amazon, and Walmart, you might allocate 12 to each channel with a 2-unit safety buffer at the top. As units sell, the buffer absorbs the sync lag.

Hot SKU rules. For your fastest-moving SKUs — the top 5-10% by velocity that drive 50%+ of revenue — apply tighter rules. Cap exposure to 5-10 units per channel even if you have 200 in stock. Refill the channel allocation on a schedule (every 30 minutes, every hour) rather than letting it drain to zero. The cost is a slightly lower theoretical conversion rate. The savings is zero oversells on the SKUs that would actually generate Account Health hits.

Preview SKUs. For pre-orders, drop campaigns, or Etsy made-to-order listings, the inventory math is different — you are selling capacity (production slots) rather than physical units. Keep these on a separate inventory pool entirely. Mixing pre-order capacity with on-hand inventory is the second-most-common cause of omnichannel inventory disasters.

The allocation rule of thumb: if a channel's share of revenue is X%, allocate roughly 1.2X% of stock to it as a starting point. Re-tune monthly based on actual sell-through.

Step 3: BOPIS + Buy Online Ship From Store

Buy Online Pickup In Store and Ship From Store are the two omnichannel workflows that separate retailers who actually run on a unified inventory pool from retailers who just claim to.

BOPIS workflow that doesn't break:

1. Customer orders online, selects a specific store for pickup. 2. The order immediately decrements that store's local inventory (not the global pool — the local pool, so a walk-in at that store can't double-sell it). 3. Store staff get a pick task with a target prep window — typically 2 hours for in-stock items, longer for items that need to be transferred. 4. The customer gets a "ready for pickup" notification with a hold timer (most retailers use 7 days). After the hold expires, inventory returns to the local pool and the customer is refunded or moved to a re-ship workflow. 5. Pickup confirmation closes the loop. The unit is now permanently gone from inventory.

The failure modes are predictable. Skip step 2 and you sell the same unit twice. Skip the hold timer and your back-of-house piles up with abandoned BOPIS orders that block real selling space. Skip the explicit pickup confirmation and you'll end up with phantom "sold but still in store" inventory that takes a quarterly cycle count to surface.

Ship From Store economics:

Ship from store is the move that turns physical retail into a distributed fulfillment network. A customer in Houston buys from your Shopify store. Your Houston location has the unit, your central warehouse doesn't. Routing the order to the store is faster, cheaper on shipping, and clears slow-moving local stock that would otherwise need a markdown.

The math: ship-from-store typically saves $4-9 per order in shipping cost vs. a central warehouse, and the conversion of slow-moving local stock to revenue at full price is worth more than the labor cost of pulling and packing — as long as your store payroll has slack hours to absorb the work.

The hard part is the routing logic. You need a rule engine that picks the right fulfillment node based on distance, current inventory, store labor capacity, and SKU age. Shopify's native ship-from-store routing is workable for 1-3 stores. Beyond that, you need an order management system (OMS) layer — Manhattan, fluentcommerce, or for SMB retailers, the routing built into platforms like Brightpearl or Cin7.

Step 4: Returns Across Channels

The return that kills your inventory accuracy is the in-store return of an online order. Customer walks in with an Amazon order in hand and a return label they printed at home. Your associate processes the return at the register. What just happened in your inventory?

If your systems aren't wired correctly, three bad outcomes:

1. The unit gets re-added to in-store inventory but Amazon is never told the unit returned, so Amazon thinks it's still gone. 2. The unit gets refunded through Amazon (creating an Amazon credit memo) but never gets re-added to any inventory pool. 3. The unit gets re-added to the wrong location — re-stocked at the store when it should have been routed back to the central warehouse to refill an Amazon FBA shipment.

The workflow that works:

- Every return — regardless of channel of origin — is processed through a single returns interface tied to the master inventory system. - The returns interface captures: original channel, original order ID, condition (sellable, repackage, defective, scrap), and target location for the returned unit. - A condition of "sellable" plus a target of "this store" puts the unit immediately back in local inventory with a flag noting it's a return (helps you track return-driven shrinkage trends). - A condition of "sellable" plus a target of "FBA replenishment" puts the unit in a hold queue for the next FBA shipment. - A condition of "defective" or "scrap" never re-enters sellable inventory at all and routes to the appropriate quality-control or write-off ledger.

Restocking and relocation budget: Return processing labor costs $4-8 per unit when done well. Returns that get re-stocked at the wrong location cost much more — they generate phantom inventory that triggers oversells on the channel where the unit "should" be. Build relocation runs into your weekly logistics schedule. Don't let returns pile up at a single store and starve your FBA channel.

Step 5: Reporting — True Sell-Through by SKU + Channel

The reporting most retailers run is "units sold by channel" and "revenue by channel." Both of those are useful, neither tells you what you actually need to know to run the business.

The report that drives decisions is true margin per SKU per channel after fees, returns, and shipping.

A unit that sells for $80 looks identical in a top-line report whether it sells in-store, on Shopify, on Amazon, or on Walmart. The economics are wildly different:

- In-store: $80 revenue, ~$0 fees, ~3% credit card processing. Net margin on a $40 COGS unit: ~$37.60. - Shopify direct: $80 revenue, ~2.9% + $0.30 payment processing, ~$6 average shipping subsidy on free-ship orders. Net margin: ~$31.40. - Amazon: $80 revenue, 15% referral fee ($12), FBA fulfillment fee on a 1lb item (~$5.65), monthly storage fees prorated. Net margin: ~$22-25. - Walmart Marketplace: $80 revenue, 6-15% referral fee depending on category, plus WFS fees if used. Margin sits between Shopify and Amazon depending on category. - Etsy: $80 revenue, 6.5% transaction fee, $0.20 listing, ~3% payment processing, plus offsite ads tax (15% if applicable). Margin can rival Amazon for craft/handmade categories where Etsy intent is strong.

Returns are the second variable. A SKU that returns at 3% across channels but at 18% on Amazon is a SKU you should consider delisting from Amazon — the return logistics cost plus FBA removal fees often turn a marginal-positive Amazon listing into a loser.

What to delist: any SKU that, after fees and returns, generates net margin under your channel-specific threshold. Most retailers we work with use 12-15% net margin as the cutoff for marketplace channels. Below that, the operational cost of carrying the listing exceeds the contribution it makes.

The dashboard a retail ops director actually needs:

- Sell-through rate by SKU by channel by week. - Net margin by SKU by channel after all fees and shipping. - Return rate by SKU by channel. - Stockout incidents per channel per week (channel allocation tuning signal). - Oversell incidents per channel (sync cadence tuning signal).

If you have those five reports running on a weekly cadence, you can make every other inventory decision with data. Without them, you are guessing.

Run your retail inventory on Deelo POS

Free account, no credit card required. Deelo POS unifies in-store sales, online orders, BOPIS, ship-from-store, and returns on one inventory pool — with channel allocation rules, sub-5-minute sync to Shopify, and channel-level margin reporting built in.

Start Free — No Credit Card

Frequently Asked Questions

What is omnichannel retail inventory management?
Omnichannel inventory management is the practice of treating every sales channel — physical store, ecommerce site, Amazon, Walmart, Etsy, wholesale — as a single demand source pulling from one unified inventory pool. The goal is that an item sold on any channel immediately decrements availability on every other channel, eliminating oversells. The hard part is the technical plumbing: which system owns the master quantity, how fast each channel syncs, and what allocation buffers protect against sync lag.
How often should inventory sync between my POS and Shopify, Amazon, and Walmart?
Sync cadence should match SKU velocity. Hot SKUs — the top 50-100 by sales volume that drive most of your revenue — should sync in under 5 minutes, ideally event-driven via webhook on every sale and every receipt. Mid-velocity SKUs are fine on 15-30 minute sync. Long-tail SKUs (under 1 unit per week per channel) sync hourly or 2x daily. Trying to push sub-minute sync on every SKU burns API rate limits and starves the SKUs that actually matter.
How do I prevent overselling the same item on multiple channels?
Three-layer defense. First, designate one system as the master inventory record (your POS, your ecommerce platform, or a dedicated inventory hub) and treat every other channel as a follower. Second, use channel allocation rather than exposing 100% of stock to every channel — for hot SKUs, cap any single channel at 5-10 units even if you have 200 in stock. Third, keep a 10-20% safety buffer that no channel sees, to absorb sync lag during high-velocity moments. Real-time sync alone is not enough.
Should I use my POS or my ecommerce platform as the master inventory system?
Use the POS as master if 60%+ of revenue is in-store and your physical locations are the center of gravity. Use the ecommerce platform (typically Shopify) as master if 50%+ of revenue is online and stores function more as fulfillment nodes and showrooms. Once you operate 3+ stores, 10K+ SKUs, or have a meaningful wholesale channel, graduate to a dedicated inventory hub like Cin7, Brightpearl, or NetSuite that sits between the POS and every sales channel. The wrong choice creates either slow in-store checkouts or constant oversells online.
How does ship-from-store improve omnichannel margin?
Ship-from-store routes online orders to the nearest physical location with stock instead of shipping from a central warehouse. Three benefits: shipping cost typically drops $4-9 per order because the package travels less, slow-moving local stock converts to full-price revenue instead of needing a markdown, and customer delivery times improve. The trade-off is store labor — the math works as long as your store payroll has slack hours to absorb pick-and-pack work without missing in-store service.
When should I delist a SKU from a marketplace channel?
Delist when net margin per SKU per channel — after referral fees, fulfillment fees, return rate, and shipping subsidies — falls below your threshold. Most retailers use 12-15% net margin as the floor for marketplace channels. A SKU that nets 8% on Amazon after a 15% referral fee, FBA fees, and an 18% return rate is costing you more in operational complexity than it contributes in revenue. Run channel-level margin reports monthly and prune the bottom 10-15% of marketplace SKUs every quarter.

Explore More

Related Articles