work about Ready to talk?
Bottles of wine in a bucket of ice - IM Hero Banner

Inverarity Morton

Project Overview

Inverarity Morton is a wholesale distributor of drinks operating across Scotland. With a business historically driven by phone-based telesales and a seasoned field sales team, the company had an established customer base but lacked the digital infrastructure to serve them efficiently at scale.

Their core back-office system, Accord an on-premise ERP developed by BCP managed the vast majority of business functions: pricing, stock, orders, customer data, invoicing, and credit. But Accord sat in isolation. Customers couldn't self-serve, and the telesales team were the gatekeepers for everything.

Inverarity Morton engaged Uncover Commerce to change that.

> The goal was to build a trade portal that felt industry-leading while maintaining tight, reliable synchronisation with a complex on-premise ERP system.

The project involved two distinct but deeply connected deliverables:

A headless B2B eCommerce trade website, with a Next.js frontend and Payload CMS, connected to BigCommerce as the commerce engine — designed specifically for Inverarity Morton's wholesale customers

A custom API Middleware layer, built in Node.js and TypeScript, to bridge BigCommerce with the Accord ERP enabling real-time stock, pricing, order processing, and customer data to flow between the two systems seamlessly

inverarity morton desktop casestudy x Uncover Commerce

The Challenge

A Business Running Offline in a Digital World

Before this project, every customer order at Inverarity Morton was placed by phone. Sales reps managed portfolios manually, using PowerBI dashboards fed from a SQL database that refreshed every 15 minutes from Accord — meaning even internal data was perpetually slightly out of date. There was no customer-facing digital touchpoint at all.

This created a compounding set of problems:

- Customers could not browse products, check stock, or place orders outside of business hours

- Telesales staff were processing every order manually, creating a bottleneck particularly on peak days (Monday and Tuesday)

- Sales reps in the field had no direct access to Accord, working only from PowerBI exports

- Pricing was customer-specific and complex, with agreed discounts and promotional rules living solely inside Accord

- There was no mechanism for customers to access their invoices, order history, or account information independently

The ERP Integration Problem

The most significant technical challenge was the Accord integration. Accord is an on-premise system it sits on Inverarity Morton's own servers, not in the cloud. BCP had developed APIs for eCommerce use, but the server infrastructure was fixed in capacity, with no ability to scale horizontally. Any new system connecting to Accord had to do so carefully, with robust error handling and queuing, because a spike in demand could render the ERP inaccessible.

The middleware layer would need to handle: real-time stock checks, customer-specific pricing synchronisation, order creation, address management, delivery date coordination, credit availability checks, invoice replication, and promotion application all without overwhelming the on-premise server.

Wholesale-Specific UX Requirements

This was not a consumer eCommerce site. The platform needed to serve trade buyers — customers who order in cases and bottles, track their own account credit, expect personalised pricing, and may be placing regular large orders on behalf of licensed venues. The user experience needed to reflect that: fast, functional, and built around the realities of B2B procurement.

Our Approach

Platform Selection: Headless BigCommerce with Next.js & Payload CMS

BigCommerce was selected as the commerce engine for its robust out-of-the-box B2B capabilities, flexible API architecture, and native support for customer groups, custom pricing, and complex product catalogues. Rather than using a standard BigCommerce storefront theme, the frontend was built as a fully headless implementation, a custom Next.js application consuming BigCommerce's APIs, with Payload CMS managing all editorial and page content independently.

This headless approach gave the team complete control over the frontend experience without being constrained by a theme layer critical for delivering a truly bespoke B2B interface. Payload CMS provided a flexible, developer-friendly content management layer for banners, pages, blog content, and promotional messaging, while BigCommerce handled the transactional commerce infrastructure beneath.

Custom Middleware: Bridging Two Systems

The heart of the technical solution was a bespoke API middleware application, built in TypeScript on a Node.js runtime, hosted by Positive. Rather than attempting a direct connection between BigCommerce and Accord, the middleware acts as an intelligent intermediary — managing scheduling, queuing, error handling, and notification, so that both systems stay in sync without overloading the on-premise ERP.

Key middleware responsibilities included:

Heartbeat monitoring — regularly confirming the Accord API is responsive before processing any dependent calls

