Six integration domains, event-driven sync
The challenge
Businesses keeping NetSuite as the source of truth while moving onto a composable commerce platform
A business runs NetSuite as the source of truth for products, inventory, pricing and orders, and decides to replace a legacy eCommerce platform with a composable stack. The storefront is the visible part of that project. The integration is where it succeeds or fails.
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 has to reflect real quantity at every location rather than a single aggregate number. Images are usually spread across several systems. Standard, sale, promotional and customer-group pricing all have to land within minutes.
Legacy integrations in this position are almost always tightly coupled. Any change to a NetSuite custom field, or to the commerce data model, means a code change in the integration layer. That coupling is the real problem, because it turns every ordinary merchandising request into a development ticket.
The approach
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 location is its own supply channel, which is what makes location-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.
The outcome
Product changes in NetSuite reach the storefront within minutes instead of waiting for an overnight batch. Inventory reflects real availability at each location, which is the precondition for reliable click-and-collect rather than a separate project later. Adding a product attribute becomes a configuration change rather than a deployment.
Error rates typically settle below one per cent once auto-retry is clearing transient failures. The domain split matters more than it looks: a failure in image sync stops affecting pricing, so one bad asset no longer holds up a promotion.
Results
| Measure | Before | After |
|---|---|---|
| Product sync latency | Overnight batch | Minutes, event-driven |
| Integration structure | One monolithic sync | 6 independent flows |
| Inventory visibility | Distribution centre only | Every active location |
| Error handling | Typically unmonitored | Categorised, with auto-retry |
| New attribute lead time | Code deployment | Configuration, about an hour |