Start a Project
AEO & GEO

Shopify NetSuite Integration: A Practical Setup Guide

16 min read
Adam Khaled

Adam Khaled

Founder, Web25

Shopify NetSuite Integration: A Practical Setup Guide

Quick answer: A Shopify NetSuite integration syncs orders, customers, stock levels and fulfillments between your store and your ERP, so nobody retypes data. You can connect them with a prebuilt connector, an automation tool or custom code using Shopify’s GraphQL API and NetSuite’s REST API. The right choice depends on how far your workflow differs from the standard one.

Key takeaways

  • The usual setup sends orders and customers into NetSuite, and stock levels and fulfillments back to Shopify.
  • Decide first which system is the source of truth for each type of data, because most sync bugs start there.
  • A prebuilt connector fits standard flows. Custom code fits unusual ones. Automation tools suit light, simple flows.
  • Use Shopify’s GraphQL Admin API and NetSuite’s REST API with OAuth 2.0 for anything new.
  • Webhooks can miss events, so add a scheduled check that compares both systems.

Table of contents

If your store runs on Shopify and your books and stock live in NetSuite, someone is probably copying data between them by hand. This guide explains how a Shopify NetSuite integration works, which way to build it, and what to watch out for.

What does a Shopify NetSuite integration sync?

A Shopify NetSuite integration moves data between your store and your ERP so each system has the same facts. NetSuite is an ERP, which means the system that holds your accounting, stock and order records.

Celigo’s NetSuite app for Shopify, one of the best-known connectors, lists customers, items, orders, cancellations, refunds, returns and inventory levels. That list is a good guide to what a typical integration covers.

Shopify NetSuite integration data flow: orders and customers go to NetSuite, stock levels and fulfillments come back
DataUsual directionWhy it matters
OrdersShopify to NetSuiteAccounting gets every web order without retyping
CustomersShopify to NetSuiteOne customer record for sales and invoices
Stock levelsNetSuite to ShopifyStops you selling items you do not have
Items and pricesNetSuite to ShopifyOne place to maintain the catalog
Fulfillments and trackingNetSuite to ShopifyCustomers see shipping updates
Cancellations and refundsShopify to NetSuiteKeeps the books correct after changes

The directions above are the common setup, not a rule. Many businesses keep NetSuite as the source for stock and prices, and Shopify as the source for orders and customers.

How can you connect Shopify to NetSuite?

There are three ways to connect Shopify to NetSuite: a prebuilt connector, an automation tool, or custom code. Start with the simplest one that covers your real workflow, and move up only when it does not.

MethodBest forWatch out for
Prebuilt connector, such as Celigo’s NetSuite appStandard order, inventory and fulfillment flows, and several Shopify stores in one NetSuite accountAn ongoing subscription, and limits when your process is unusual
Automation tool, such as Pabbly ConnectLight, simple flows, for example a new order creating a recordLimited error handling, plan limits that grow with volume, and no ready-made NetSuite app that we could find, so the flow has to call NetSuite’s REST API directly
Custom codeCustom fields, several warehouses, approval rules, or full control over errors and loggingBuild and maintenance cost, so it needs documentation and tests

If a connector covers your flows, use it. There is no point paying for custom development to rebuild what a ready-made app already does.

Custom code starts to pay off when your workflow does not fit the standard one. Typical triggers are custom fields in NetSuite, stock held in several locations, or rules such as holding an order until someone approves it.

How do you set up a Shopify NetSuite integration in 7 steps?

To set up a Shopify NetSuite integration, decide which system owns each type of data, map the fields, create secure credentials, build the order and stock flows, add a reconciliation check, and test in a sandbox before going live. The steps below follow that order.

Step 1: Decide the source of truth for each type of data

Write down which system wins for orders, customers, stock, prices and fulfillment status. When two systems can both change the same field, they will eventually disagree, and one will overwrite the other. A single owner per field avoids that.

Step 2: Map your data

List how a Shopify record becomes a NetSuite record. Match products by SKU, and decide how to match customers, such as by email. Map tax, shipping methods, payment methods and locations, too.

This is the slowest step and the one most often rushed. Mistakes here show up later as orders that land in the wrong place.

Step 3: Create secure credentials

On the NetSuite side, create an integration record and use OAuth 2.0. Oracle’s documentation says OAuth 2.0 is the preferred technology for new REST integrations, and that token-based authentication is being phased out. Give the connecting user a role with only the permissions the sync needs.

On the Shopify side, build against the GraphQL Admin API. Shopify’s documentation says the REST Admin API is a legacy API as of October 1, 2024. Request only the access scopes you need.

Step 4: Build the order flow, from Shopify to NetSuite

Use a Shopify webhook to start the flow when an order arrives. Shopify describes webhooks as a way to receive near-real-time event data, delivered to an HTTPS endpoint, Google Pub/Sub or Amazon EventBridge.

Each order should create a customer and a sales order in NetSuite. Store the Shopify order number on the NetSuite record, so that if the same order arrives twice, your code can see it already exists and skip it.

Step 5: Build the stock flow, from NetSuite to Shopify

Calculate the quantity you are willing to sell in NetSuite, then update only the Shopify products that match by SKU. Skip anything that has no match, and log it for review instead of guessing.

Plan the schedule around NetSuite’s limits. Oracle’s documentation sets concurrency limits by service tier, for example 5 concurrent requests for Standard accounts on contracts from June 2020, plus 10 for each SuiteCloud Plus license. A sync that fires hundreds of requests at once can hit that ceiling.

Step 6: Send fulfillments and refunds back

When NetSuite ships an order, send the tracking details to Shopify so the customer is notified. Handle cancellations and refunds in the other direction, so the books stay correct. Treat each as its own small flow with its own tests.

