# Connecting Shopify to an ERP or management software

> Connecting Shopify to an ERP or management software goes through the Admin API, in REST or GraphQL, and webhooks that react to store events in near real time. The hard part is almost never the connection itself, but translating between two data models that don’t match.

- Source canonique : [https://allaux.fr/en/shopify/problemes/connecter-shopify-erp](https://allaux.fr/en/shopify/problemes/connecter-shopify-erp)
- Langue : EN
- Dernière mise à jour : 2026-09-30

## Direct answer

> Start with the mapping table, not with code: decide which field carries the shared identity between Shopify and the ERP, usually the variant SKU, and where data Shopify has no native field for will live, which means metafields. Then create a custom app in the Shopify admin to obtain an Admin API token, and subscribe to the webhooks for the events you need to mirror.

## How I approach a Shopify-ERP integration

1. **Map both data models** — I compare Shopify’s fields (products, variants, orders, stock) against the ERP’s: product references, VAT handling, shipping address structure. The gaps determine the real scope of the work.
2. **Choose between webhooks and periodic polling** — For frequent events, such as a new order or a stock update, I have a service react to Shopify webhooks rather than polling the API in a loop — cheaper and more responsive.
3. **Size the sync for the real volume** — On the GraphQL Admin API, the rate limit works by cumulative query cost rather than calls per minute: I size requests accordingly for a large catalogue or order volume.
4. **Handle partial failures** — A sync that fails halfway through — an order created in the ERP but not confirmed in Shopify, for example — needs to be detected and replayable, not silently dropped.
5. **Document the sync service** — I deliver a service that can be maintained or handed over, with its field-mapping rules and error handling documented, not an isolated script.

## What I hear regularly

- I have to re-enter every Shopify order into my management software by hand
- Stock isn’t synced between Shopify and my ERP, so I sometimes sell items that are actually out of stock
- The off-the-shelf connector app doesn’t match my ERP’s specific configuration
- I want every Shopify order to trigger an accounting entry automatically
- My product references don’t match between the two systems

## Why the connection is easy and the sync isn’t

Shopify exposes an Admin API, in REST or GraphQL, covering products, orders, customers and stock, plus webhooks — orders/create, products/update, inventory_levels/update, among others — that notify an external system as soon as an event happens, without having to poll the API continuously. Technically, connecting to Shopify is well documented and rarely a problem on its own.

The real difficulty lies elsewhere: most ERPs don’t speak Shopify’s data model natively. Matching a product reference, a VAT rule, a shipping method or an order status between the two systems needs a middle layer that translates, and that knows what to do when a piece of data has no match on the ERP side. That service, more than the API connection, is the actual integration work.

## Off-the-shelf connector or custom integration

> Connector apps exist for some well-known ERPs and can be enough for a standard configuration. For a less common ERP, a specific setup or particular business rules, they rarely adapt well: a bespoke integration service then becomes the more reliable path, with the ongoing maintenance that comes with it.

## Worth reading next

- **Integrations and APIs** — The kind of work described here, in detail. ([/services/integrations-api](/services/integrations-api))
- **Automating order processing** — For order-side automation specifically. ([/shopify/problemes/automatiser-commandes](/shopify/problemes/automatiser-commandes))
- **Shopify: overview** — The other Shopify topics I work on. ([/shopify](/shopify))

## FAQ

### Should I use REST or GraphQL to connect Shopify to my ERP?

It depends on the volume and nature of the data to sync. GraphQL lets you fetch several related resources in one request and handles large catalogues better, but its rate limit works on cumulative cost, which needs factoring into sizing.

### Can an off-the-shelf connector app be enough?

For a well-known ERP and a standard configuration, often yes. As soon as the configuration or business rules move off the standard path, these apps adapt poorly and a bespoke integration becomes more reliable.

### What happens if the sync fails partway through?

It’s something I handle explicitly in the service: every failure must be detected, logged and replayable, to avoid a phantom order on one side or the other.

### How long does this kind of integration take?

It mostly depends on the number of fields to map and the complexity of the ERP’s business rules, more than the number of Shopify endpoints used.

### Do you maintain the sync service after it goes live?

Yes, that’s possible and even advisable: both systems evolve, whether through a new API version or a change on the ERP side, and an unmaintained sync eventually drifts silently.
