How to set up stock synchronisation between Shopify and Exact Online
Stock discrepancies are among the costliest errors in e-commerce. Here is how to build a sync architecture that makes Exact the single source of truth.
A customer orders from your store, the payment clears, and the next morning the warehouse calls: the item isn't there. That scenario isn't just a cancellation — it's a refund process, a dent in customer trust, and hours of your operations team's time. The root cause is usually one technical gap: the stock figure in Shopify doesn't match the real stock in the ERP.
Decide on a single source of truth
The first decision in any sync design is the most important one: who owns the stock figure? For a business running Exact Online, the answer is almost always Exact. Goods receipts, stock counts, production, transfers and returns are all processed there. Shopify is only a reflection of that data.
Once that decision is made, the architecture becomes clear: stock flows in one direction, from Exact to Shopify. Shopify's own stock deduction on order placement then needs careful handling, or you will end up double-counting.
Event-driven triggers, not scheduled jobs
Many integrations are built as a batch job that scans every product every 15 minutes. This burns through API limits for no good reason and, in the worst case, leaves a 15-minute window of incorrect stock.
The right approach is event-driven: a stock movement in Exact is captured via webhook, and only the affected SKU is updated in Shopify. This brings latency down to seconds and dramatically reduces the number of API calls.
Solve SKU mapping first
Most integration projects run late for data-quality reasons, not technical ones. If the item code in Exact doesn't map cleanly to the SKU in Shopify, no amount of sync logic will save you.
- Verify that SKUs are unique in both systems
- Normalise whitespace, casing and special characters
- Keep an exception report for records that fail to match
- Every variant of a product needs its own SKU
The mapping document is the contract for the project. It should be signed off before a line of code is written.
The multi-warehouse scenario
If Exact holds several warehouses, you need to decide which of them is reflected in Shopify. Three models are common: dedicating a single e-commerce warehouse, publishing the sum of all warehouses, or mapping Shopify locations one-to-one onto Exact warehouses. The third is the most flexible but requires location-based inventory to be configured correctly on the Shopify side.
Never let failures pass silently
An API can time out, a rate limit can be hit, a SKU can have been deleted. In each case the operation should be queued and retried with increasing intervals. Permanent failures must raise an alert — a stock update that disappears quietly is more dangerous than no integration at all, because it creates false confidence.
