Every order has to reach a pair of hands.
Nothing at Jahda ships from a shelf. A sale means a specific craftsperson picks up a specific set of materials and makes the piece. Which is why it mattered that orders arrived in five separate admin panels — Shopify, WooCommerce, Amazon, Etsy, eBay — and reached the workshop only when somebody remembered to go looking. Five logins, checked whenever. The order pipeline was, functionally, a person’s memory.
And margins were guesswork. Each channel takes a different cut, in a different way, on a different schedule. Nobody could say what a given necklace had actually earned — only what it had sold for, which is a very different number.
Five APIs, five vocabularies for the same thing.
The problem was never the absence of a dashboard. It was the absence of one truth. Shopify hands you an order as a tidy webhook. Etsy calls it a receipt and splits the fees off into a payment ledger that arrives separately — sometimes days later, which is awkward when the whole point is margin per order and the margin isn’t knowable yet. Amazon doesn’t really hand you orders at all: you request a report, poll until it deigns to be ready, and the fees you see are estimates until the settlement report lands on its own fortnightly schedule. eBay is fine right up until it isn’t. WooCommerce is self-hosted, so it’s exactly as truthful as the site’s plugin stack that week.
Then currencies — buyers paying in pounds, euros and dollars, each channel converting at its own rate on its own day, all of it needing to land in one book as one number.
And SKUs. The same pendant was one code on Shopify, a different one on the Woo site, an Etsy listing with three variations, and two eBay listings — one of them a typo from years back that nobody had dared delete. Matching physical pieces across five catalogues came down to a hand-built mapping table and a long, deeply unglamorous week.
That mapping table is the least impressive artefact in the system and the most valuable. Without it, “margin per piece” is fiction.
A reconciliation layer, not a dashboard.
Pollers and webhooks per channel, each translating its dialect into one order shape: piece, quantity, money in, fees out, currency, timestamps. Fees get written twice — an estimate the moment the order lands, and the real number when the channel’s ledger finally admits it. If the two disagree by more than a rounding error, the order gets flagged instead of silently corrupting the month.
Every order maps to a physical piece, every piece maps to a bench, and the moment an order is unified it’s forwarded to the craftsperson who’ll make it — what to make, which materials, when it’s due. Nobody checks a panel. The owner opens one book and sees every channel, every order, priced honestly after fees, materials and postage.
The workshop finds out in minutes, not whenever.
The five-login ritual stopped. Orders reach the bench the moment they exist, whichever shopfront they came through. And per-order margins surfaced the thing nobody enjoys learning: pieces that looked like strong sellers on a marketplace were, after that marketplace’s cut plus postage, earning meaningfully less than the identical piece sold through Jahda’s own store. Pricing conversations got shorter.
The client and the work are real; the demo below runs on invented orders, invented names and representative figures over the real fee structures.