Proof · Case studies · Study

A bespoke ERP, a new platform, and a 2.7-second cliff.

Denver Wholesale Foods: a B2B distributor whose catalog and customers live in an ERP nobody sells a connector for. We built the store and the connector, on Mage-OS and Hyvä, from the first commit.

Study · Denver Wholesale Foods

Mage-OS + Hyvä + an ERP with no off-the-shelf connector.

Context

Denver Wholesale Foods is a B2B wholesale food distributor whose business runs on a bespoke ERP: products, pricing, customers, orders, all of it. The ERP is the system of record; the store is a window into it. No marketplace module speaks its language, so “integration” here meant building the connector, not configuring one.

Constraint

They used their ERP's built-in ecommerce system before, but it was built as an ERP, not a modern ecommerce platform.

The previous site wasn’t keeping up. On phones, its p75 LCP spent the winter between 3.5s and a peak of 4.1s, into the range Google labels “poor.” And wholesale food has rules a generic storefront doesn’t: sensitive expiration dates, rapid stock turnover, catch-weight items priced per pound, pickup cutoffs and lead times, and customer accounts that must match ERP company records exactly.

What we did

Greenfield build, first commit November 2025: Mage-OS and Hyvä from day one, nothing ported. The ERP connector uses a bidirectional ODataAPI. Categories, products, images, customers, and orders sync both ways, with a webhook queue and an admin dashboard so changes flow in real-time and staff can see it happening. B2B company records sync into the store’s company accounts, with an account-claiming flow so existing wholesale customers attach to their ERP identity using the login they already had.

Launched spring 2026, roughly five months from first commit to live, and in steady use and feature development since.

Chrome UX Report p75 LCP history: 3.5 to 4.1 seconds through winter
2025-26, dropping to about 1.3 seconds at the spring 2026 launch and holding green since
Google’s Chrome UX Report for Denver Wholesale Foods, mobile p75 LCP: the old site through winter, the cliff at launch, green since. Same domain, all new platform.
4.1s → 1.4s
mobile p75 LCP, old site peak → at launch (CrUX field data, spring 2026); every Core Web Vital green since
 
~5 months
first commit (Nov 2025) to live, ERP connector included
 
2 minutes
time for any ERP product/inventory changes to reflect on the live site
 

What we’d do differently

The ERP's API had trouble keeping up with the new site load at first, and some parts of the API were underdeveloped and required changes from the vendor based on actual usage. Last-minute fixes on their end delayed our planned launch by a week. We should have started integration and load testing with the vendor much earlier in the process.

Engagement type: greenfield build project, continuing as ongoing development.

Running a store your ERP has to drive?