Accentra
Back to Case Studies
DeliveredRetail

Businesses keeping NetSuite as the source of truth while moving onto a composable commerce platform

Connecting NetSuite to a Headless Commerce Platform

Six integration domains, event-driven sync

NetSuiteCeligoCustom APISystem IntegrationArchitecture DesignERP Optimisation

The Challenge

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.

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

Key Metrics

Product sync latency

Before

Overnight batch

After

Minutes, event-driven

Integration structure

Before

One monolithic sync

After

6 independent flows

Inventory visibility

Before

Distribution centre only

After

Every active location

Error handling

Before

Typically unmonitored

After

Categorised, with auto-retry

New attribute lead time

Before

Code deployment

After

Configuration, about an hour

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.

Have a similar challenge?

Book a Free Consultation