What This Integration Does

The NetSuite/Shopify integration automatically keeps your Shopify storefronts and NetSuite ERP in sync, so your team doesn’t have to re-key the same information in two places. It covers:

  • Orders — paid Shopify orders become the right records in NetSuite automatically
  • Tax — the tax on each NetSuite sale matches exactly what Shopify charged
  • Gift cards — gift card sales and redemptions are recorded correctly in NetSuite
  • Inventory — stock levels update in Shopify within seconds of a change in NetSuite (Item Receipts, Inventory Adjustments, Inventory Transfers), with an hourly reconciliation as a safety net
  • Fulfilment — tracking numbers flow back to Shopify within seconds of an order shipping in NetSuite
  • Order visibility — follow every order’s journey on the Orders page, and see at a glance which orders need attention
  • Products & pricing — if your team uses Product Management, publish products from ItSynx to NetSuite and push their prices to Shopify
  • Audit — dashboards flag anything that’s out of step between the two systems, before it becomes a real problem

Cancellations, refunds and returns are not yet synchronised — see Cancellations, Refunds & Returns below.

Native Shopify B2B (company accounts, B2B catalogues and orders on payment terms) isn’t supported yet.

This guide explains what happens automatically, and what you may need to do when something needs your attention.


Before You Start

Your NetSuite account and Shopify stores need to be connected to ItSynx first. See the Getting Started guide.


Key Concept: Online Orders vs. POS Orders

Every Shopify order lands in NetSuite as one of two record types, and the integration decides which one automatically — you don’t need to tell it:

Shopify OrderNetSuite Result
Online — customer pays online, item is picked/packed/shipped laterSales Order + Customer Deposit
POS — customer pays and walks away with the item immediately (in-store or at an event)Cash Sale

The integration checks what’s actually been fulfilled when payment came through, line by line — it doesn’t matter whether the sale happened on a POS terminal or the website.

Gift cards add one more wrinkle (see the Gift Cards section below): because a digital gift card has nothing to ship, its liability must be recognised the moment it’s paid for, so a gift card line always counts as “fulfilled” for this purpose — even though Shopify itself never actually marks it as fulfilled. Here’s the full decision flow:

