Shopify B2B ERP Integration: APIs, Webhooks and Custom Architecture

Direct answer: connecting Shopify to an ERP does not simply mean “sync everything in real time”. I first define which system is the source of truth for products, prices, inventory, customers and orders; then I design events, bulk synchronization, retries and reconciliation. A custom connector is appropriate when the ERP exposes suitable interfaces and the requirement is not covered better by a reliable existing app.
Before code: map the systems
The most important point is deciding where each data type originates. The ERP can be authoritative for SKUs, inventory and price lists; Shopify can be authoritative for checkout and online orders; a PIM can manage content and attributes. Without this map, bidirectional synchronization can create loops and overwrites.
For each entity I define flow direction, stable identifier, frequency, conflict behavior and recovery strategy when one of the systems is unavailable.
Admin GraphQL API for reading and writing Shopify data
Shopify provides the Admin GraphQL API for products, variants, inventory, orders, customers, catalogs, companies and many other resources. GraphQL lets the client request the fields it actually needs, while Shopify applies query-cost throttling.
I do not build a project around rate-limit numbers copied from old REST API versions. The client should read and respect the effective throttling of the API in use, handle errors and retry in a controlled way.
Webhooks for events, queues for reliability
Webhooks are useful for receiving events such as resource creation or updates without continuously polling Shopify. I do not promise delivery “in under 10 milliseconds”: a webhook is asynchronous and the integration must tolerate delays, duplicates and retries.
The endpoint therefore validates the request, records the event quickly and moves longer processing to a queue. I use idempotency and stable identifiers to prevent the same event from creating two operations in the ERP.
Bulk operations for large catalogs
When I need to extract or update large amounts of data, I do not turn thousands of records into a fragile chain of individual calls. I evaluate Shopify bulk operations and asynchronous mechanisms together with checkpoints and final reconciliation.
“Instant” synchronization is not always necessary. Inventory and orders may need low latency; descriptions and editorial data can often use a simpler, more robust scheduled process.
B2B on Basic, Grow and Advanced
In 2026 Shopify extended several native B2B capabilities to the standard plans, with specific limits. In my projects I verify the companies, locations, payment terms, quantities and catalogs actually available on the selected plan before designing the flow.
I do not use Liquid and metafields to show a “fake” price in the storefront if the transaction logic is not enforced correctly through cart and checkout. Pricing and commercial conditions need to remain coherent through the final order.
I cover the plan details in Shopify B2B on Basic, Grow and Advanced.
Zucchetti, TeamSystem, Danea and other ERPs: verify the exact product
There is no single “Zucchetti API” or “TeamSystem API” that applies to every product and version. Before quoting a connector I verify the exact ERP, license, available interfaces, vendor documentation and any contractual restrictions.
The same applies to Danea Easyfatt: if the supported flow uses files, XML, exports or a specific connector, I design around the interface that actually exists instead of promising a REST API the product does not expose.
Tax data and electronic invoicing
An integration can transfer VAT numbers, tax codes, addresses and other data needed by the ERP, but generation and transmission of electronic invoices depends on the fiscal software and administrative process being used. I do not treat Shopify alone as the system that “sends to SdI”.
Fields, validation and responsibilities must be agreed with the professional handling tax matters and the ERP provider. My work is to make sure the technical data is collected and transferred in the agreed format, within what Shopify and the ERP support.
Existing app or custom connector?
I do not choose custom by default. A vendor-maintained app or connector can be cheaper and more reliable. I build custom when there are specific business rules, internal systems or process constraints that a standard solution does not cover.
Custom also creates responsibilities: hosting, monitoring, logs, API updates, error handling and maintenance. I therefore do not promise zero recurring cost or an automatic SEO advantage simply because the connector is server-side.
Definition of Done for the integration
- Approved source-of-truth map for each entity.
- Stable IDs and mappings between ERP and Shopify.
- Retries, idempotency and failure handling tested.
- Orders, inventory and pricing reconciled on real cases.
- Logs and alerts sufficient to locate a broken flow.
- Load tests aligned with the client's actual volumes.
- Documented recovery procedure.
For the Shopify layer I use the Admin GraphQL API, webhooks and bulk operations.
I’m Francesco Guiducci, a freelance Shopify specialist and Shopify app developer. I handle integrations on Basic, Grow and Advanced when the required architecture is compatible with the capabilities actually available.
Updated September 3, 2026.

