Accentra
Back to Case Studies
DeliveredRetail Ongoing (phased delivery)

An Australian specialty retailer running a national store network alongside a growing eCommerce channel

Connecting a National Retailer's ERP to a Headless Commerce Platform

Six integration domains, real-time sync

NetSuiteCeligoCustom APISystem IntegrationArchitecture DesignERP Optimisation

The Challenge

The retailer runs a national store network alongside a growing eCommerce channel. NetSuite is the ERP and the source of truth for products, inventory, pricing and orders. The business was moving off a legacy eCommerce platform onto a composable commerce stack.

The integration problem was the interesting part. The catalogue carries thousands of SKUs with rich attribute data: colours, materials, dimensions, brand, product manuals and marketing copy. All of it mastered in NetSuite, all of it needed in the commerce platform in a structured form. Stock availability had to reflect real quantity at every store and distribution centre rather than a single aggregate number. Images were spread across several systems. Standard, sale, promotional and customer-group pricing all had to land within minutes.

The legacy integration was tightly coupled and brittle. Any change to a NetSuite custom field, or to the commerce data model, meant a code change in the integration layer.

Our Approach

We built a pub/sub-style architecture on Celigo, split into six domains that deploy independently.

Product core sync. Event-driven from NetSuite item changes. Celigo pulls the full record, transforms it to the commerce platform's product draft format and upserts through the import API. Field mapping is configuration-driven through a NetSuite custom record, so a new attribute does not require code.

Availability sync. Scheduled on short intervals. Queries NetSuite for inventory across every active location, calculates available-to-promise and writes inventory entries per channel. Each store is its own supply channel, which is what makes store-level availability possible on the frontend.

Image sync. Event-driven on image add and update. Downloads the asset, validates dimensions and pushes it with the correct ordering and alt text.

Offer and pricing sync. Pushes NetSuite price levels through to commerce prices. Handles embedded variant prices, promotional prices with date ranges and customer-group pricing for B2B.

The last two domains are the ones that keep the other four honest.

Colour and variant sync. Transformation logic that maps NetSuite matrix items to commerce product variants and keeps swatches and display names consistent.

Integration governance. Every flow carries structured error handling with categorised error types, a dead letter queue, a monitoring dashboard and alerting on critical failures.

Key Metrics

Product sync latency

Before

24 hours (overnight batch)

After

Minutes (event-driven)

Integration domains

Before

1 monolithic sync

After

6 independent flows

Locations with live inventory

Before

Distribution centre only

After

Every store and DC

Error rate

Before

Unmonitored

After

Below 0.5 per cent with auto-retry

New attribute lead time

Before

Code deployment

After

Configuration (about an hour)

The Outcome

Product changes in NetSuite reach the webstore within minutes. Previously they waited for an overnight batch. Inventory reflects real availability at each location, which is what made reliable click-and-collect possible later. Adding a product attribute is a configuration change rather than a deployment. Error rates sit below 0.5 per cent, with auto-retry clearing most transient failures.

Have a similar challenge?

Book a Free Consultation