
A Shopify NetSuite integration checklist should cover six phases: discovery, data cleanup, field mapping sign-off, sandbox testing, cutover and hypercare. Each phase needs a named owner and a clear exit test. Skipping any one usually shows up later as duplicate orders, wrong tax or a month-end close that will not reconcile.
This is the checklist we work through on every build, written so you can use it with any partner or connector. It includes the discovery questions we ask, a test plan with 24 scenarios and the cutover steps that keep go-live calm.
Key takeaways
- Discovery decides cost. Most surprises later trace back to a question nobody asked.
- Clean data before you map it. Duplicate customers and missing SKUs will not fix themselves in an integration.
- Get mapping signed by finance, not just by the person who built it.
- Test with real scenarios, including refunds, partial shipments and VAT edge cases.
- Plan the first month-end close as part of the project. Hypercare ends after it, not before.
Phase 1: what should you ask in discovery?
Discovery is where scope is set. These are the questions we ask in the first sessions:
- Which Shopify plan are you on, and how many stores or expansion stores do you run?
- Are you on NetSuite OneWorld, and which subsidiary owns each market?
- Which records flow, and in which direction: orders, customers, items, prices, inventory, fulfilments, refunds, payouts?
- Which payment providers and currencies do you use?
- Which warehouses and 3PLs ship orders, and how does each report stock?
- Do you sell B2B through Shopify, and with which payment terms?
- How is tax calculated today, and which system is the source of truth for VAT?
- Do orders post to NetSuite as sales orders, cash sales or invoices?
- How many orders a day on a normal day, and on your busiest day?
- Which apps change orders after checkout: subscriptions, bundles, gift cards, loyalty?
- Is there an existing connector, and what must be switched off at go-live?
- Who in finance and operations will sign off, and who will own the integration after launch?
The answers shape cost more than anything else, which our integration cost guide explains. They also decide whether a connector is enough, covered in connector vs custom.
Phase 2: which data needs cleaning first?
- SKUs. Every Shopify variant needs a SKU that matches exactly one NetSuite item. Find blanks, duplicates and trailing spaces.
- Customers. Merge duplicate NetSuite customers, and decide how guest checkouts are handled.
- Items. Confirm item types, matrix items for variants, and kit or assembly items for bundles.
- Locations. Agree which NetSuite locations are sellable and which Shopify locations they map to.
- Tax codes. One NetSuite tax code per rate and country you sell into, checked by your adviser.
- Shipping methods and payment methods. A NetSuite item or method for each Shopify rate and gateway.
- Personal data. Decide what customer data NetSuite actually needs. Our GDPR guide covers minimisation and retention.
Phase 3: what does field mapping sign-off look like?
The mapping document lists every field that moves, its source, its target, any transformation and what happens when it is missing. Sign-off means the person who owns the outcome has read it and agreed.
| Mapping area | Signed off by | Typical questions |
|---|---|---|
| Orders and lines | Finance and operations | Sales order or cash sale? How are discounts and shipping posted? |
| Tax | Finance and tax adviser | Which tax code per country? How is OSS reported? |
| Customers | Finance and CRM owner | Match on email or ID? One customer per guest? |
| Items and prices | Merchandising | Which fields does NetSuite own? Who edits product copy? |
| Inventory | Operations | Which locations? What safety stock? |
| Payouts | Finance | Which clearing accounts? How are fees and disputes posted? |
For multi-country stores, add the tax and subsidiary decisions from our EU VAT and OSS guide and Markets and OneWorld guide to the mapping before anyone signs.
Phase 4: which sandbox test cases should you run?
Test in a NetSuite sandbox connected to a Shopify development or staging store. Oracle notes that a sandbox refresh copies production configuration and data, and that integration records come across with their settings. Review and block those you do not want running in sandbox. Shopify’s dev stores cannot process real transactions, so use the test gateway or your provider’s test mode.
| # | Scenario | Expected result |
|---|---|---|
| 1 | Standard paid order, one item | Sales order created once, correct tax code and totals |
| 2 | Same webhook delivered twice | No duplicate sales order |
| 3 | Order with a discount code | Discount posted as agreed, net totals match |
| 4 | Order with free and paid shipping | Shipping item and amount correct |
| 5 | Order in EUR, GBP and SEK | Currency and exchange rate correct |
| 6 | Order to another EU country under OSS | Destination VAT rate and tax code |
| 7 | B2B order with a valid VAT number | Reverse charge or exemption applied, VAT number on record |
| 8 | B2B order on net terms | Terms on sales order and invoice |
| 9 | New customer, then repeat customer | One NetSuite customer, not two |
| 10 | Guest checkout | Handled by the agreed guest rule |
| 11 | Unknown SKU | Order held in exception queue with alert |
| 12 | Bundle or kit | Components or kit item as mapped |
| 13 | Gift card purchase and redemption | Liability posted, not revenue |
| 14 | Order edited after checkout | Sales order updated, not duplicated |
| 15 | Order cancelled before fulfilment | Sales order closed, stock released |
| 16 | Full fulfilment in NetSuite | Shopify fulfilment with tracking, customer notified |
| 17 | Partial fulfilment from two locations | Two Shopify fulfilments, correct lines |
| 18 | Full refund | Credit memo and customer refund |
| 19 | Partial refund in a later month | Posted in the refund month, original period untouched |
| 20 | Return received at returns location | Stock not sellable until inspected |
| 21 | Stock change in NetSuite | Shopify available quantity updates within the agreed interval |
| 22 | Stock change while an order is in flight | No oversell, no stale overwrite |
| 23 | Shopify Payments payout with fees and a refund | Deposit equals bank amount, clearing account cleared |
| 24 | Chargeback | Posted to disputes account, not as refund |
| 25 | NetSuite unavailable for an hour | Records queued and retried, nothing lost |
| 26 | Volume test at peak day rate | Sync keeps pace within agreed latency |
Each case gets a tester, a date and a pass or fail. Failed cases go back to the build with the record IDs attached.
Phase 5: what goes in the cutover plan?
- Pick a quiet window. Avoid month-end, peak weeks and NetSuite release dates.
- Freeze changes to products, locations and mapping a few days before.
- Decide the order cut-off. Orders before it are handled the old way, orders after it by the new integration. Write the cut-off order number down.
- Switch off the old process or connector at the same moment, so two systems never post the same order.
- Set the inventory baseline. Run a full stock sync and check a sample of SKUs by hand.
- Register production webhooks and credentials, and confirm sandbox ones are not pointing at production.
- Hold a go or no-go call with finance, operations and the build team.
- Agree the rollback. Know exactly what you would switch back and who decides.
Phase 6: what should monitoring and alerting cover?
- Failed records. Every record that fails goes to a queue with the reason, and someone is alerted.
- Latency. Time from Shopify order to NetSuite sales order, against the agreed target.
- Inventory drift. A nightly comparison of Shopify and NetSuite quantities per location.
- Clearing balances. Open payout items older than a payout cycle.
- API errors and throttling on both platforms.
- Silence. No orders for an unusual stretch is also an alert.
Send alerts to a shared channel and a named person, not a mailbox. Our team works on UTC+4, which overlaps most of the European working day, so issues raised in the morning in Amsterdam or Berlin get looked at the same day.
Hypercare and ownership
Hypercare is the period after go-live when the build team watches closely and fixes fast. We plan it to run until after the first month-end close, because that is when finance finds what testing missed. Daily checks cover failed records, drift and clearing balances.
After hypercare, ownership must be clear. Name who owns the integration day to day, who approves mapping changes, who handles failed records and who talks to the build team. Write it into the runbook, with how to retry a record and who to call.
FAQ
How long does a Shopify NetSuite integration project take?
It depends on scope, data quality and how quickly decisions are made. Discovery usually shows the realistic timeline, which is why we do it before quoting a fixed plan.
Can we test in production instead of a sandbox?
We do not recommend it. Test orders in production NetSuite affect reporting and stock. A sandbox is an add-on to your NetSuite licence, so ask your account representative early.
Who should sign off the field mapping?
Finance for orders, tax and payouts. Operations for inventory and fulfilment. The person signing should own the outcome, not just the build.
What usually goes wrong at go-live?
Two systems posting the same orders, unmapped SKUs and webhooks pointing at the wrong account. The cutover steps above exist to catch each one.
For the bigger picture, read our Shopify NetSuite integration guide for Europe, along with the operations guides on inventory across EU warehouses, payout reconciliation and Shopify B2B with NetSuite. Or see the Europe hub for country pages. To start your own checklist, book a free integration assessment.


