A 30+ store Australian kitchenware and homewares retailer with a complex multi-channel operation
Connecting a National Retailer's ERP to a Headless Commerce Platform
7 integration domains, real-time sync
The Challenge
This retailer operates 30+ physical stores alongside a growing eCommerce channel. NetSuite is the ERP and source of truth for products, inventory, pricing, and orders. The business was migrating from a legacy eCommerce platform to CommerceTools to gain flexibility and performance.
The integration challenge was significant. The catalogue includes thousands of SKUs with rich attribute data - colours, materials, dimensions, brand, product manuals, and marketing copy. All mastered in NetSuite, all needed in CommerceTools in a structured format. Stock availability needed to reflect real-time quantity across 30+ store locations and distribution centres. Product images were stored across multiple systems. Pricing including standard, sale, promotional, and customer-group pricing all needed to flow from NetSuite within minutes.
The legacy integration was tightly coupled and brittle. Any change to NetSuite custom fields or the commerce data model required code changes to the integration layer.
Our Approach
We designed a pub/sub-style integration architecture using Celigo, broken into six independently deployable domains:
1. Product Core Sync — Event-driven from NetSuite item changes. Celigo pulls the full record, transforms to CommerceTools product draft format, uses CT Import API for upsert. Field mapping is configuration-driven via a NetSuite custom record so new attributes don't require code changes.
2. Availability Sync — Scheduled on short intervals. Queries NetSuite for inventory across all active locations, calculates available-to-promise, pushes to CommerceTools inventory entries per channel. Each store is a CT supply channel enabling "Available at Store X" on the frontend.
3. Image Sync — Event-driven on image additions/updates. Downloads assets, validates dimensions, pushes to CommerceTools with correct ordering and alt text.
4. Offer and Pricing Sync — Pushes pricing from NetSuite price levels to CommerceTools prices. Handles embedded variant prices, promotional prices with date ranges, and customer-group pricing for B2B.
5. Colour and Variant Sync — Transformation logic mapping NetSuite matrix items to CommerceTools product variants, ensuring swatches and display names stay consistent.
6. Integration Governance — Every flow has structured error handling with categorised error types, dead letter queues, a monitoring dashboard, and Slack notifications 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
DC only
After
30+ stores + DCs
Error rate
Before
Unmonitored
After
< 0.5% with auto-retry
New attribute lead time
Before
Code deployment
After
Configuration (~1 hour)
The Outcome
Product data changes in NetSuite appear on the webstore within minutes (previously overnight). Inventory accuracy reflects real store-level availability across all locations, enabling reliable click-and-collect. The modular architecture means adding a new product attribute takes configuration, not a code deployment. Error rates run below 0.5% with auto-retry resolving most transient failures.
“The integration architecture gave us confidence to move fast on the commerce platform without worrying about whether the data would keep up. It just works.”
— Head of Technology