Step 7: Add a reconciliation check, then test before going live

Shopify says webhook delivery is not always guaranteed, and recommends reconciliation jobs that periodically fetch data so your app stays consistent. Add a scheduled job that compares recent orders and stock levels in both systems and reports any difference.

Then test in a NetSuite sandbox. Oracle notes that applications authorized with OAuth 2.0 in production are not copied to a sandbox, and that you must authorize them again each time the sandbox is refreshed. Run the first live week with alerts switched on, and watch every error.

What did we learn from a similar stock and order sync?

Web25 built a custom WooCommerce and POHODA integration for Mirael3D, a store selling 3D-printing filament. It is not a Shopify and NetSuite project, because POHODA is accounting software popular in Slovakia and Czechia, and we have no published Shopify NetSuite case study yet. The logic of the sync is the same: stock flows one way, orders flow the other.

The Mirael3D POHODA case study shows what mattered in practice:

  • POHODA stayed the source of truth for warehouse stock, and only strictly matched SKUs were updated in the store.
  • The connector was deployed first in dry-run mode, with writes disabled, before it touched live accounting records.
  • Risky actions, such as handling cancelled orders, sat behind an off, log-only or live switch.
  • Products with no match went to a draft review queue, and were never published for sale automatically.
  • Historical duplicate orders were blocked, and a full audit of 129 matched products found no stock discrepancies.

The same habits apply to any store and ERP sync: one owner for each field, matching on a stable key like SKU, a dry run before live writes, and a review queue for anything unexpected. For Shopify stores on Business Central, see our Dynamics 365 ecommerce integration guide.

What does connecting Shopify to NetSuite cost?

There is no honest single price, because the cost depends on a handful of factors you can list before you ask for a quote. A simple standard sync is a small job. A custom sync with unusual rules is a larger one.

FactorPushes the cost up when
Number of flowsYou sync orders, stock, fulfillments, refunds and prices, not just orders
Custom fields and rulesNetSuite has custom records or approval steps the standard flow ignores
Locations and storesStock sits in several warehouses, or several Shopify stores share one account
Order volumeHigh volume needs careful scheduling around request limits
MethodA connector adds a subscription, while custom code adds build and maintenance work
MonitoringYou want alerts, logs and someone to fix issues after launch

Budget for the time after launch as well. An integration touches money and stock, so it needs monitoring, and our guide to website maintenance packages covers how ongoing care is usually priced.

What mistakes break the sync?

Most failures come from unclear ownership of data and from skipped safeguards, not from the connection itself.

  • Letting both systems edit the same field, so changes overwrite each other.
  • Matching products by name instead of a stable SKU, which creates wrong or duplicate items.
  • Skipping duplicate protection, so a retried webhook creates the same order twice.
  • Trusting webhooks alone, with no scheduled check for missed events.
  • Testing against production data, instead of a sandbox and a dry run.
  • Forgetting to authorize the integration again after a sandbox refresh.
  • Syncing orders but not cancellations and refunds, so the books drift from reality.
  • Having no alerts, so the first sign of a failure is an unhappy customer.

How Web25 helps

Web25 is our agency. This guide covers it alongside alternatives.

If a connector covers your flows, we will tell you to use it, and you may not need anyone to build anything. If your process is unusual, Web25 builds custom integrations between online stores and accounting or ERP systems, including stock and order syncs like the one in the case study above, and keeps them monitored afterward.

Our backend and API service page explains how we work. For the wider picture of how integrations are planned, built and monitored, read our guide to custom API integration services. For a WooCommerce pairing, see the Xero WooCommerce integration guide. If your store runs on WooCommerce instead of Shopify, read the NetSuite WooCommerce integration guide.

FAQ

Not always. If your flows are standard, a prebuilt connector can handle orders, customers, inventory and fulfillments with setup rather than code. You need a developer when your process is unusual, such as custom fields, several warehouses or special approval rules, or when you want full control over error handling.

Use the GraphQL Admin API. Shopify's documentation says the REST Admin API became a legacy API on October 1, 2024, and that since April 1, 2025 all new public apps must be built exclusively with GraphQL. A new custom integration should follow that direction from the start.

Through an integration record in NetSuite. Oracle's documentation says OAuth 2.0 is the preferred technology for new REST integrations and that token-based authentication is being phased out. You create the integration record, set the scopes, and give the connecting user a role with only the permissions the sync needs.

No. Shopify's documentation says webhook delivery is not always guaranteed and that an app can miss or mishandle events. Shopify recommends reconciliation jobs that periodically fetch data and compare it. In practice, that means a scheduled check that finds any order or stock level the webhook missed.

It depends on your service tier. For contracts from June 2020, Oracle lists base limits of 5 concurrent requests for Standard, 15 for Premium and 20 for Enterprise and Ultimate, plus 10 for each SuiteCloud Plus license. Check your own limit in NetSuite before you design the sync schedule.

There is no single price. The cost depends on how many flows you sync, how many custom fields and rules you have, your order volume, and whether you buy a connector subscription or pay for custom development. Ongoing monitoring and fixes after launch should be budgeted as well as the build.

Yes. Celigo's Shopify app lists multi-store support, where several Shopify stores sync to one NetSuite instance. With custom code, you can do the same by keeping store-specific rules in a configuration layer, so a new store means new settings rather than a new build.

What to do next

Write down which system should own each type of data, and list the flows you need: orders, stock, fulfillments and refunds. That list tells you whether a connector is enough. If you want a second opinion before you choose, book a discovery call.


Written by Adam Khaled, Founder, Web25. Last updated October 2026.

More from the blog

Shopify NetSuite Integration: A Practical Setup Guide | Web25 Blog