There is a wall most shops hit once their inventory sync has been running smoothly for a while. Gift sets, starter kits, buy-three packs. The names vary, but they all share one thing: something you already sell on its own is now also being sold as the contents of a set. Introduce even a handful of products shaped like that and the numbers that used to match start drifting, quietly and steadily.
The cause is not your sync settings, and it is not how you fill in your sheet. It sits in the structure itself: there is one pile on the shelf, and on the Shopify side several separate sellable units are each pointing at it. In this article we will first get that structure straight, then walk through how to model bundles, how to express them in a sheet, and how to operate them day to day so that the numbers you sync are correct. No difficult arithmetic is involved. Getting the thinking straight is very nearly all of it.
Why bundles break a naive inventory sync
Let us start by being precise about what is actually happening. Bundle quantities stop matching not because your operation is sloppy, but because there is a gap between physical reality and the way Shopify counts. Here is that gap from three angles.
One pile on the shelf, several doors into it
Say you have forty units of a popular hand cream stacked in the warehouse. Those forty sell as a standalone product, and at the same time they serve as the contents of a hand cream and soap gift set. There is only one pile on the shelf, yet there are two doors on the shop floor that lead to it.
From an operational point of view this is nothing unusual at all. Ask the warehouse team and you will get an immediate answer: we have forty hand creams. But seen from the online store, the standalone page shows a quantity and the gift set page shows a quantity too. Those two numbers are each trying to describe the very same forty units. The double promise makes more sense once you know the states — see available versus on hand, explained.
The same unit gets promised twice
Two doors also means you can promise the same single unit to two customers at once. Make forty available on the standalone page and, at the same time, make forty sets available on the gift set page, and in principle you are ready to sell eighty hand creams. From a shelf that holds forty.
That double promise stays invisible while sales are gentle. Five standalone units and three sets is nothing; the shelf has plenty of room. The danger comes when a campaign or a sale pulls orders in all at once. Overselling almost always happens on a busy day, and you tend to notice at the latest possible moment, when someone walks to the shelf to pick the order.
Shopify counts inventory per variant, independently
As for the Shopify side, quantities are held per variant — strictly speaking, per inventory item behind it — and per location. Create a gift set as a product and it becomes an entirely separate variant, with its own inventory item, carrying a number all of its own.
The important part is that nothing links those two numbers by default. Sell one gift set and the hand cream inside it does not decrease automatically. You may think of them both as pointing at the same pile on the same shelf, but as far as the system is concerned they are two completely independent counters.
This is not a reason for gloom; it is where the design begins. Since Shopify will not link them for you, the relationship simply has to be owned somewhere else — by you. And the spreadsheet you already treat as the single source of truth for inventory turns out to be a rather good place to own it.
How to model a bundle
With the structure clear, the next step is choosing an approach. Broadly there are two: treat the components as the truth and calculate the bundle's availability from them, or physically assemble kits in advance so the bundle becomes stock in its own right. Neither is superior; the choice follows from your products and your working pattern.
Let the components be the truth and calculate the set
The first approach says that only the components genuinely exist as stock, and that a bundle is merely a way of selling that has not taken physical form yet. You manage the facts — forty hand creams, twenty-five soaps — and derive how many gift sets could be made from them. It is the model closest to what the shelf actually looks like.
Its great virtue is flexibility. Change the contents of a set, or add a new combination for a campaign, and the number of real stock items you manage does not grow at all. As long as the component counts stay correct, the bundle side only needs its calculation rule swapped. For a shop that reshuffles its assortments every season, this fits beautifully.
There is a cost, though. When a set sells, somebody has to reliably decrement the components. The stock really has gone down — you took the items off the shelf to pack the order — but the figure in your sheet will not move by itself. Start without deciding how that gap gets closed and your numbers become untrustworthy within days.
A bundle's quantity is a derived number
If the components are the truth, then the bundle's quantity is not something you type in — it is something you derive. Forty hand creams and twenty-five soaps, one of each per set, gives you twenty-five sets. Whichever component is scarcest sets the ceiling.
That limiting behaviour turns into a genuinely useful instrument once you are used to it. You never have to investigate why a set is running low, because the numbers show you immediately which component is holding everything back. Replenishment priorities fall out naturally, and conversations with whoever handles purchasing become concrete.
Whether you send that derived number straight to Shopify, however, deserves a second thought. If the component is also sold on its own, allocating the entire quantity to the set leaves nothing for the standalone listing. In practice there is always a judgement about how much of a component's stock is given over to bundles. We come back to that in the operating section below.
Assemble in advance and a bundle becomes an ordinary product
The second approach is to actually build the sets rather than waiting for orders. Pack the box, label it, give it its own SKU and put it on the shelf. Now the gift set is no longer a calculated figure but stock you can count. Make twenty and the quantity is twenty, handled exactly like any standalone product.
Operationally this is dramatically simpler. A set sells, the set's quantity drops by one, and no component linkage needs thinking about. From a sync point of view the bundle is just another row like every other product, so no special rules are required. For a shop selling a staple assortment continuously, this is the shape that fits.
What you give up is flexibility. Those twenty assembled sets can no longer be sold as singles. If the set does not move while the standalone item keeps selling, your stock sits asleep inside boxes. Assembly also costs working time. Deciding between the two approaches is easier if you frame it like this.
- Components as truth: resilient to changes in the combination and nothing sits idle, but you must have a firm rule for decrementing components when a set sells
- Assemble in advance: simple to operate and syncs like any ordinary product, but assembled stock cannot go back to singles and the packing takes time
- Short selling windows with frequently changing contents favour the first; a long-running staple favours the second
- You can also run both. Assembling your staple sets while deriving your limited-time ones is an entirely practical split
Expressing it in the sheet
With the approach settled, it needs a shape on the spreadsheet. There is a single goal here: at the moment the sync runs, the number handed to Shopify must be exactly the settled value you intended. Assuming the components-as-truth approach, here are three points to get right.
Keep the base data on component rows
The foundation of the sheet is on-hand quantity per component. Hand cream, soap, drawstring pouch — each gets its own row, with per-location on-hand quantities held in separate columns. Put no calculations here; this layer holds only facts a person has verified, such as the result of counting the shelf or the quantity received. If this layer goes murky, every number resting on top of it loses its credibility.
Bundle rows can live in the same sheet, but keep in mind that they are a different kind of thing entirely. Component rows are counted results; bundle rows are calculated results. Marking them apart — a different background colour, or a separate sheet — so that it is obvious at a glance where typing is allowed and where it is not will spare you a lot of collaborative accidents. Lay the component rows out with inventory sheet column design.
Derive the set count from the limiting component
A bundle's quantity comes from asking, for each component, how many sets that component alone would allow, and then taking the smallest of those answers. Forty hand creams at one per set gives forty; twenty-five soaps gives twenty-five; sixty pouches gives sixty. The smallest, twenty-five, is this set's ceiling.
When a set uses several of the same item the thinking is identical — divide by the required quantity before comparing. A three-pack from forty hand creams gives thirteen sets. Always round down. It looks like a detail, but rounding up manufactures a set that is one unit short, so this one is not negotiable.
The thing most easily forgotten is location. When components sit at different sites, you cannot necessarily assemble across them. Forty hand creams in Tokyo means nothing if the soap only exists in Osaka — the number of sets Tokyo can make is zero. Always calculate a set count from components held at the same site.
Sync a settled value, not a live formula
This is where accidents happen most often in practice. If your bundle quantity is produced by a formula, that formula recalculates every time a component cell changes. The instant somebody edits a component count midway through a stocktake, the bundle figure moves with it. And if a scheduled sync happens to fire at exactly that moment, a half-finished number goes straight into Shopify.
The remedy is simple: keep the column you sync separate from the column you calculate in. Check the value the calculation produced, then move it across to the sync column as a settled figure. That one extra step all but eliminates the accident of stray numbers flying out while the sheet is being edited, because what gets synced is no longer this instant's recalculation but a value a person confirmed.
The timing of the sync itself is worth revisiting too. Schedule around the hours when stocktakes and goods-in are concentrated and you simply meet fewer half-finished states. And in case an odd number does slip through, keep the logs of your sync runs. Being able to trace when a value was sent, and which value it was, makes finding the cause astonishingly quick.
Running it safely day to day
Even with the design in place, bundle stock is a fast-moving area. To finish, here are three habits that head off accidents. None of them needs any special machinery; simply agreeing on them is enough to make a difference.
Hold a buffer on stock you share
A component sold both on its own and inside a set carries the double-promise risk permanently. The most practical way to protect it is to hold a buffer. With forty hand creams, think of twenty-five for the standalone listing and fifteen for sets. Or take a few units off the top as safety stock before you allocate anything at all.
A buffer can look like leaving stock idle, but it is better understood as buying back the time you would otherwise spend cancelling oversold orders and writing apologies. Weigh the cost of a few spare units against the trust lost when an order has to be cancelled and it is clear which is the more expensive. Buffer sizing is covered in the case for holding back five units.
Watch the component that runs out first
Since a bundle's quantity is decided by its scarcest component, the number you need to watch each day decides itself. There is no need to care equally about every component; following the single one that is currently setting the ceiling is enough. Adopting that view alone makes daily stock checking considerably lighter.
What to watch out for is that the limiting component changes hands. Restock the soap today and tomorrow the pouches may be the ceiling. So it helps to keep a column showing, for each set, which component is the current constraint. The point is to make the sheet readable as meaning, not merely as a row of figures.
Recount whenever you assemble
The day you actually assemble sets is a day when the meaning of your stock changes. What was a single pile of forty hand creams in the morning has become, by the evening, two things of different character: twenty-five singles and fifteen gift sets. You cannot keep using the same figure either side of that work.
So treat an assembly session as an inventory event in its own right. When the work finishes, decrement the components you used, count the sets you produced and record them in the sheet. Put that entry off and by the next morning nobody can state the correct quantity. The surest arrangement is for the person who did the packing to recount the same day.
As an operating routine, agreeing on the following order removes the guesswork. Nothing here is difficult — fixing the sequence is what prevents things being missed.
- 01Before starting assembly, check the on-hand quantities of the components you will use in the sheet
- 02When the work is done, subtract the components you consumed from their on-hand figures
- 03Count the finished sets physically and record them as the bundle's on-hand quantity
- 04Update the sync columns, run a connection test to confirm the destination, then run the sync
- 05Open the logs and confirm the intended values were sent before you call the job finished
Syncing inventory for bundles is not a matter of complicated machinery — it just asks you to look one level deeper at reality. There is one pile on the shelf and several doors into it. Decide where that asymmetry gets absorbed and everything else goes back to being ordinary inventory sync. Treat the components as the truth, or assemble in advance and give the bundle its own real stock. Pick whichever suits your products and your working pattern, make that choice explicit on the sheet, and your numbers will hold up however many sets you add.