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.
- Connecting Shopify to your accounting system: Xero, QuickBooks & Sage
- Shopify 3PL integration: connecting a fulfilment provider
- Shopify WMS integration: connecting your own warehouse
- Shopify CRM integration: syncing customers without duplicating them
- Shopify POS and unified retail: connecting shop and online
- Shopify product feeds: Google, marketplaces and channels
- Error handling in Shopify integrations: the part that decides everything
- Reconciliation jobs: making a Shopify integration reliable
- Shopify integration architecture: middleware or direct?
- Shopify subscription development: the technical side
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.
mario@clicksandcarts.coOr see what I do around Shopify: services, work beyond the theme, selected work.