Decide field ownership before choosing tooling
Almost every troubled Shopify–NetSuite integration we are asked to rescue skipped this step. Both systems are capable of holding price, inventory and customer data, so unless ownership is assigned field by field, both end up writing and the last write wins at random.
The output of this exercise is a one-page data contract naming, for every synchronized field, which system is authoritative, in which direction it flows, and what happens on conflict. It takes a couple of days and it prevents most of the failure modes below.
The five core flows
Scope tends to expand outward from orders. We recommend sequencing by which flow currently consumes the most manual effort, not by which is easiest.
- Order downstream: Shopify order to NetSuite sales order, mapping tax, discounts, shipping, gift cards and currency, with the Shopify order id retained for traceability
- Fulfillment upstream: item fulfillment and tracking back to Shopify, correctly handling partial and split shipments
- Inventory upstream: available-to-promise per location, published to Shopify locations on a defined cadence with a safety-stock buffer
- Item and pricing downstream: item master, price levels and customer-specific B2B pricing
- Financial: cash sale or invoice, payment application, and payout-level reconciliation against Shopify Payments settlement
What we test before go-live
These scenarios are the difference between an integration that survives Black Friday and one that becomes a manual process with extra steps.
- Duplicate webhook delivery, verifying idempotency rather than relying on downstream deduplication
- A flash sale where checkout velocity exceeds the inventory publish interval
- NetSuite governance throttling mid-batch, confirming the queue drains rather than dropping records
- A partially fulfilled multi-location order followed by a partial return
- A bundle or kit item, which many connectors flatten incorrectly
- A marketplace order entering NetSuite without a Shopify counterpart
- Scheduled reconciliation detecting deliberately introduced drift and alerting a human
Build, buy, or fix what you have
Several commercial connectors cover the standard flows competently, and where one is already in place and working we will normally recommend keeping it and closing the gaps around it.
Custom is worth it when the operating model is genuinely unusual: complex B2B pricing, multi-subsidiary structures, or fulfillment logic that no connector models. We have no commercial stake in that decision and will show you the reasoning either way.
Common questions
- Which system owns inventory?
- NetSuite owns the quantity of record; Shopify owns what is publishable. They are not the same number. Shopify should receive an available-to-promise figure derived from NetSuite quantity minus committed, minus safety stock, per location. Publishing raw NetSuite on-hand to Shopify is the single most common cause of overselling in this pairing.
- Do we need middleware, or can this be point to point?
- Point to point is viable for a single-entity business with one warehouse and standard fulfillment. Multi-subsidiary, multi-currency or multi-location operations benefit from a layer that can hold state, retry independently and be observed, whether that is an iPaaS platform or a service you own.
- How are NetSuite governance limits handled?
- NetSuite meters by governance units per script and concurrency per account, so an integration that works in testing can throttle in production when it competes with scheduled scripts and other users. The practical answer is queueing with backpressure, batching writes, and scheduling bulk syncs outside the finance team's working hours.
- What usually gets missed in scoping?
- Returns and exchanges, gift cards, partial fulfillments, bundles and kits, and marketplace orders that need to land in NetSuite without passing through Shopify. Each of these is straightforward alone; together they are typically half the real effort and they are routinely omitted from initial estimates.
