Fussion Forge
Let’s Talk
Retail Sample

Unified commerce for a multi-brand retailer

Key result: +18% online revenue Illustrative

Challenge

What was actually going wrong.

Three brands, two store systems and one website that disagreed with all of them. Stock showed as available online and was not in the warehouse, prices diverged between channels within days of every promotion, and a customer who bought in store and returned online was two different people as far as the systems were concerned.

Overselling and cancellations

Availability was a nightly snapshot, so the site kept selling stock the warehouse no longer had.

Promotions applied twice, or not at all

Pricing rules lived separately in each channel and drifted apart as soon as a campaign started.

One customer, several records

Loyalty, returns and service history were split across brands, which made any cross-brand offer guesswork.

Strategy

The route we chose, and what we ruled out.

Unify the records customers actually notice — stock, price and identity — and leave everything else where it was. A full replatform was on the table and we argued against it: the revenue was leaking through three specific disagreements, and fixing those was a matter of months rather than a year.

Decisions taken up front

  • Fix stock, price and identity first; defer the rest deliberately
  • Near-real-time stock updates rather than a nightly file
  • One brand live across both channels before the other two
Solution

What we designed and built.

A product and pricing service became the single source for both the website and the tills, with promotions expressed once and applied everywhere. Stock moved to near-real-time updates with a per-channel safety buffer, and a customer identity service resolved records across brands so returns and loyalty worked from one history.

Store systems, warehouse stock, pricing rules and customer records unified into one commerce platform Store systemsWarehouse stockPricing rulesCustomer records One commerceplatform
Technology

The stack behind it.

A read-heavy catalogue with a cache in front of it, and an identity service that had to be right rather than fast. The hard part was reconciliation, not throughput.

Next.js
Node.js
PostgreSQL
Redis
Implementation

How it went live.

Sequenced so that the first release could not break the operation, and so that each step earned the next one.

01

Reconcile before migrating

Identity matching ran as a report first, so the duplicate rate was a known number instead of a surprise mid-cutover.

02

One brand, both channels

The smallest brand went first across web and store together, since splitting them would have hidden the disagreements we were there to fix.

03

Buffer, then tighten

Stock ran with a conservative channel buffer until the update path had earned trust, and the buffer came down after.

04

Promotions rebuilt once

Campaign rules re-expressed in the pricing service, with the old paths removed rather than left available as a fallback.

Results Illustrative

What moved, and how it was measured.

Online revenue rose 18% across the two quarters after the third brand went live, compared with the same period the previous year and adjusted for the promotional calendar. Cancellations caused by overselling were the clearest single contributor.

+18%Online revenue
Near real-timeStock accuracy
One recordPer customer, across brands

What we would do differently

We would have argued harder for reconciling customer identity before launch rather than alongside it. It was the one workstream where a partial result created new support tickets.

  • Stock the site can actually commit to, with a per-channel buffer
  • Promotions defined once and applied on every channel
  • One customer record spanning brands, returns and loyalty
  • Cancellations from overselling materially reduced
  • The replatform decision deferred on evidence rather than by default

Have a problem shaped like this one?

Tell us what is not working and what it is costing. We will tell you whether we are the right team for it.