Skip to content
Insights

Shopify ERP integration: architecture, ownership and reliability

Shopify ERP integration: architecture, ownership and reliability

A Shopify ERP integration is not complete when one successful test order reaches the ERP. It is complete when the flow can be operated, monitored and recovered under real conditions.

That requires business ownership and technical design to meet in the same document. This guide explains the decisions that make an integration dependable after the implementation team has moved on.

Start from business events, not endpoints

Before discussing APIs, identify the events the business needs to support:

  • a product becomes sellable in a market;
  • a price or customer-specific term changes;
  • inventory is reserved, released or adjusted;
  • a customer places, edits or cancels an order;
  • fulfilment and tracking information becomes available;
  • a refund or return changes the financial state.

For every event, record the source system, destination, required timing, acceptable delay and the consequence of failure. A field list without that context cannot define reliability.

Assign one source of truth per data domain

“Both systems update each other” is not an ownership model. Decide which system is authoritative for each domain and which changes are allowed elsewhere.

Data domainQuestions to resolve
ProductsWho creates the identifier, status, options and market availability?
ContentDoes PIM or Shopify own descriptions, media and translations?
PricingAre prices public, market-specific, customer-specific or contract-driven?
InventoryWhich locations count as sellable stock and when is stock reserved?
CustomersDoes Shopify, CRM or ERP own identity and account changes?
OrdersAt what point is an order accepted by the operational system?
FulfilmentWhich system creates fulfilments, tracking and cancellations?

Channel-specific content can belong in Shopify even when core product records originate in ERP. Ownership can differ by field, but that makes the data contract more important, not less.

Define an explicit data contract

The contract should describe more than a sample payload. Include:

  • stable identifiers and mapping rules;
  • required and optional fields;
  • accepted formats and enumerations;
  • validation and rejection behaviour;
  • transformation and rounding rules;
  • units, currencies, tax treatment and time zones;
  • versioning and backward compatibility;
  • handling for deletion, archival and reactivation.

Put business-readable explanations beside technical schemas. A price calculation or inventory rule needs to be reviewable by the person accountable for the outcome.

Choose the sync pattern by operational need

Common patterns include:

Event-driven

An event or webhook triggers work soon after a change. This is useful when delay affects customer promises or operations, but it requires duplicate handling, ordering decisions and a recovery path.

Scheduled synchronisation

A job processes changes at a defined interval. It can be easier to reconcile and control, but the business must accept the delay and understand what customers see between runs.

On-demand lookup

Shopify or an extension requests data when it is needed. This can keep information current but makes the customer journey depend on the availability and latency of another system.

Many real architectures use a combination. “Real time” should describe an agreed service need, not act as a default sales promise.

Design for duplicates and retries

Networks time out. Suppliers throttle requests. A response can be lost after the destination has already completed the operation.

Important write flows therefore need idempotency: repeating the same logical request should not create another order, payment or fulfilment. Use stable source identifiers and record processing state so retries can be safe.

Retries also need boundaries. Permanent validation errors should not loop forever. Separate recoverable failures from records that require data correction or human review.

Make failure visible

Logging is not the same as monitoring. An operational integration should answer:

  • Is the flow running?
  • How far behind is it?
  • Which records failed?
  • Has the failure been retried?
  • Is customer-facing data now unreliable?
  • Who needs to act?

Useful controls may include metrics, structured logs, alerts, a dead-letter queue and a reconciliation view. The appropriate level depends on the business consequence of the flow.

Reconciliation closes the reliability gap

An integration can report success and still produce a wrong result. Reconciliation compares meaningful totals or records between systems.

Examples include:

  • Shopify orders accepted by ERP during a time window;
  • quantities by order line;
  • fulfilments and tracking references;
  • inventory balances for selected locations;
  • active products and price lists by market.

Define tolerances and ownership. Someone needs to know whether a difference is expected, delayed or an incident.

Test real operational cases

The test plan should cover:

  • a normal order and a duplicate delivery attempt;
  • partial fulfilment and partial refund;
  • cancellation before and after ERP acceptance;
  • missing or invalid customer and product identifiers;
  • inventory reaching zero during an order;
  • rate limiting and source-system downtime;
  • replay after a prolonged outage;
  • a schema or business-rule change.

Use non-production environments where the vendors support them, but recognise differences in data and capabilities. A production activation still needs controlled validation.

Document operating responsibility

Write down who owns:

  • ERP data and API access;
  • Shopify configuration and extensions;
  • integration infrastructure and secrets;
  • monitoring and first response;
  • business-data correction;
  • vendor escalation;
  • release approval and change communication.

If several suppliers are involved, define the evidence each one must provide before handing an incident to another team.

Plan for change from day one

APIs, ERP versions, Shopify capabilities and business rules change. Use version control, separate environments, reviewable configuration and automated tests where the risk justifies them.

Shopify’s Admin GraphQL API documentation is the primary reference for supported Shopify operations. The exact source-system documentation and contracted access are equally important.

The architecture test

A sound Shopify ERP integration has clear sources of truth, documented contracts, safe retries, visible failures, reconciliation and named operational owners. If one of those is missing, the implementation may transfer data but it is not yet dependable.

Explore Growly’s Shopify integration service or review the migration checklist if the integration is part of a wider replatforming programme.

Sources

Frequently asked questions

Can Shopify integrate with any ERP?

Integration is usually possible when the exact ERP product and version provide suitable APIs or another supported interface. Access, data quality, rate limits and supplier cooperation must be verified.

Should inventory update in real time?

Not automatically. Event-driven, near-real-time and scheduled models each have trade-offs. The right choice depends on operational risk, volumes, API support and the cost of stale data.

Which system should own product data?

Ownership should be decided per data domain. A PIM may own enriched content, an ERP may own commercial data and Shopify may own channel-specific merchandising. The contract must be explicit.

How should failures be handled?

Depending on the flow, controls may include validation, idempotency, retries, dead-letter handling, alerts and reconciliation. Someone must also own the operational response.

Discuss your Shopify project All insights