← Back to the blog
7 min read

How to Avoid Selling Products That Are Already Out of Stock

inventorymultichannel

You sell on a marketplace, in your own store, and maybe on one more channel. A customer buys the last unit in one channel, and moments later someone orders it in another — because there the stock still showed “available”. Now you have to cancel the order, refund the money and apologize for something that wasn’t the customer’s fault. This is overselling — the most common and most expensive mistake in multichannel sales.

In this guide we show why overselling happens across channels and exactly how to prevent it — no filler, just practices that work in a real store.

What overselling really costs

Before the fixes, it’s worth seeing that this is not a “minor inconvenience”:

  • Cancellation and refund — an operational cost plus the loss of an order you already “had”.
  • Negative rating — on a marketplace a single seller-fault cancellation can drag down a listing’s rank in search results.
  • Lower visibility — marketplaces demote sellers who cancel orders due to missing stock.
  • Lost trust — a customer who got a “sorry, we’re out” rarely comes back.

Overselling is therefore not just one lost cart, but a real hit to your reputation and future sales. That’s why it pays to eliminate it at the source rather than firefight the aftermath.

Why overselling happens in multichannel

The problem almost always comes down to one thing: every channel keeps its own picture of stock, and those pictures drift apart. The most common causes:

  • Separate stock per channel — the marketplace counts its units, the store counts its own, the spreadsheet counts a third. Nobody knows the one true number.
  • Update lag — a sale in one channel only comes off the count in another after a manual correction or a rare sync. In that window the unit can be sold twice.
  • Stock decrements only at shipping — between placing the order and packing the parcel the product is formally “still there”, so another channel keeps offering it.
  • Unhandled variants — size M is sold out, but the system counts stock at product level, so M still shows as available.
  • Human error — a typo in an SKU, a mixed-up variant, a forgotten update after a return to the supplier.

The conclusion is simple: as long as stock lives in several places at once, overselling is only a matter of time. The steps below close each of these gaps in turn.

Fix 1: one shared stock level for all channels

The foundation. Instead of counting inventory separately in each channel, you keep one central stock level and treat channels as its consumers. Then there is only one true unit count, and the marketplace, store and every other channel merely reflect it.

The prerequisite is consistent SKUs as the shared key — the same product and variant code on every side. Without it the system can’t link the same physical unit across channels. Cleaning up SKUs is the most overlooked yet most important step — we broke it down in a separate guide on Allegro–WooCommerce inventory synchronization.

In Sellaro, products and variants from all connected channels land in a shared inventory view split into available, low and out-of-stock — so in one place you see the true unit count regardless of where the items are being sold.

Fix 2: reserve the unit at order time

A key shift in thinking: stock should come off at the moment of the order, not only at shipping. When a customer places an order, the system immediately reserves the unit — it subtracts it from the available pool even if the parcel won’t leave until tomorrow.

Why this matters so much:

  • it closes the window in which an “already sold but not yet shipped” unit is offered elsewhere,
  • it gives a real picture of availability — available = in stock minus reserved,
  • it protects you at peak, when orders arrive faster than you can pack them.

Without reservation, even good synchronization lags by your fulfilment time — and that’s often enough to sell the last unit twice.

Fix 3: frequent and ideally real-time synchronization

The shorter the gap between a sale and the stock update on the other channels, the smaller the risk of overselling. You have two models:

  1. Scheduled synchronization — the system refreshes stock every few to a dozen minutes. Simple, and enough for moderate traffic.
  2. Event-driven (real-time) synchronization — stock updates immediately after a sale, triggered by an event (for example via webhooks). Recommended for high volume and for low-stock products that sell out fast.

Hourly synchronization is not enough under heavy traffic — at peak the last unit can be sold several times before the next cycle arrives.

Sellaro polls channels on a schedule (per-channel polling), and its automation engine runs on domain events in a WHEN→IF→THEN model — so a stock decrement can immediately trigger an action (a notification, a webhook, a log entry) instead of waiting for the next pass.

Fix 4: handling variants at the right level

If you sell clothing, footwear or anything in sizes and colors, stock must be counted at variant level, not product level. Otherwise size M drops to zero while the listing still shows the product as available — and you sell an M you don’t have.

Make sure that:

  • each variant has its own SKU and its own stock,
  • the system distinguishes variants on both sides (marketplace and store),
  • with multiple warehouses the stock sums correctly, or you can designate a shipping warehouse.

It looks like a detail, but in a size-based catalog it’s the variants that account for most overselling.

Fix 5: low-stock alerts and a safety buffer

The final layer of defense is to get ahead of the problem before it happens:

  • Low-stock alerts — a notification (email or SMS) when units drop below a set threshold, so you have time to reorder or pull the listing.
  • Safety buffer — deliberately show a few units fewer than you physically hold. This margin absorbs sync lag and returns in progress.
  • Automatic delisting at zero — when stock hits zero, the product disappears from available instead of continuing to sell.

In Sellaro, email (SMTP) and SMS notifications are one of the automation engine’s actions, so an alert like “last set left, restock” can be set as a rule on a low-stock event.

Frequently asked questions

What exactly is overselling?

It’s selling more units than you actually have in stock — usually because two channels offered the same last item at the same time. It ends in a cancellation, a refund and a worse seller rating.

Is inventory synchronization alone enough to avoid overselling?

Synchronization is the foundation, but not the whole answer. If stock only decrements at shipping or the cycle is too infrequent, you still have a window for a double sale. The best result comes from combining shared stock, reservation at order time and frequent (ideally real-time) synchronization.

How do I handle overselling with product variants?

Stock must be counted at variant level, not product level. Each size and color should have its own SKU and its own stock, and the system must distinguish variants in every channel. Otherwise a sold-out size will still show as available.

Why set a safety buffer if I already have synchronization?

The buffer absorbs what synchronization can’t catch in time: lag between channels, returns in progress, units damaged in the warehouse. Showing a few units fewer than you physically hold is a cheap way to ensure the last unit is never sold twice.

Summary

Overselling in multichannel comes from stock living in several places at once. You close the problem with five steps: one shared stock level based on consistent SKUs, reserving the unit at order time, frequent (ideally real-time) synchronization, counting stock at variant level, and low-stock alerts with a safety buffer. Together they eliminate the window in which the same product can be sold twice.

Want to run stock for all your channels from one place? See how to connect Allegro with WooCommerce into one system, and work out your cost in Sellaro. We’ll add any missing integration for free within your plan.