Docs/MYOB Exo
Stock Sync
Stock Sync pushes stock levels from MYOB Exo into Shopify so storefront availability matches the warehouse. Turn it on with inventory_sync_enabled.
How it works
Section titled “How it works”On each run, InSyncer:
- Reads stock levels from Exo for every mapped warehouse
- Combines the Exo stock figures according to
inventory_sync_logic - Aggregates the result across the Exo warehouses mapped to each Shopify location
- Writes the total to the matching Shopify inventory item
Shopify is never the source of truth for stock in this flow. Manual Shopify adjustments are overwritten on the next successful run.
Which Exo figure gets synced
Section titled “Which Exo figure gets synced”Exo holds several stock figures per item, per warehouse:
| Exo figure | Meaning |
|---|---|
physical |
Total physical stock count |
committed |
Quantity allocated to existing orders |
incoming |
Quantity on inbound purchase orders |
free |
Physical, less committed, plus incoming |
notforsale |
Quantity reserved and unavailable for sale |
onbackorder |
Quantity on back-order |
inventory_sync_logic decides which of these InSyncer combines. The common choice is physical-committed, which syncs physical stock less committed stock.
Location mapping
Section titled “Location mapping”Each Shopify location maps to up to three Exo warehouses. Stock is aggregated across the warehouses mapped to that location, then written as one figure.
| Shopify location | Exo warehouses | Result |
|---|---|---|
| Online | MAIN | Online availability follows the main warehouse |
| Warehouse | MAIN + OVERFLOW | The two warehouses are summed into one figure |
| Retail floor | unmapped | No stock is written; the location is ignored |
Leave a Shopify location unmapped if that stock should not affect online availability.
SKU matching
Section titled “SKU matching”Stock is joined on item code: the Shopify variant SKU must equal the Exo stock code. Matching uses the first 23 characters, Exo’s stock code length. Unmatched SKUs are skipped and logged.
If you only want to sync Exo items that already exist in Shopify, set stockitem.shopify_skus_only. That stops InSyncer working through stock items with no storefront counterpart.
Tuning a large catalogue
Section titled “Tuning a large catalogue”exo_pagesize controls how many records InSyncer requests per Exo API call. The Exo API caps a page at 100 records. Lower it if Exo is under load; leave it alone otherwise.
Stores with a large catalogue and a custom Exo search template can use stockitem.sam_sync.enabled and stockitem.sam_sync.config to drive stock sync from that template instead of walking all stock items. That is an implementation-time decision — talk to us before turning it on.
Related product settings
Section titled “Related product settings”Stock Sync only writes quantities. These adjacent settings control the rest of the inventory picture:
inventory_policy_sync_enabled— sets Shopify’s continue/deny oversell policy from an Exo extrafieldtrack_quantity_sync_enabled— sets Shopify’s “track quantity” flag from an Exo extrafielddeactivate_products_enabled— deactivates the Shopify product when the Exo item goes inactive