Sync Master
Blog

Designing Inventory Sync When Shopify Isn't Your Only Channel

Shopify InventoryOperations

Summary

A marketplace, a wholesale channel, a shop floor. When several storefronts sell from the same shelf, inventory sync gets a good deal harder. Here is how to pick one owner for the number, choose how to allocate stock, use a spreadsheet as the hub, and notice drift before it costs you.

While you sell only through your Shopify store, your stock figure needs to live in exactly one place. Then you list on a marketplace, or start shipping wholesale from the same shelf, or open the shop on weekends. From that moment, one physical shelf is being drawn down by several storefronts at once. There is still only one pile of stock, but suddenly there are several numbers describing it.

This article is not about having several warehouses. It does not much matter where the stock sits; what matters is that several sales channels are selling from the same pool. Deciding who owns the number, choosing how to allocate it, using a sheet as the hub, and building a habit that catches drift. We will take those four in order.

One shelf, several storefronts: what to settle first

When several storefronts sell from the same shelf, the first thing to settle is not technical but a matter of ownership. Which system holds the authoritative stock figure? Leave that vague and nothing you add later will make the setup stable.

Which system owns the number?

The stock figure should have exactly one owner. Shopify can be the source of truth, or a spreadsheet, or your back-office system. What matters is that there is one place everybody can point to and call correct, and that everything else is clearly downstream of it.

Naming an owner changes how questions get answered. When someone asks whether the marketplace showing 3 or Shopify showing 5 is right, a settled source of truth lets you say straight away that the master says 5, so it is 5, and the marketplace needs correcting. Without one, your only option is to walk to the shelf and count. That difference matters far more in daily operations than it sounds.

Note that deciding who owns the number is separate from deciding where numbers get typed in. Store staff can absolutely have a place to enter stocktake results, as long as the path from that entry to the master stays a single line. Avoiding overselling on Shopify provides the baseline for cross-channel oversells.

Two-way sync is a trap

Once you have several channels, two-way sync starts to look very appealing. Sell anywhere and both numbers go down. It sounds ideal, but it is a remarkably fragile arrangement. There are three reasons: there are two writers, the two of them never agree on the order of events, and updates end up triggering updates in a loop.

With two writers, both claim to be right at the same instant. Shopify writes 7, the marketplace writes 6, and whichever arrives last wins — except that the order changes run to run depending on how the traffic happens to land. Add a setup where one side's update triggers the other's, and a small discrepancy bounces back and forth, amplifying until the number oscillates between 7 and 6.

So keep the direction of your sync uniform: the master distributes outward to every channel, and a sale made on a channel comes back as an input that reduces the master. Separating the direction of writes from the direction of reporting tidies the whole design up considerably.

Latency adds up into a window

The other thing that gets overlooked is accumulated delay. A few minutes from an order landing to the master figure moving, then a few more from the master reaching the next channel. Each hop is small, but by the time you have traced the whole path the total is comfortably long.

And that total is precisely the width of your danger window. If the window is ten minutes, then for ten minutes several channels can each sell the same last unit. Most days nothing happens. On the day a sale or a press mention concentrates orders, it bites. The value of a shorter sync interval lies less in everyday accuracy than in narrowing this window.

Three broad ways to allocate the pool

With an owner settled, the next question is how to hand that stock out. There are three broad options and each carries a real trade-off. The more you reduce missed sales, the more you risk overselling; the safer you play it, the more stock sits idle.

Show the whole pool everywhere

The simplest approach is to show the full quantity on every channel. With twenty units in stock, Shopify shows 20 and the marketplace shows 20. Every storefront gets a chance at the last unit, so in theory this produces the fewest missed sales of any strategy.

In exchange it carries the greatest oversell risk. All twenty units being visible on both storefronts also means forty buy buttons are live. For slow-moving products with plenty of stock relative to your sync interval, this is genuinely fine. The danger appears when quantities drop into single digits and when orders suddenly concentrate.

If you do share the whole pool, at least decide in advance what happens when stock runs low. Below three units, carve that one SKU out, or shorten its sync interval. You are not obliged to apply one strategy to every product, and changing the treatment only for items that have entered the risky zone is a perfectly workable way to run things.

Carve out a fixed allowance per channel

At the opposite end is fixing an allowance per channel. Decide that of twenty units Shopify gets 12 and the marketplace gets 8, and each storefront sells only within its own allowance, which makes overselling impossible by construction. The numbers are easy to grasp and easy to explain internally.

The weakness is stranded stock. While the marketplace's 8 sit unsold, Shopify's 12 run out, and you end up out of stock on your main storefront while eight units still exist. If you carve out allowances, you also need a routine that redraws them regularly, in step with how things are actually selling.

Where carved-out allowances genuinely earn their keep is when you have made per-channel commitments: reserving a hundred units a month for a wholesale customer, or dedicating a block to a marketplace campaign. Commitments like that have to be honoured in numbers, so carving them out from the start makes them far easier to explain and to verify.

Share the pool minus a buffer

The arrangement that fits real operations best usually sits between the two. Share the pool, but hold a set quantity back as a buffer. With twenty units, keep 3 as safety stock and show 17 everywhere. Missed sales stay close to the shared model while oversell risk moves toward the carved-out one.

  • Share everything: fewest missed sales, greatest oversell risk. Suits slow movers with comfortable stock levels
  • Per-channel allowance: no overselling, but stock gets stranded. Suits limited editions and wholesale with per-channel commitments
  • Shared minus a buffer: the middle ground, and where most products settle
  • Size the buffer by what could sell during one sync interval. If a product sells three an hour, three is a sensible starting point

