01The problem.
Fathom is an Australian shop selling cookware, tableware and bundles (sets of products sold together). Its stock sits in three places: the Crown Street store, a warehouse, and goods still on the way from suppliers.
Three stock problems sat on top of each other. First, shoppers could not see real stock for bundles made of several products. The pages said "ships in X days", a stand-in line that cost trust. Second, a bundle's parts were often in different places. The forks might be on pre-order and the knives in the warehouse. So the real question was not "how much is at this location?" It was "can this bundle be put together from stock anywhere?" Third, Shopify said it was closing Stocky, the app that handled supplier orders. That order data had to move to a new app before the deadline.
No ready-made app could do the maths across locations. And Shopify's own Bundles feature does not show per-location stock on the shop's pages.
02What I tried first.
The first version of the supplier-order app worked for simple products. Then Fathom's range grew past 2,238 variants, and the app hit a wall. Shopify hands over products 250 at a time, and the app fetched stock one variant at a time. It would hang, restart, and repeat. I owned that mistake and rebuilt how the app fetches data, so it copes with a big range.
My first bundle maths worked out stock for each part, location by location. It missed the case where parts sit in different places. A bundle with forks on pre-order and knives in the warehouse showed "available for immediate dispatch". The shopper would really have had to wait. The fix was not better maths per location. It was a different question: which parts, across all locations, add up to a complete bundle?
03The fix.
Two small apps that work together, on one small cloud server.
- Pre-Order Sync pulls open supplier orders from Prediko, the app that replaced Stocky. It writes each variant's pre-order quantity and arrival date to the shop's pages. I rebuilt it for a big range. It skips deleted and archived products, and looks only at variants on open orders. It slows down when Shopify asks it to. The move off Stocky finished before Shopify's deadline.
- Bundle Stock Sync works out the true stock for every bundle across all three locations. It adds up each part's stock from every location, to answer "can this bundle really ship?" It also takes off what is already in stock, so the pre-order count is never counted twice.
Both apps come with small check tools. Any future change to the maths can be tested against live data before it goes live.
04What changed.
Product and cart pages now show the true stock at each location, and the true pre-order arrival date. That holds for single products and for bundles, across all three locations. I checked it against live data. The Bistrot Cutlery Horn Set bundle's pre-order count went from 25 to 24 once the double count was fixed. The Asparagus Knife shows the right count of 8 in stock. A full test run on the live shop checked 74 of 74 stock items (SKUs) across 7 open supplier orders. Zero errors. Both apps have run without trouble since early 2026.
05What I built.
- Pre-Order Sync: a Node.js app that runs every 30 minutes, and again the moment Shopify reports a change. It pulls open supplier orders from Prediko. Then it writes each variant's pre-order quantity and arrival date to the shop's pages. Rebuilt for a big range (2,238+ variants).
- Bundle Stock Sync: a Node.js app on the same 30-minute schedule. It works out per-location stock and arrival dates for every Shopify Bundle product. That includes bundles whose parts sit in different locations.
- Connected systems: Prediko (it manages supplier orders, and replaced Stocky), Shopify Bundles, and Shopify's own data connection.
- Design: Shopify's Dawn theme, v15.2. I added bundle stock on product pages, pre-order arrival dates, and bundle status in the cart.