Independent · Nairobi · Remote Erick Kagai, verified on shopexperts
← All case studies Case study · Anonymised Sells to trade and to shoppers Dec 2025 → ongoing Custom system
Case study02 of 03

One system I built does the three jobs Shopify could not do for a shop that sells to businesses.

The problem: the shop moved to Shopify, and three jobs it relied on had no home there.
What I did: I built one small system that does all three, on an account the shop owns.
What changed: all 13 bundles with wrong stock counts were put right. The team stopped sorting orders by hand.
How long: work started in December 2025. The shop's own developer took over the system in April 2026.

The result
13 13
What changedAll 13 bundles with wrong stock counts now show the real count, worked out from their parts.
What didn't changeNo new monthly app fees to do the same work.
OwnershipThe system and its code went to the shop's own developer in April 2026.
Engagement

Client

AnonymisedSells to trade customers and to shoppers

Job shape

A move to Shopify, plus a custom buildFrom December 2025

Tools touched

Shopify · the shop's own cloud accountTimed jobs · reacts to Shopify changes · a web screen for the team

What it replaced

A broken bundle-count toolPlus three jobs done by hand

Diagram of the operations layer sitting between Shopify and the merchant's other systems
Fig. 01 · The system: timed jobs, listeners for Shopify changes, and a password-protected screen for the team.

The problem

This shop has traded for years. It sells to trade customers (other businesses) and to everyday shoppers. In late 2025 it moved its online shop to Shopify. The products moved over fine. But the old system had quietly done some jobs behind the scenes. Shopify had no built-in way to do them.

Three gaps showed up once orders started coming in:

  • Bundle stock counts that did not update. A bundle is a set of products sold together. When a part's price or stock changed, the bundle should have changed too. The tool meant to do that was broken. Thirteen bundles showed wrong numbers. One said it had far more in stock than its parts allowed.
  • Trade orders sorted by eye. Business customers pay in different ways: a bank deposit, a card charged by hand, or an invoice paid later. Each way needs a different packing and shipping routine. The team read the payment details off every order by hand.
  • Customer groups kept outside Shopify. The team knew which customers belonged to which group. But that list lived in their marketing system. Shopify could not see it.
Diagram showing where Shopify's standard features meet the needs of a combined B2B and DTC operation
Fig. 02 · Where Shopify's standard features meet a shop that sells to both trade and shoppers.

The fix

I built one system to do all three jobs. It runs on a cloud account the shop owns. Some jobs run on a timer. Others run the moment something changes in Shopify. The team has a password-protected screen to watch it. Every run is logged as it happens, so the team can see what ran and whether it worked.

The four parts:

  • Bundle Recompute. This replaced the broken tool. It works out each bundle's stock from its parts, and keeps it current as the parts change. It runs every day, and again whenever a product is updated.
  • B2B Order Tagger. It labels each order by how it was paid, so the team sees the right packing routine at a glance. If an order arrives before its payment details, it tries again later.
  • Customer-Segment Sync. Every day it copies each customer's group from the marketing system into Shopify, so both say the same thing. It covers about 26,000 customers who appear in both. If the marketing system is slow to answer, it tries again.
  • Product labels. It adds labels to products on its own: many sizes, clearance, downloads, kits, and a "new collection" badge. When a clearance sale ends, it takes that label off again. It labelled 154 products in the first new-collection run. Labels update the moment the catalogue changes.

The shop owns it. In April 2026 the system moved into the shop's own cloud account. Nothing went offline during the move. The code went to their own developer the same month, checked and ready to build on.

The wider work went further than this system. I moved the shop's design onto a modern setup. That came with a form that asks what kind of customer you are, and a minimum order quantity. Bundle pictures now change when you pick a part. I also built a sister brand's shop before it launched. It got the same search tool, and a quote-only version with no checkout.

What changed

Diagram comparing a stack of separate app subscriptions against one owned operations layer
Fig. 03 · A pile of monthly apps, or one system the shop owns.

Three gaps closed. Bundle counts, trade order labels, customer groups and product labels all run on one system the shop owns. No pile of monthly app fees doing the same work.

Bundle numbers put right. All 13 bundles were corrected. Wrong stock counts now match what the parts allow. The bundles that had no record before now have one.

Before-and-after of a bundle's availability number being recomputed from its components
Fig. 04 · A bundle's stock count, worked out again from its parts.

Customer groups in both places. Around 26,000 customers now carry the same group in Shopify and in the marketing system. A daily run keeps it that way.

The shop owns the system. The system and its code went to the shop's own developer in April 2026. They can change it, check it and run it without me. If I vanished tomorrow, nothing would stop. The system grows with the business.

The client sells to trade customers and to everyday shoppers. The work runs from December 2025, and includes the sister brand's shop before launch. Published with the client's permission. Details are hidden at their request.