The buffer does not have to be uniform. Make it thicker for fast sellers, thinner for slow ones, and zero where that makes sense. What matters is being able to explain why a number is what it is. Not roughly five, but five because five is the most that can sell within one sync interval — that version you can revisit later.

Using a spreadsheet as the hub

Once ownership and allocation are decided, they have to be written down somewhere. A spreadsheet suits this role well: everyone can look at it at once, changes leave a history, and it can do the arithmetic on the spot.

One row per SKU as the master

The basic shape is one row per SKU, and that row is the master record for it. How many units physically exist, how many of them each channel is being shown, how large the buffer is. Everything lines up across a single row, so a glance at that row gives you all the information a decision needs.

You could instead grow downward, adding a row per SKU-and-channel combination, but allocation work is better served by growing sideways. The reason is simple: allocations exist to be compared. Scatter one SKU's figures down a column and you can no longer check by eye that the allocations add up to the stock you actually hold. The hub sheet can reuse inventory sheet column design as-is.

Give each channel a column so allocations are visible

So give each channel a column of its own. A column for on-hand stock, one for the buffer, then one each for Shopify, the marketplace and wholesale, sitting side by side. Only one of those columns is what the sync sends to Shopify, but having the others visible on the same row is the point: the whole allocation reads at a glance.

It is exactly the same idea as holding per-location on-hand quantities in separate columns. A column expresses whose number this is, and whether that whose is a location or a channel, the sheet-side design comes out the same. Just keep in mind that what actually gets written into Shopify is always a figure tied to a Shopify location.

Set rules for what may be written back

Build a hub and someone will inevitably want to write back into it: return the quantities sold, reflect another channel's results. That instinct is natural, but without agreed discipline the single source of truth you carefully created quietly becomes two again.

  1. 01Decide who may edit the on-hand column — for instance only the receiving and stocktake roles
  2. 02Derive the allocation columns with formulas, and make it a rule that people do not overwrite them by hand
  3. 03Take other channels' sales results into a separate column as an input that reduces on hand, never straight into the master column
  4. 04Keep a column for the date and reason whenever someone does correct a figure by hand

Short rules are the ones people follow. Even just colour-coding three kinds of column — this one is a formula, this one is for people, this one is for the sync — cuts accidents noticeably. On a sheet several people share, being able to see at a glance which columns you may touch is the single most effective safeguard.

Building a habit that catches drift

However carefully you design it, the numbers will drift. The problem is not the drift itself but time passing without anybody noticing it. So let us finish with the routine that finds drift and deals with it.

Reconcile at the same time every day

The most dependable habit is reconciling at a fixed time each day — end of trading, or before opening the next morning, whichever suits. Compare the total on hand, the total you believe you allocated across channels, and the quantities each channel is actually displaying, and confirm those three still relate to each other in a way you can explain.

You do not need to look at every SKU daily. Your fastest movers plus anything down to single digits is plenty. If your sync runs leave logs, check which SKUs the last run updated as well. Drift almost always shows up on products where something happened recently. The narrower the scope, the more likely the habit is to survive.

Reconciliation lasts longest when it belongs to a named person. Turn it into a three-line checklist and fold it into the morning routine. Keep it to five minutes and it still gets done on the busy days. For a habit meant to catch drift, running every day matters more than being precise. Four numbers that tell you if your sync works shows how to track the drift.

Treat every oversell as a signal

When an oversell happens, looking after the customer comes first and nothing else competes with that. But once the apology is done, stop for a moment. That single incident is not bad luck — it is a signal telling you that some part of your design is thinner than you thought.

What you want to know is why that one unit sold twice. Was the sync interval too long, was the buffer zero, or was the allocation simply out of date? Each cause has a different remedy: shorten the interval, thicken the buffer for that product alone, or redraw allocations more often. Write down a reason for each incident and after a few months your own weak spots become impossible to miss.

Agree in advance when to stop and count

There is one more thing worth settling ahead of time: how far out of line the numbers have to be before you pause the sync and go count. Work that boundary out in the middle of an incident and the decision always comes too late. Fix it as a concrete number while things are calm.

Something like: stop if a top SKU is off by three or more, or if the same SKU drifts two days running. Stopping means a specific sequence — take the scheduled sync off, count physically and rebuild the master, confirm the destination with a connection test, then restart with a small batch. Decide who is allowed to make that call, too.

Sharing one shelf between several storefronts comes down to handing out a single number with the right weighting. Settle on one owner, choose an allocation strategy, make the split visible in a sheet, and keep a habit that catches drift. Whether you run two channels or four, the thinking is identical. Build the shape on a few dozen key SKUs first, confirm it holds, then widen it out.

Related reading

Other articles you might like

  • Shopify InventoryOperations

    Avoiding 'we sold it but it was out of stock' on Shopify

    Overselling is one of the most awkward inventory issues out there. Sync lag, insufficient buffer, missed settings—we organize the patterns of root causes and cover the preventive measures you can take from the sheet-sync side.

  • Shopify InventorySync Basics

    Available vs On Hand: The Shopify Inventory States That Decide Whether Your Sync Is Right

    Shopify does not store your stock as a single number. It splits it into on hand, available, committed, unavailable and incoming. Build a sync without knowing the difference and you get a system that works correctly while looking broken. Here is what each state means and which number belongs in your spreadsheet.

  • OperationsTroubleshooting

    The Return You Restocked, Erased by the Next Sync: Returns and Shopify Inventory Sync

    You accept a return, put the unit back into stock, and by morning the number is back where it started. That is not a broken sync — it is what happens when two different things are writing your inventory. Here is what Shopify's return flow does to stock, and how to make it fit a sheet-driven process.

Stop pasting stock numbers by hand.

Install Sync Master on Shopify and run your first sync in under five minutes.