Building Enterprise Ecommerce Workflows on Shopify for a Mid-Market US Electrical Supplier

A US-based electrical supplies distributor — serving commercial contractors across multiple states and managing a catalogue of over 50,000 products — came to us via referral with a project unlike anything we’d taken on before.

Their legacy system was ageing, expensive to maintain, and their team was done with it. The goal was to migrate everything to Shopify, rebuild their B2B ordering workflows from scratch, and integrate the platform with their ERP and accounting systems.

The project took two months from kickoff to go-live.

The project began with some self-doubt 🙂

Let me break down the project modules

Punchout

We had heard of Punchout, but clearly not enough to nail it easily.

To put it simply — your customers order products via an ERP loaded on their work computer. The goal was to let customers access Shopify via the ERP. The customer builds a cart like a normal customer would. On the cart page, we send the customer back to their ERP where they have the order approved internally, and then send us an order request. The request is then logged as an order in Shopify.

To build the integration, we set up a private app on the client’s Shopify store. The app was designed to do three things:

  1. Generate a Punchout session when it was requested by the ERP
  2. Send cart data back to the ERP when the customer was done building their cart
  3. Accept the order request when it came through on Shopify

The main challenge was understanding the format in which the ERP sends and accepts requests. In this case, the ERP sent requests via a cXML payload. We built parsing methods to go through the cXML, retrieve order data, session ID, address, email, and so on.

We also added Shopify metafields to give the client more control over fulfilment. While we didn’t have prior knowledge of these workflows and were not fully confident initially, small wins here and there helped us move along and build out the workflow end-to-end.

QuickBooks Online (QBO)

This was easy. The client wanted to send all order data from Shopify to QBO. While integrations already exist, this one needed to be custom-built as the client wanted draft orders created via Punchout to make it to QBO.

One thing we found odd was Intuit’s developer program. During the integration, we wanted to send some custom order data to QBO custom fields. Apparently, API access to these fields is blocked behind a paid developer program tier. Strange. Generally we find product companies quite open when it comes to building custom workflows, so this was new.

I only mention it because we ended up wasting two days trying to make it work, until realising we were at the wrong side of a paywall _(‘-‘)_/.

The Architecture

Okay. So what do typical customer profiles on ecommerce stores look like? A person places an order — maybe buying for themselves, maybe on behalf of an organisation. In the latter case, they share a company name, tax ID, and so on.

This was different.

Punchout customers ordered through their ERP using credentials that belong to a Group. A Group contains various Organisations within it — typical businesses. Each Organisation has multiple Locations (in most cases around 20). Orders are placed at the Location level.

So every customer essentially belongs to a three-layer hierarchy. Does Shopify support this structure? No.

You can use Shopify Plus which comes with B2B options, but it’s not layered enough for this architecture.

The problem: the client’s previous legacy system let everyone at the Organisation level view all orders being placed across different Locations. Shopify only lets you see orders you place yourself — cross-profile reporting simply isn’t a native feature.

To resolve this, we built a separate database, replicated the three-layer hierarchy, and connected it to Shopify via Node.js. Then we built a standalone reporting portal in React — just for Punchout customers. If you’re an org manager or location manager, you log in and check orders coming into any building, even ones you didn’t place yourself.

We implemented a standard RBAC policy since the existing architecture required varying levels of visibility at each tier. We also added order tracking, invoice tracking, and payment statuses — going well beyond standard Shopify profiles, just for kicks.

…and the rest

And yes, we also designed the store.

Usually the projects we do only have this part. After the technical storms we weathered early on, this was a breeze. We got the store live on a mid-tier Shopify plan — no Shopify Plus required.

The Outcome

  • Infrastructure costs down significantly — a standard Shopify plan now handles everything that previously required costly custom hosting and warehouse management software
  • No Shopify Plus needed — we engineered around its limitations rather than defaulting to the premium tier
  • Team actually likes using it — the client’s team manages day-to-day operations directly on Shopify, having moved off software they found painful to use
  • Less QBO dependency — more operational data now lives in Shopify, reducing reliance on QuickBooks for things it wasn’t really designed to handle

What this project taught us

As a company, we’re quietly confident about what we can achieve. But we took this project on to learn more about enterprise ecommerce — and we’re closing it with the belief that we can do industry-grade software engineering with full confidence.

The Punchout integration, the reporting portal, the organisational hierarchy problem — none had off-the-shelf solutions. Each required building from first principles.

If you’re running B2B ecommerce on legacy infrastructure and wondering whether a modern platform can handle your workflows — it probably can. It just needs to be built properly.

Client details have been anonymised at their request. This project came to us via referral.

Running a complex ecommerce operation? Book a free discovery call →