flowchart TD
    A([Shopify order paid]) --> B[Record 'Order Placed' timeline event]
    B --> C{Already processed<br/>in NetSuite?}
    C -- Yes --> Z([Skip - already exists])
    C -- No --> D[Create or update Customer]
    D --> E[Split lines: a line counts as<br/>fulfilled if Shopify fulfilled it,<br/>or it's a gift card]

    E --> F{Any unfulfilled<br/>lines left?}
    F -- No --> G[Create Cash Sale]
    G --> END1([Done])

    F -- Yes --> H{Any fulfilled<br/>lines at all?}
    H -- No --> I[Create Sales Order<br/>+ Customer Deposit]
    I --> END2([Done])

    H -- Yes --> L[Create Cash Sale<br/>for fulfilled lines]
    L --> M[Create Sales Order + Deposit<br/>for unfulfilled lines]
    M --> END3([Done])

Key Concept: Customer Identity

A customer is uniquely identified in NetSuite by their email address (not case-sensitive) plus the country of the Shopify shop they ordered from. This means:

  • The same customer ordering from the same country’s shop (even across different brands) is recognised as one NetSuite customer.
  • The same customer ordering from a different country’s shop is treated as a separate NetSuite customer — this is intentional, since a business can have separate legal entities/subsidiaries per country.
  • If a customer’s details are already in NetSuite and haven’t changed, no unnecessary update is sent.
  • An order must have a customer with an email address. An order without one (for example, a POS sale where no customer was selected) can’t be matched to a NetSuite customer, so it isn’t synced and appears under Needs Attention on the Orders page.

Products & Pricing

This section applies if your team uses ItSynx Product Management. Otherwise, products and prices are maintained directly in NetSuite and Shopify, and the integration matches them by SKU.

From a product’s page in ItSynx:

  • Publish creates or updates the product (and its variants) in NetSuite.
  • Publish Prices to Shopify pushes the current Base Price to every Shopify shop the product is sold in, without touching anything else about the product.

If you need to push pricing for every product in a shop at once (for example, getting a new shop ready to go live), speak to your ItSynx administrator — this is available as a bulk, one-off operation rather than a self-service button, since it touches every product in a shop simultaneously.

Inventory Sync

Stock quantities at your NetSuite warehouse locations are pushed to the matching Shopify shop/location in near real-time — receiving stock, adjusting a count, transferring between warehouses, or fulfilling an order (including orders placed outside Shopify, e.g. wholesale) in NetSuite triggers a sync within seconds (batched briefly if several changes happen in quick succession, so a busy warehouse period doesn’t cause a flood of separate syncs). An hourly delta run, plus a full daily reconciliation, remain in place as a safety net. Only changed quantities are sent to Shopify, and every update is logged.

To review what’s been updated, go to Sales → Inventory Update Logs. Each entry shows the previous and new quantity, when it happened, and whether it succeeded.

Order Fulfilment & Tracking Numbers

As soon as an order is fulfilled in NetSuite (an Item Fulfillment is created), the tracking number and carrier are sent to Shopify — usually within seconds — so the customer gets notified straight away. This is handled per line item, so:

  • An order fulfilled in multiple shipments will update Shopify with each tracking number as it happens.
  • An order with several different products fulfilled at different times is handled correctly — each product’s tracking number appears in Shopify as soon as it’s available.
  • An order with several different products fulfilled together in the same shipment appears in Shopify as a single tracking update covering all of them — not several separate ones with the same tracking number.

As a safety net, an hourly check also runs in case a tracking update didn’t go through instantly (e.g. a brief connection issue) — so nothing is ever missed; it just may take up to an hour in that rare case instead of a few seconds.

Gift Cards

Digital gift cards are sold through Shopify like any other product, but NetSuite treats them as a non-fulfillable item, and recognises their liability the moment they’re paid for rather than waiting for Shopify to mark them fulfilled (it never does, for a purely digital gift card):

  • A gift card bought on its own always becomes a Cash Sale — there’s nothing left to ship, so the liability is recognised straight away.
  • A gift card bought alongside a physical product creates both: a Cash Sale for the gift card (recognised immediately) and a separate Sales Order + Customer Deposit for the physical item (recognised once it ships, same as any other unfulfilled item).

A customer can also pay for an order using an existing gift card balance, either covering the full amount or combined with another payment method (e.g., part gift card, part card). When this happens, NetSuite records the exact amount paid by gift card in a dedicated Sale Gift Card Amount field on the Sales Order/Cash Sale, so Finance can see at a glance how much was gift card versus everything else, without checking Shopify.

Tax

The tax recorded on a NetSuite Sales Order or Cash Sale is exactly the tax Shopify charged the customer, to the cent. NetSuite, or a tax engine connected to it such as Avalara, doesn’t recalculate it, so the totals match between the two systems, including for US sales tax.

Cancellations, Refunds & Returns

The integration doesn’t yet synchronise cancellations, refunds, returns or order edits. Cancelling, refunding or editing an order in Shopify doesn’t change anything in NetSuite, so your team completes the matching steps in NetSuite using your usual process — for example, closing the Sales Order and refunding the Customer Deposit for an order cancelled before it ships, or raising a Return Authorization for goods coming back.

Automated cancellations, refunds and returns are on the ItSynx roadmap. This guide will be updated when they’re available.

Audit

Your Dashboard includes cards that surface anything out of step between systems before it causes a real problem:

  • Product Audit — e.g. Shopify products that don’t exist in NetSuite, or whose price doesn’t match NetSuite.
  • Sales Audit — e.g. Shopify orders that don’t exist in NetSuite, or whose value doesn’t match.

You can also browse the raw data directly under Products and Sales.

Orders & Troubleshooting

Go to Sales → Orders to see every order the integration has synced, with its order number, channel, NetSuite status, customer, amount and date. Search or sort the list to find an order, then click it to open its timeline: each step of the order’s journey (placed, synced to NetSuite, status changes, fulfilled) in plain language, with the linked NetSuite records.

Processing / Needs Attention

Orders received from Shopify that aren’t in the Orders list yet are listed in the Processing / Needs Attention panel at the top of the Orders page:

  • Processing — the order is being synced. This normally takes seconds and needs no action.
  • Awaiting Sync — the order has been created in NetSuite and will move to the Orders list once NetSuite’s sales data next syncs. No action is needed.
  • Needs Attention — the order couldn’t be synced. Hover over the badge to see why.

An order that has been ignored in the Sales Audit as not being in NetSuite no longer needs attention, so it isn’t listed.

Common reasons an order needs attention:

  • Cannot auto-assign serial numbers — a POS sale used serialised items, and the system can’t determine which serial numbers to allocate (Shopify has no way to record this). Click Assign Serial Numbers, choose the correct ones, then click Save & Replay to sync the order again.
  • Customer ID or Email is missing — the order has no customer email (see Customer Identity). Enter the order in NetSuite manually.

Once the cause has been fixed, click Replay to sync the order again. Replaying never creates anything twice. Replay is available to the Administrator and Sales & Inventory roles. For anything else, contact ItSynx support.


Frequently Asked Questions

What happens if a webhook is delivered twice? The integration checks NetSuite directly before creating anything, so it detects and safely skips duplicate deliveries.

Why did my order come through as a Cash Sale instead of a Sales Order? Cash Sales are used when the item was already fulfilled at the moment of payment (typical of an in-person/event sale) — there’s no pick/pack/ship cycle and no outstanding balance to hold as a deposit.

Why does the same person appear as two different customers in NetSuite? If they’ve ordered from shops in two different countries, this is expected — customer identity includes the shop’s country, since one customer can’t span more than one NetSuite subsidiary.

What happens in NetSuite when I refund or cancel an order in Shopify? Nothing yet — cancellations, refunds and returns aren’t synchronised. Complete them in NetSuite using your usual process (see Cancellations, Refunds & Returns).

Where can I see how much of an order was paid by gift card? Check the Sale Gift Card Amount field on the Sales Order or Cash Sale in NetSuite — it holds the exact amount redeemed from a gift card, separate from the order’s total payment.