Get a free audit
Get a free audithello@conversionsking.online

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

  • NetSuite as master
  • Deltas, not full reloads
  • Field ownership agreed
  • You own the code
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.

RecordDirectionTriggerLatencyHow we handle it
Items & matrix itemsNetSuite → ShopifySuiteQL delta on last-modified dateHourly or on changeMatrix 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 locationNetSuite → ShopifyScheduled delta per location5–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 currencyNetSuite → ShopifyPrice level or currency price changeHourly or nightlyNetSuite 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 & termsNetSuite → ShopifyCustomer create or update in NetSuiteNear real-timeCompany customers become Shopify companies and locations. NetSuite terms set payment terms; credit hold switches checkout to draft orders for review.
Fulfilments & trackingNetSuite → ShopifyItem fulfilment marked ShippedNear real-timeCreates 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 itemsNetSuite → ShopifyItem set inactive in NetSuiteHourly or nightlyInactive 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 fieldShopify targetRule
item → itemid / upccodeProductVariant.sku / barcodeSKU 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 fieldsProduct + ProductVariant optionsEach matrix option, such as size or colour, becomes a product option. Each child item becomes one variant.
item → internalidProduct and ProductVariant metafieldsStored on the Shopify side, so a renamed SKU still matches the right record.
locationLocationEach NetSuite warehouse, 3PL or store that ships online maps to one Shopify location. The rest are left out.
item locations → quantityavailableInventoryLevel (available) via inventorySetQuantitiesWe agree whether NetSuite sets available or on-hand, so orders not yet in NetSuite aren’t counted twice.
item pricing → price level × currencyPriceList fixed prices via priceListFixedPricesAddOne price list per currency or B2B catalogue. Unset prices fall back to the price list’s adjustment rule.
customer (company) + termsCompany, CompanyLocation + PaymentTermsTemplateTerms such as Net 30 map to Shopify’s templates. Terms Shopify can’t express, such as early-payment discounts, stay in NetSuite.
customer → creditholdoverrideCompanyLocation buyerExperienceConfiguration.checkoutToDraftOn hold means B2B checkouts become draft orders for review instead of orders placed on terms.
itemfulfillment → packagetrackingnumber + shipmethodFulfillment trackingInfo via fulfillmentCreateCreated 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.

  • NetSuite SuiteTalk REST
  • SuiteQL
  • Saved searches
  • SuiteScript 2.1 Map/Reduce & User Event
  • RESTlets
  • Shopify Admin GraphQL API
  • Shopify Bulk Operations
  • productSet & inventorySetQuantities
  • OAuth 2.0 M2M / Token-Based Auth
  • Durable queue + dead-letter

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.

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

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

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

  4. 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
Book a scoping call

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.

Next step

Pick your first move.

Free, no commitment. A senior person replies within one business day.