Limitations, fixed / Shopify B2B ERP & CRM sync

Shopify B2B ERP & CRM sync.

Shopify ships the APIs, not the connector. The ERP & CRM module supplies the sync engine: orders out, invoices in, quotes into your CRM, remittance into your AR.

LAST VERIFIED 2026-07-12 AGAINST SHOPIFY DOCUMENTATION
TL;DR

Shopify B2B has no built-in ERP or CRM connector: Shopify's own documentation points merchants to App Store apps, iPaaS platforms, or custom builds on the B2B APIs. B2B Supercharge's ERP & CRM module closes the gap with two-way sync for Dynamics 365, NetSuite, Sage, HubSpot, and Salesforce: orders flow out, invoices and inventory flow in, quotes become CRM deals, and remittance posts to your AR. Your ERP stays the source of truth.

Does Shopify B2B include a native ERP or CRM integration?

No. Shopify's help documentation is direct about it: to connect Shopify B2B to an ERP or CRM, merchants get three paths, and every one of them is something you buy or build. The external integrations page lists pre-built connector apps from the App Store, iPaaS platforms, and custom integrations built on the B2B APIs, and recommends "having a technical resource assist in setting up and launching the integration."

PathWhat it meansWho owns the sync
App Store connectorA separate per-system app (Shopify names Acumatica, Dynamics 365 Business Central, NetSuite ERP Connector, Fulfil, QuickBooks Online)The app vendor, one subscription per system
iPaaS platformA middleware layer (Shopify names Pipe17, Patchworks, Webgility, OmnifiCX) you configure and pay forYou, plus the iPaaS bill
Custom buildYour developers write a sync service against the GraphQL Admin APIYou, entirely

The pattern repeats across Shopify's developer docs: the B2B API documentation exposes a complete object model, and the sync engine that moves data through it is your problem.

What Shopify provides, and what it leaves to you

The raw material is genuinely good. The gap is everything between your ERP and those endpoints.

CapabilityStatusDetail
B2B object model in the Admin APINATIVECompany, CompanyLocation, and CompanyContact objects, plus catalogs, price lists, payment terms, and B2B draft orders
ERP account mapping fieldNATIVECompany.externalId holds "a unique externally-supplied ID for the company"
Contract price pushNATIVEpriceListFixedPricesAdd sets exact per-variant prices, 250 per request
Historical B2B order importNATIVEorderCreate with a company location attaches ERP orders to Shopify companies
Change-event webhooksNATIVEOrder and company topics exist, with delivery caveats covered below
Two-way ERP connectorNOT NATIVENo built-in sync in any direction; apps, iPaaS, or custom code only
CRM syncNOT NATIVEShopify's admin extension docs list CRM integration as an app use case
Catalog and price list webhooksNOT NATIVE"There are no webhooks that are associated with changes to catalogs or price lists": pricing sync must poll
Live external pricing at checkoutNOT NATIVEFunctions network access is enterprise-plan only, and responses cache up to 300 seconds

Why is building your own Shopify ERP sync harder than it looks?

