Independent · Nairobi · Remote Erick Kagai, verified on shopexperts
← All case studies Case study · Fathom Cookware · 3 locations 2024 → ongoing Two custom apps
Case study03 of 03

How Fathom's product pages started telling the truth about stock across three locations.

The problem: Fathom's bundle pages said "ships in X days" instead of a real date. The stock count also missed parts kept in different places.
What I did: I wrote two small apps. They put the true stock and arrival date on all 2,238 product variants.
What changed: a full test on the live shop checked 74 of 74 stock items, with zero errors.
How long: Fathom and I have worked together since 2024, job after job.

The result
74 74
What changedStock items checked across 7 open supplier orders in a full test on the live shop. Zero errors.
What didn't changeThe shop's design stayed as it was. No new monthly app fee.
DurationStill working together: 7+ jobs since 2024.
Engagement

Client

FathomAustralian cookware and tableware, 3 stock locations

Job shape

Ongoing partner7+ jobs since 2024

Tools touched

Shopify Bundles · PredikoNode.js · Dawn 15.2

What it replaced

StockyMoved off it before Shopify switched it off

01The problem.

Fathom homepage: Australian cookware and tableware storefront
Fig. 01 · fathom.com.au: sells to shoppers and to trade, from three stock locations.

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.

The question a shopper really has is not "how much stock is at this location?" It is "can this bundle ship to me, and when?"
Fathom bundle product page showing per-location stock and a pre-order arrival date
Fig. 02 · A bundle page: stock at each location and the pre-order date, replacing the old stand-in line.

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.

Pipeline diagram: Prediko purchase orders feed the Pre-Order Sync, which feeds bundle stock calculations and customer pages across three locations
Fig. 03 · The chain: Prediko supplier orders → Pre-Order Sync → bundle stock → the shop's pages, across 3 locations.
Fathom cart page showing accurate bundle stock and arrival messaging
Fig. 04 · The cart page: true bundle stock and arrival dates.

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.

Before · double-counted
25
pre-order count
Bistrot Cutlery Horn Set bundle: units already in stock were counted again in the pre-order figure.
After · checked live
24
the true count
The fix, checked against live data: the pre-order count now takes off what is in stock.

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.
What I'd do differently

Two things I got wrong on this job, looking back.

Every case study should end with this section. The part I'd do differently is the part worth writing down.

Mistake 01

I didn't plan for catalog scale on day one.

The first version of the purchase-order sync retrieved inventory one variant at a time and hit a 250-product pagination wall as the catalog grew past 2,238 variants: hang, restart, repeat. Catching it meant owning the scope correction and rewriting the data-fetching strategy for catalog scale. Catalog growth is now part of every sync design from the start.

Mistake 02

My first bundle math missed the cross-location case.

The first calculation computed per-location stock independently for each component, so a bundle with forks at Pre Order and knives at the Warehouse showed "available for immediate dispatch" when the customer actually had to wait. The fix wasn't tighter per-location math. It was asking a different question: which components combine across locations to make a complete bundle?

In their words

What the client said.

Eric is a highly competent and thorough developer.

Tim GordonFathom
Read all 202 reviews
Author
Erick Kagai

Erick Kagai

Independent Shopify consultant. I write case studies the way I write proposals. The bad news sits in the same room as the good. About Erick

A first call · 30 minutes

Is your shop showing stock numbers you do not trust?

Bring it. The first ten minutes go to one question. Is this a build job, an app-settings job, or a way-of-working job? Some turn out to need none of those.