Scheduled synchronisation of pricing, promotions, stock levels, and customer addresses between Accord and BigCommerce

Order creation — translating completed BigCommerce checkouts into correctly-formatted Accord orders

Credit availability checks — verifying a customer's credit status before order completion

Historic invoice replication — pulling invoice data from Accord and surfacing it within the customer's BigCommerce account

Delivery date synchronisation — passing driver route availability from Accord to the checkout flow

Concurrency and queuing — managing simultaneous requests to protect the fixed-capacity ERP server

Alerting — notifying via email, Jira, and Slack when incidents occur

Designing for the Trade Customer

The Next.js frontend was designed to prioritise clarity and efficiency for wholesale buyers. Products display both bottle and case pricing simultaneously. Stock levels — refreshed every 15 minutes from Accord — are surfaced directly on product cards and pages, with contextual indicators such as 'Low Stock' or precise counts like 'Only 3 Left' when inventory is critically low.

The logged-in experience was built to feel meaningfully different from a browsing-only state. Price, stock, add-to-cart, delivery information, personalised promotions, and account features are only surfaced once a customer is authenticated, a deliberate decision to reflect the trade-only nature of the platform and to keep the experience relevant.

Product Experience Highlights

Quick Add to Cart — preset quantity buttons reflecting the most common order quantities for each product, with visible savings per case vs. individual bottles

Quantity-aware CTA — the Add to Cart button dynamically updates to confirm what is being added, e.g. 'Add 3 Cases to Cart', reducing order errors

Out-of-stock notifications — customers can opt in to email alerts when products they need return to stock

Downloadable fact sheets — product technical data sheets available directly from the product page for trade buyers

Related products and cross-sell — contextual recommendations surfaced throughout the product page and cart

Search & Navigation

A predictive search powered by Klevu was integrated to deliver fast, intelligent search across the full product catalogue returning results from as few as three keystrokes, with autocomplete and category suggestions. The navigation uses a mega menu structure, with top-level categories expanding to reveal sub-categories and featured products. A dedicated Re-Order quick link is surfaced in the menu for logged-in users, reducing the friction of repeat purchasing significantly.

Account & Order Management

The customer account section provides a self-service hub for trade buyers. Previous order history, the ability to repeat and edit past orders, downloadable invoices, and saved delivery addresses are all accessible without requiring contact with the telesales team. Customers with credit facilities transact via their Accord-managed credit account; those without are directed to card payment via Worldpay.

Promotions Engine

Promotional rules including mix-and-match offers, case deal pricing, and customer-specific discounts are defined in Accord and synchronised to BigCommerce automatically via the middleware. Personalised promotional banners surface relevant offers to each customer on the homepage, category pages, and cart, with Nosto providing behaviour-based product personalisation across the platform.

Technical Architecture

The solution is composed of three distinct layers, each with a defined responsibility:

Presentation Layer

BigCommerce storefront custom theme, optimised for B2B UX. Manages all customer-facing interactions: browse, search, cart, checkout, account.

Middleware Layer

Node.js / TypeScript application. Orchestrates data synchronisation, scheduling, error handling, and alerting between BigCommerce and Accord.

ERP Layer

On-premise Accord ERP (BCP), hosted at Inverarity Morton. Source of truth for pricing, stock, orders, customers, credit, and invoicing.

Infrastructure Considerations

A notable constraint throughout the project was the fixed-capacity nature of the Accord server. With no horizontal scaling available, the middleware was designed to be conservative in its API call patterns — batching where possible, queuing concurrent requests, and routing all calls through a heartbeat check before processing. PM2 was implemented for automatic restart on server failure, and an incident alerting system was configured to notify via Slack and Jira when the Accord API becomes unreachable.

A PostgreSQL database within the middleware handles state management and error logging, providing an audit trail for all synchronisation activity.

Third-Party Integrations

Klevu

Intelligent predictive search — autocomplete, keyword suggestions, search analytics

Nosto

Behavioural personalisation — product recommendations, triggered emails, personalised banners

InStockNotify

Out-of-stock notification management — customer opt-in email alerts on restocking

LiveChat

Live chat functionality for business hours customer support via sales team

Worldpay

Card payment processing for non-credit customers at checkout

PowerBI / SQL

Connected to Accord via 15-minute data refresh; used by sales reps in the field