Teams that take the custom-build path hit the same walls, all of them documented by Shopify itself.

  1. Webhooks are not a delivery guarantee. Shopify's guidance is blunt: "Your app shouldn't rely solely on receiving data from Shopify webhooks." Delivery is not guaranteed, ordering is not guaranteed (an update can arrive before its create), and after 8 consecutive failed deliveries over 4 hours an API-created subscription is automatically deleted. Shopify's own webhook docs require reconciliation jobs on top.
  2. Price pushes are batched and rate-limited. priceListFixedPricesAdd accepts at most 250 prices per call and acts as add-and-replace, per the catalog build docs. A 100,000-SKU contract price book works out to more than 400 sequential calls per price list, inside a budget of 100 query-cost points per second on standard plans and 1,000 on Plus (API limits).
  3. Pricing changes must be polled. With no catalog or price list webhooks, your sync cannot react to pricing edits; it has to poll on a schedule.
  4. Order attribution has a documented trap. B2B orders must be read via purchasingEntity, not Order.customer. Reading the customer field misattributes B2B revenue to the individual contact, which Shopify documents as a common integration bug in accounting and ERP syncs.
  5. Order import has strict prerequisites. Importing ERP orders requires every company, location, contact, and product to exist in Shopify first, and if a line item's priceSet is omitted, Shopify silently fills in the current variant price, mispricing historical orders (import docs).
  6. Live pricing from the ERP is off the table. On standard and Plus plans, Shopify Functions cannot call external systems; prices must be pre-synced into price lists. See contract and live pricing for the full picture.
  7. Inventory is push-only, with concurrency rules. The ERP can push absolute quantities via inventorySetQuantities, which Shopify says to use "only if calling on behalf of a system that acts as the source of truth," with compare-and-swap checks and, since API 2026-04, a required idempotency key (mutation docs).

None of this is a criticism of the APIs. It is the job description of a sync engine, and Shopify does not ship one.

The fix: the ERP & CRM Integrations module

ERP & CRM Integrations is the fifth B2B Supercharge module. Your ERP stays the source of truth: quotes, orders, invoices, and remittance flow between Shopify and the systems your business runs on, both ways. One connector per system, both directions.

The module covers three sync surfaces:

Which systems does it connect?

SystemTypeDirection
Dynamics 365ERPTwo-way
NetSuiteERPTwo-way
SageERPTwo-way
HubSpotCRMTwo-way
SalesforceCRMTwo-way

How the module answers each native gap

Native gapModule answer
No built-in connector, three buy-or-build pathsOne connector per system, maintained as part of the suite
Webhook delivery not guaranteed, reconciliation requiredThe sync engine, including reconciliation, is the module's job, not your team's
No CRM syncQuotes sync to HubSpot or Salesforce as deals, with line items and status
Invoices and remittance live outside ShopifyInvoices pull in; remittance posts to AR per invoice
Inventory push mechanics (idempotency, concurrency)Handled inside the connector, ERP as source of truth

For the full picture of what native Shopify B2B does and does not include, see the constraints ledger, the price lists chapter, and the rest of the fixes series.

Frequently asked questions

Does Shopify B2B include a native ERP or CRM integration?

No. Shopify provides the APIs but no built-in connector. Its documentation points to App Store connector apps, iPaaS platforms, or a custom integration built on the B2B Admin APIs.

Which ERPs and CRMs does B2B Supercharge connect?

The ERP & CRM Integrations module connects Dynamics 365, NetSuite, and Sage, plus HubSpot and Salesforce. One connector per system, both directions.

Is the sync one-way or two-way?

Two-way. Orders push out of Shopify, invoices and inventory pull in, quotes sync to the CRM with line items and status, and remittance posts to your AR per invoice. Your ERP stays the source of truth.

Can my ERP serve live contract pricing into Shopify checkout?

Not on standard or Plus plans. Prices must be pre-synced into Shopify price lists, because Shopify Functions cannot make external network calls except on enterprise plans, and even there responses cache up to 300 seconds. See the live pricing chapter.

How do orders get from Shopify into an ERP without a connector?

Via webhooks plus API polling. Shopify states webhook delivery is not guaranteed and requires reconciliation jobs; after 8 consecutive failed deliveries over 4 hours, an API-created webhook subscription is automatically deleted.

Is there a field to map Shopify companies to ERP account numbers?

Yes. Company.externalId is documented as "a unique externally-supplied ID for the company" and appears in company webhook payloads. It is the standard hook for ERP and CRM account mapping.

How many contract prices can a sync push per API call?

250 fixed prices per priceListFixedPricesAdd request, inside the plan's rate limit of 100 query-cost points per second on standard plans and 1,000 on Plus.

See the ERP & CRM module running against your stack.

Book a demo and watch orders, invoices, quotes, and remittance move both ways between Shopify and the systems you already run.

Book a demo