Clicks & Carts

Shopify ERP integration: connecting NetSuite, SAP & Dynamics

Stock in the ERP, orders in Shopify, someone re-typing the difference. Here is how the connection is actually built — and where most of them quietly go wrong.

9 min read · Integrations ·

Once a store passes a certain size, the problem stops being the storefront and starts being everything behind it. Stock lives in an ERP. Pricing changes there. Orders need to land there for finance and fulfilment. Keep doing that by hand and you get oversells, wrong prices and a warehouse working from yesterday's data. This is what a Shopify ERP integration solves — and where a lot of them quietly go wrong.

What "ERP integration" really means

An integration is just an agreed, automated conversation between two systems: Shopify and your ERP (NetSuite, SAP Business One, Microsoft Dynamics, or something in-house). Each side owns certain data, and the integration keeps the other side up to date. The hard part is never the connection itself — it's deciding who owns what and what happens when they disagree.

The four things most stores sync

1. Inventory

Usually the first reason people call. The ERP is the source of truth for stock; Shopify needs to reflect it fast enough that you don't sell what you don't have — how Shopify models inventory across locations decides how that lands.

2. Products and pricing

New products, price changes and status often originate in the ERP. Pushing them to Shopify avoids double entry, but you decide which fields the ERP controls and which merchandising can still edit without being overwritten overnight. Where the data is richer than a title and a price — specifications, materials, technical attributes — it usually belongs in metafields and metaobjects rather than in a description blob.

3. Orders

When a customer checks out, the order needs to reach the ERP for invoicing and fulfilment. This is the flow where errors hurt most: a dropped order is a customer who paid and got nothing.

4. Fulfilment and tracking

Once the ERP or warehouse ships, that status and tracking number flow back to Shopify so the customer gets notified. Closing this loop is what makes it feel automatic.

Real-time or batch?

This one decision shapes cost and complexity more than any other.

  • Real-time uses webhooks and API calls the moment something changes. Best when minutes matter. More moving parts, so it needs proper retry and error handling.
  • Batch syncs on a schedule — every 15 minutes, hourly, nightly. Simpler and cheaper, fine for catalogues that don't change second to second.

Most real stores are a mix: orders real-time, inventory every few minutes, full catalogue nightly. Matching the method to each data type is what keeps the bill and the fragility down.

The integrations that break aren't the ones with clever code. They're the ones where nobody decided what happens when the ERP and Shopify disagree.

Where integrations break

  • No error handling. An API call fails, nothing retries, and one order silently never reaches finance.
  • Two sources of truth. Both systems think they own price. You need one owner per field, written down.
  • Mismatched identifiers. Shopify keys on SKU; the ERP keys on an internal code. Without a clean mapping, products drift apart.
  • Rate limits ignored. A naive full-catalogue push at midnight hits Shopify's API ceiling and half of it fails quietly.

NetSuite, SAP and Dynamics — briefly

NetSuite has a mature API and is the most common pairing with Shopify Plus. SAP is powerful and rigid — integrations lean on middleware and careful field mapping. Microsoft Dynamics sits in between. The platform changes the details; the principles above don't move.

Off-the-shelf connector or custom build?

If the ERP also owns customer-specific pricing, that shapes the whole architecture — B2B pricing covers the calculate-in-the-ERP, display-in-Shopify pattern.

Connectors are worth trying first if your setup is standard. You move to a custom build when the connector can't express your rules: custom pricing logic, non-standard fulfilment, multiple systems. The honest answer for most mid-size stores is a connector for the common flows and custom code for the two or three things that make the business specific.

The same pattern holds one layer down, in accounting: standard payout sync from a connector, custom work only where your setup genuinely differs. If the wholesale side is genuinely complex, read when Shopify is the wrong choice first. If you are planning this as part of a replatform, scope the integration alongside the migration rather than after it — the data model decisions overlap almost completely.

Everything in this guide

10 articles that go deeper on each part.

Is this the problem you’re looking at?

Send me the link to your store and a line about what is going wrong. You get a straight answer within one business day — no pitch, no obligation.

[email protected]

Or see what I do around Shopify: services, work beyond the theme, selected work.

Keep reading

← All articles