How We Built a Two-Way Sync for 2,500 Products Between NetSuite and Craft Commerce

Narration

This audio was generated with our Content Narration for Strapi plugin using ElevenLabs AI.
0:00 0:00

At a glance

Products kept in sync
Orders processed
Product images synced
Running with zero major outages

The Challenge

Inform Interiors, a Canadian premium furniture and home décor retailer, was undergoing a major digital transformation. They were simultaneously:

  1. Migrating from Shopify to Craft Commerce for greater flexibility and control
  2. Adopting NetSuite as their ERP for unified business operations
  3. Launching a completely new website with a complex product configurator

The problem: Craft Commerce had no out-of-the-box NetSuite integration. They needed a custom solution that could synchronize 2,500+ products (with 1-6 variants each) and handle complexities their previous Shopify integration couldn't manage.

Before the integration, every new order meant someone on the team spending 10-20 minutes manually entering it into NetSuite. Stock updates between the website and ERP were rare and unreliable. With hundreds of orders flowing through the site, that manual work was unsustainable.


How the Integration Works

inform

We built a custom integration layer that sits between NetSuite and Craft Commerce, handling two-way data synchronization across seven data types: products, stock levels, orders, customer accounts, discounts, shipping information, and product images.

Orders sync instantly from Craft Commerce to NetSuite. Products, pricing, and stock updates flow from NetSuite to the website multiple times per day. The team updates data in one place and the other system reflects it automatically.


Discovery First

Before writing production code, we conducted a two-month discovery phase to understand the full scope of what needed to sync:

  • Products and variants (2,500+ items with 1-6 variants each)
  • Stock levels and pricing (frequent bulk updates from NetSuite)
  • Orders and order status (instant two-way sync)
  • Customer accounts and discounts (tiered pricing)
  • Shipping information
  • Product images (20,000 images from NetSuite to Craft)

During discovery, we built a technical demo that uncovered limitations in the initial approach and solved them before committing to the full build.


Key Technical Challenges

Queue-Based Synchronization for Scale

With thousands of products and frequent price updates, synchronous processing would block the website. We built a Craft Queue-based system that:

  • Processes bulk updates asynchronously in the background
  • Prioritizes critical syncs (orders, stock) over less time-sensitive data
  • Handles failures gracefully with retry logic
  • Keeps the website responsive during large sync operations

20,000 Product Images from NetSuite to Craft

Syncing 20,000 product images was one of the more challenging aspects of the integration. Unlike simple data fields, images required:

  • Efficient file transfer handling for large image sets
  • Storage optimization for web delivery
  • Asset relationship management in Craft CMS
  • Verification that the correct images display without performance degradation

Canadian Dual-Tax Compliance

Canada's GST/PST tax system added complexity. We built custom logic ensuring:

  • Accurate tax calculations flow from Craft Commerce to NetSuite
  • Proper order accounting for compliance
  • Support for different tax rates based on customer location

Since launch, we have updated the tax logic twice to support new regulations and tariff changes.

Covering Edge Cases

The client's previous Shopify integration didn't handle several scenarios critical to their business. We designed the new system from the ground up to manage these edge cases, ensuring complete data consistency between their ERP and e-commerce platform.


Impact

The integration transformed how Inform Interiors manages their product data and order processing. As one team member put it:

It's faster for me to just do it once in NetSuite and then forget about it knowing that data changes will be sent to the website

The numbers tell the rest of the story. Before the integration, each order required 10-20 minutes of manual entry into NetSuite. Close to 1,000 orders have gone through the system over two years. That is roughly 170-330 hours of manual data entry that never happened. Orders now sync instantly.

Stock updates went from rare and unreliable to automatic, multiple times per day. 2,500 products and 20,000 images stay in sync without anyone logging into two systems. The integration has run for two years with zero major outages.


Two Years of Evolution

An integration is not a one-time build. Since launch, we have shipped roughly 4 updates per year as Inform Interiors' business evolves:

  • New field mappings as their product catalog expands and business rules change
  • Tax and tariff updates when Canadian regulations changed (twice since launch)
  • NetSuite API modernization migrating from SOAP to REST to keep up with NetSuite's evolving feature set

Each update is a small project: scoped, built, tested, deployed. The integration gets more reliable over time, not less. That is the compounding value of building the connection well from the start.


Craft Commerce and NetSuite had no way to talk to each other. We built the connection. Two years later, close to 1,000 orders and 20,000 product images have moved through it without a major outage. The team manages their entire catalog from NetSuite and the website stays current automatically.

For the full engagement details, see the discovery phase and implementation work pages.

Author

Need Similar Solutions?

If you're facing similar challenges or want to explore how I can help with your project, let's talk.

Get in Touch

Used technologies

Weekly Newsletter

Subscribe for monthly, practical AI demos designed to cut friction and boost real results for marketing, sales, and operations leaders.