Give every field exactly one owner and let data flow from that owner outwards, never back. In most businesses the ERP owns SKUs, cost, price, stock, payment terms and invoices; Shopify owns merchandising, promotions and the order as placed; a PIM owns product content; and the OMS or warehouse system owns fulfillment and tracking. The fields that cause most trouble are price, inventory, customer and company records, and anything that can be edited in two places. Write the map down as a table before any connector is configured.
Most integration bugs are not really bugs. They are two systems that both believe they own the same piece of data, each correctly doing its job, and each quietly overwriting the other. The price someone changed in Shopify reverts overnight. Stock looks right in the ERP and wrong on the site. A customer's address depends on which screen you look at.
The fix is a decision, not code: for every field, exactly one system is in charge. This guide gives you a starting map for Shopify, an ERP, a PIM and an order or warehouse system, and the rules for the fields that cause arguments.
The Four Systems and What Each Is Good At
- ERP (NetSuite, Business Central, SAP, Acumatica and the like): the financial and operational record. SKUs, cost, price, stock, purchasing, invoicing, credit.
- PIM: product content. Descriptions, attributes, specifications, translations, channel versions.
- OMS or WMS (order management or warehouse system): what happens after the order. Routing, picking, shipping, tracking.
- Shopify: the storefront and checkout. What shoppers see, how products are merchandised, and the order exactly as the customer placed it.
Not every business has all four. Without a PIM, product content usually lives in Shopify. Without a separate OMS, the ERP or Shopify handles fulfillment. The map below still applies: you just collapse two columns into one.
A Starting Ownership Map
| Data | Usual owner | Flows to |
|---|---|---|
| SKU and item record | ERP | PIM, Shopify |
| Title, description, specifications | PIM (or Shopify if no PIM) | Shopify, marketplaces |
| Images and video | PIM or DAM | Shopify |
| Cost | ERP | Nowhere customer-facing |
| List price | ERP | Shopify |
| B2B customer pricing | ERP | Shopify catalogs |
| Promotions and discount codes | Shopify | ERP (on the order) |
| Stock on hand | ERP or WMS | Shopify |
| SEO titles, collections, sort order | Shopify | Nowhere |
| Order as placed | Shopify | ERP, OMS |
| Fulfillment and tracking | OMS, WMS or ERP | Shopify |
| Payment terms and credit limits | ERP | Shopify B2B |
| Invoices and balances | ERP | Customer account, if shown |
Treat this as a first draft. The value is in arguing about the rows that do not fit your business, not in copying it.
The Fields That Cause Arguments
Price
Price belongs in the ERP in almost every B2B business, because that is where finance manages it and where invoices come from. The trap is letting someone "just fix" a price in Shopify. The next sync overwrites it, or worse, it does not, and Shopify and the invoice now disagree. If merchandisers need to run promotions, give them Shopify discounts, which sit on top of the ERP price rather than replacing it. For wholesale, customer-specific prices flow from the ERP into Shopify catalogs, so the price a buyer sees when they log in is the one they will be invoiced.
Inventory
Stock has an owner, the ERP or the warehouse system, but Shopify also changes stock every time it takes an order. The clean arrangement is that the owner sends the quantity physically on hand, and Shopify works out what is available by subtracting what is already committed to open orders. Shopify tracks these as separate inventory states, including on hand, available, committed and reserved. Most overselling problems come from syncing the wrong one, which our guide to preventing inventory sync errors covers in detail.
Customers and B2B companies
This is the field where "one owner" needs the most thought, because records are created in two places. Retail customers sign up on the website, so Shopify creates them. Wholesale accounts with credit and terms are usually approved by finance, so the ERP creates them. A workable rule:
- Shopify owns retail customers and their profile details.
- The ERP owns B2B companies, their terms, credit limits and billing details, and creates the matching company and locations in Shopify.
- New wholesale applications can start in Shopify, but become real accounts only once the ERP approves them.
This is close to how QC Supply runs, with their ERP, Microsoft Dynamics NAV, connected to Shopify by a connector. At launch the order of operations followed the ownership: retail customers were migrated from Magento first, the connector then created the B2B companies from NAV, and only after that were the remaining wholesale users moved across and attached to their companies. One seam still needed a decision later. The connector creates an ERP customer for each new Shopify customer, so wholesale buyers added through our B2B portal, who already existed in NAV, needed a marker telling it to skip them.
Whichever way you split it, decide who owns the ship-to addresses. In Shopify B2B they belong to company locations, and contacts with Location admin permission can edit them. If the ERP also owns them, one side's edits will be lost. Our article on keeping your customer portal when you move to Shopify covers what B2B buyers can change themselves.
Product content with no PIM
Without a PIM, teams often edit descriptions in Shopify and then find the ERP sync overwriting them with the ERP's short item description. Decide that Shopify owns content and the ERP owns only the operational fields, then configure the integration to stop sending the ones it no longer owns. Our guide to whether you need a PIM covers when to move content out of Shopify.
Conversions need an owner too. Richloom wanted fabric measurements shown in metric as well as imperial. The conversion happens in our middleware as the data is loaded, not in the storefront template, because it is business logic rather than display logic: there is one place to change it, and every channel shows the same number.
Order changes after checkout
The order as placed belongs to Shopify. But orders change: an address correction, an item substituted, a line cancelled. Decide where edits are made, usually in the ERP or OMS once an order has been sent there, and make sure the change flows back so customer service and the customer's account show the same thing.
Keep Both IDs
Every record that exists in two systems needs to carry the other system's identifier. Store the ERP's item number and customer number in Shopify, typically in metafields, and store Shopify's IDs in the ERP. Matching records by name or email breaks the first time something is renamed or two customers share a purchasing inbox. When we moved QC Supply's 50,000+ SKU store off Magento, every customer's NAV customer number was carried into a Shopify customer metafield as part of the migration, so the link to the ERP record survived the move.
How to Write Your Own Map
- List every field that exists in more than one system.
- For each, name one owner. If two teams both claim it, that is a business decision to make now, not an integration setting.
- Mark the direction: from the owner to everyone else, never back.
- Note how fast it needs to move, based on what goes wrong if it is late.
- Lock the field in the systems that do not own it, where the software allows, so nobody edits it in the wrong place.
- Review the map whenever you add a system, a sales channel or a new team.
This map is the core of the integration contract described in our Shopify ERP integration guide.
Want Your Data Ownership Mapped?
Send us your systems list and the fields that cause arguments today. We will draft the ownership map with you before anyone configures a connector. Talk to us directly.
Frequently Asked Questions
Should Shopify or the ERP be the source of truth?
Neither as a whole. Each field should have exactly one owner. Typically the ERP owns SKUs, cost, price, stock, payment terms and invoices; Shopify owns merchandising, promotions and the order as placed; a PIM, if you have one, owns product content; and an OMS or warehouse system owns fulfillment and tracking.
Who should own prices when Shopify is connected to an ERP?
In most B2B businesses the ERP owns prices, including customer-specific prices, which flow into Shopify catalogs. Promotions should be run as Shopify discounts on top of the ERP price rather than by editing the price in Shopify, which the next sync would overwrite or contradict.
Which system should own inventory?
The ERP or warehouse system should own the quantity physically on hand and send it to Shopify. Shopify then tracks what is committed to open orders and what is available to sell. Syncing the wrong inventory state is the most common cause of overselling.
Where should B2B customer accounts be created?
A workable split is that Shopify owns retail customers, while the ERP owns B2B companies, their terms, credit limits and billing details, and creates the matching company and locations in Shopify. Wholesale applications can start in Shopify but become accounts only once the ERP approves them.
How do you stop two systems overwriting each other?
Give every field one owner, sync only from the owner outwards, stop sending fields a system no longer owns, lock fields in non-owning systems where possible, and store each system's ID in the other so records are matched by ID rather than by name or email.