inverarity morton mobile casestudy x Uncover Commerce

Key Features Delivered

Frontend & UX

- Headless Next.js frontend decoupled from BigCommerce's theme layer, enabling a fully bespoke B2B experience

- Payload CMS powering all editorial content pages, banners, blog posts, and promotional messaging

- Predictive search with autocomplete (Klevu) active from 3 characters

- Logged-in/out state determines visibility of pricing, stock, cart, and account features

- Responsive mobile design with number-only keypads for quantity inputs

- Infinite scroll pagination on category pages

- Announcement bar for rotating promotions and delivery messages

- Re-Order quick link surfaced in header navigation for logged-in users

Product & Catalogue

- Bottle and case pricing displayed simultaneously

- Dynamic stock level indicators: Low Stock, Out of Stock, exact count when critically low

- Quick Add to Cart with preset quantities and per-case savings display

- Quantity-aware Add to Cart CTA button

- Out-of-stock email notification sign-up

- Downloadable technical fact sheets per product

- Promotional and sale stickers, scored-through original pricing

- Related products gallery for cross-selling

Checkout & Payments

- Delivery date selection driven by Accord driver route data

- Credit account checkout for approved trade customers

- Worldpay card payment for non-credit accounts

- Coupon and promotional code redemption

- Customer-specific shipping addresses pulled from Accord

- Cart ringfencing, products held for active sessions to prevent overselling

Account & Administration

- Self-service order history with repeat order functionality

- Invoice history accessible within account, replicated from Accord

- Customer-specific pricing applied automatically based on Accord agreements

- Customer groups with variable pricing and access terms

- BigCommerce admin with user roles and permissions management

- Sales rep-managed customer onboarding, accounts created in Accord and added to BigCommerce manually

Middleware & Integration

- Heartbeat monitoring and automatic alerting on ERP unreachability

- Scheduled sync for pricing, stock, promotions, addresses, and invoices

- Order creation from BigCommerce to Accord on checkout completion

- Concurrency queuing to protect the fixed-capacity on-premise server

- Incident management via Slack, Jira, and email notifications

- JS test suite and structured error logging with PostgreSQL

Considerations

On-Premise ERP Scalability

The most significant ongoing risk is the capacity of the Accord server. Because the server cannot scale horizontally, periods of high demand such as Monday and Tuesday peak ordering place concentrated load on a fixed infrastructure. The middleware's queuing and heartbeat architecture mitigates this, but any maintenance window on the Accord server will make order placement impossible until service is restored.

15-Minute Data Latency

Stock levels and pricing are synchronised on a scheduled basis (minimum every 15 minutes), consistent with the existing PowerBI reporting cadence. In practice, this means there is always a small window of potential discrepancy between Accord's live state and what BigCommerce displays. The cart ringfencing feature and stock-level indicators help manage customer expectations within this constraint.

Closed Registration

The trade portal is not open for self-registration. New customers must be set up in Accord by Inverarity Morton's team before being granted access. Prospective customers can submit an enquiry via the contact form, but onboarding is a manual, human-managed process — a deliberate decision reflecting the wholesale, relationship-driven nature of the business.

Order Status Communication

Order status notifications to customers (picked, invoiced, dispatched) are limited by what Accord currently exposes. Shipping notifications can be implemented if process changes are made on the Inverarity Morton side to record dispatch status within Accord. This is identified as an area for future enhancement as operations evolve.

Summary

The Inverarity Morton Trade Portal represents a significant step forward in how a traditional wholesale distributor can operate digitally without abandoning the relationships and processes that define the business.

By choosing a headless BigCommerce architecture with a custom Next.js frontend and Payload CMS and building a bespoke middleware layer to bridge the gap with an on-premise ERP, Uncover Commerce delivered a solution that is both commercially capable and technically robust. Customers can self-serve around the clock, accessing personalised pricing, live stock data, order history, and a purchasing experience built specifically for trade buyers.

The middleware ensures that the trade portal and Accord remain in sync with stock, pricing, promotions, orders, invoices, and delivery schedules flowing reliably between systems while protecting the fixed-capacity ERP infrastructure from being overwhelmed.

> A platform built not just for where Inverarity Morton is today, but for the digital wholesale operation they are becoming.

Ready to start your project? Let's talk.