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
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.