/ 03 Item & inventory master
NetSuite → Shopify. NetSuite runs the catalogue.
This is the master-data half of a Shopify NetSuite build. NetSuite owns items, stock, prices and credit terms. Shopify gets clean deltas: matrix items as products and variants, available stock per warehouse or 3PL, currency prices for each market and B2B catalogue, and tracking numbers as soon as an item fulfilment ships.
- Target inventory push interval
- 5–15 min
- Target tracking write-back
- < 5 min
- System of record for items and prices
- 1
- Prices edited by hand in Shopify
- 0
Design targets we build and monitor against, not averaged client results.
The problem
Two catalogues means two versions of the truth.
If someone changes a price in NetSuite and then again in Shopify, one of them is already wrong.
- Products are created twice, once in NetSuite and once in Shopify, and the SKUs drift apart.
- Stock from several EU warehouses is summed into one number, so orders route to a site with none on the shelf.
- Euro and sterling prices are edited by hand in Shopify after every NetSuite price change.
- A B2B customer on credit hold in NetSuite can still order on net terms in Shopify.
- The 3PL ships, NetSuite records it, and the customer never gets a tracking email.
Sync map
What moves, and which way.
Every flow is scoped in the mapping workshop. You switch on the ones you need and leave the rest. Direction is a decision, not a default.
| Record | Direction | Trigger | Latency | How we handle it |
|---|---|---|---|---|
| Items & matrix items | NetSuite → Shopify | SuiteQL delta on last-modified date | Hourly or on change | Matrix parents become Shopify products; child items become variants, with options taken from the matrix fields. Marketing content, such as descriptions and images, can stay owned by Shopify. |
| Inventory by location | NetSuite → Shopify | Scheduled delta per location | 5–15 min (configurable) | Available quantity per NetSuite location (warehouse, 3PL or store) sets stock at the matching Shopify location. Safety buffers and excluded locations are rules you sign off. |
| Prices by currency | NetSuite → Shopify | Price level or currency price change | Hourly or nightly | NetSuite price levels in each currency write fixed prices to Shopify price lists. Each market and B2B catalogue reads from the price list assigned to it. |
| B2B companies & terms | NetSuite → Shopify | Customer create or update in NetSuite | Near real-time | Company customers become Shopify companies and locations. NetSuite terms set payment terms; credit hold switches checkout to draft orders for review. |
| Fulfilments & tracking | NetSuite → Shopify | Item fulfilment marked Shipped | Near real-time | Creates a Shopify fulfilment against the matching fulfilment order lines, with carrier and tracking number. Shopify then sends the shipping email. Partial and multi-parcel shipments are supported. |
| Inactive items | NetSuite → Shopify | Item set inactive in NetSuite | Hourly or nightly | Inactive items move to draft or archived in Shopify, never deleted, so order history stays intact. |
Field mapping
The detail that decides it.
A sample of the mapping we agree before building. The real document covers every field on every record, and it's yours whether or not you go ahead with the build.
| NetSuite field | Shopify target | Rule |
|---|---|---|
| item → itemid / upccode | ProductVariant.sku / barcode | SKU is the join key. A SKU that exists on one side only goes to the exception queue, never a guess. |
| Matrix parent item + matrix option fields | Product + ProductVariant options | Each matrix option, such as size or colour, becomes a product option. Each child item becomes one variant. |
| item → internalid | Product and ProductVariant metafields | Stored on the Shopify side, so a renamed SKU still matches the right record. |
| location | Location | Each NetSuite warehouse, 3PL or store that ships online maps to one Shopify location. The rest are left out. |
| item locations → quantityavailable | InventoryLevel (available) via inventorySetQuantities | We agree whether NetSuite sets available or on-hand, so orders not yet in NetSuite aren’t counted twice. |
| item pricing → price level × currency | PriceList fixed prices via priceListFixedPricesAdd | One price list per currency or B2B catalogue. Unset prices fall back to the price list’s adjustment rule. |
| customer (company) + terms | Company, CompanyLocation + PaymentTermsTemplate | Terms such as Net 30 map to Shopify’s templates. Terms Shopify can’t express, such as early-payment discounts, stay in NetSuite. |
| customer → creditholdoverride | CompanyLocation buyerExperienceConfiguration.checkoutToDraft | On hold means B2B checkouts become draft orders for review instead of orders placed on terms. |
| itemfulfillment → packagetrackingnumber + shipmethod | Fulfillment trackingInfo via fulfillmentCreate | Created against the FulfillmentOrder lines the shipment covers, so partial shipments close the right lines. |
What you get
Built to be trusted.
NetSuite as master: items, stock by location, prices by currency, B2B terms and tracking pushed to Shopify on a cadence you control.
Item master push
Matrix items, SKUs, barcodes and options built in Shopify from NetSuite, with clear rules on which fields each side owns.
Stock per location
Available quantity per warehouse, 3PL and store, pushed as deltas with safety buffers you set.
Prices for every market
Currency price levels written to Shopify price lists for Markets and B2B catalogues. Change a price once, in NetSuite.
B2B companies and terms
Shopify companies, locations, payment terms and credit hold driven from NetSuite customer records.
Tracking write-back
Item fulfilments create Shopify fulfilments with tracking, so customers get the shipping email without anyone copying numbers.
Exception queue & runbook
Missing SKUs, unmapped locations and terms Shopify can’t express land in a queue with a documented fix.
The stack
APIs we build on.
No screen scraping, no CSV drops on an FTP server at 3am. First-party APIs, authenticated properly and rate-limit aware.
Edge cases
The 20% that breaks connectors.
We scope these up front instead of discovering them in production. If one applies to you, say so on the call.
- Matrix items with more options than Shopify allows on one product
- Stock in several EU warehouses and 3PLs, not all of which ship to every country
- Stock in transit, on transfer orders, or committed to wholesale orders
- Kits and assembly items whose availability depends on component stock
- NetSuite prices held net of VAT while Shopify shows VAT-inclusive prices in EU markets
- B2B customers on custom terms Shopify can’t express, such as early-payment discounts
- Credit hold applied after a B2B draft order already exists
- Partial, multi-parcel and split shipments across locations
- SKUs renamed in NetSuite after the product is live in Shopify
- Large catalogues that need Bulk Operations rather than item-by-item calls
Process
How we ship it.
4–7 weeks typical for the core flows, including a parallel run. Nothing goes live until both systems agree on the same numbers.
- 01
Master data workshop
We agree which system owns each field — title, price, stock, images, terms — and how NetSuite locations, price levels and customers map to Shopify. Output is a signed mapping doc before any build.
- 02
Sandbox build and backfill
Built against a NetSuite sandbox and a Shopify development store. We load and match the full catalogue first, then switch to deltas.
- 03
Parallel run
Deltas run while your team still edits Shopify by hand. We compare stock, prices and tracking daily until the two sides match.
- 04
Cutover & hypercare
Hand edits to NetSuite-owned fields stop, and alerting goes live. Two weeks of hypercare with direct Slack access, then handover or a support retainer — your call.
Deliverables
Yours when we leave.
Source code, infrastructure, documentation and training. You can run, extend or replace it without calling us.
- Signed field-ownership and mapping specification
- Production integration service + source code
- NetSuite saved searches / SuiteScript
- Catalogue backfill with match report
- Location and price list mapping
- Exception queue with review UI
- Monitoring dashboards & alerts
- Runbook and operator training
Engagement / NetSuite → Shopify
Fixed-scope build, quoted after the mapping workshop. Typically 4–7 weeks typical for the core flows.
- Mapping workshop first, code second
- Sandbox build, then parallel run
- Reconciled to zero before cutover
- Two weeks of hypercare included
- Source code handed over
Reply within 1 business day. No commitment.
FAQ
The fine print.
Still deciding between building and buying? Book a 30-minute call. We'll tell you which one you are, including when the answer is to keep your connector.
Which fields should NetSuite own, and which Shopify?+
NetSuite should own what finance and operations rely on: SKUs, barcodes, prices, stock and B2B terms. Shopify usually keeps what marketing edits: descriptions, images, SEO fields and collections. We write that split down field by field, so the sync never overwrites work done in Shopify. A field can change owner later. It’s a configuration change, not a rebuild.
How do multiple EU warehouses and 3PLs map to Shopify?+
Each NetSuite location that ships online maps to its own Shopify location, and we push available stock per location. Shopify’s order routing then picks where each order ships from. You can hold back a safety buffer per location and leave out stores or transit locations. Shopify’s shipping profiles control which warehouse serves which country. The rules live in config, not code.
How do European prices, currencies and subsidiaries work?+
NetSuite price levels in each currency write fixed prices to Shopify price lists, one per market or B2B catalogue. If NetSuite holds prices net of VAT and a market shows VAT-inclusive prices, we agree which side does the conversion. Where several OneWorld subsidiaries sell the same item, we agree which subsidiary’s prices and stock feed each market.
Can NetSuite control B2B companies, terms and credit hold?+
Yes. NetSuite company customers become Shopify companies and locations, linked to the right catalogue. NetSuite terms map to Shopify payment terms where a match exists, such as Net 30. When finance puts a customer on credit hold, the matching company location switches to draft-order checkout, so orders wait for review instead of shipping on terms.
Which middleware suits a NetSuite-led catalogue?+
Choose by how far your item and price rules stray from the standard. Celigo’s Shopify–NetSuite integration app handles common item, inventory and fulfilment flows on a subscription. Other iPaaS tools, such as Boomi or Workato, need the mappings built. A custom build on SuiteScript, RESTlets and SuiteQL, writing through the Shopify Admin GraphQL API, suits matrix items, currency price lists and B2B terms that templates don’t cover. You own the code.
How fast does tracking reach the customer?+
Usually within a few minutes. When an item fulfilment is marked Shipped in NetSuite, the integration creates a Shopify fulfilment against the matching fulfilment order lines, with carrier and tracking number. Shopify then sends its shipping confirmation. If your 3PL writes fulfilments to NetSuite in batches, latency follows that batch, so we check its schedule in the workshop.
Other connectors
Pairs well with.
Most clients wire two or three systems at once. The mapping work overlaps, so it costs less than doing them one at a time.
Shopify ↔ NetSuite
Orders, customers, items, inventory, fulfillments and payouts flowing both ways — with NetSuite as the system of record.
Shopify → NetSuite
Orders, customers, refunds and payouts posted into NetSuite as clean transactions, with the right subsidiary, currency and VAT code on every line.
Zoho ↔ NetSuite
Zoho CRM, Books, Inventory and Desk kept in step with NetSuite — with one system of record per field, not per app.
Selling in Europe?
VAT and OSS, OneWorld subsidiaries, EU warehouses and local payouts, market by market.
All services
Store design, Shopify Plus development, CRO, migration, growth and performance.
Next step
Pick your first move.
Free, no commitment. A senior person replies within one business day.