We connect Shopify to your ERP, warehouse and shipping systems, so stock, orders, prices and customers stay correct without anyone copying them by hand. Moving the data is the easy part: the work is deciding what happens when the systems disagree, and building for the day one of them is down.
“Skai Digital has been extremely skilled, service-oriented, and professionally competent in their process with us... I am extremely satisfied with the collaboration and would recommend anyone who needs similar services to speak with Skai before ordering services elsewhere.”
Simon Alert KristensenHead of Marketing at Epivity
Where Shopify integrations go wrong
An integration is data moving between systems, and that part is rarely hard. The work is in what the systems disagree about, and what happens when one of them is slow, wrong or down.
Stock sync
Shopify, the ERP and the warehouse can each show a different number for the same SKU. We give stock one owner at each Shopify location, so a product update can’t overwrite newer quantities. An order placed a minute ago may not be in the ERP yet, so a stock update mustn’t put those sold units back on sale. Writes use Shopify’s compare and swap, which refuses a change if the quantity moved after we read it. Missing stock data is an error, never a zero.
Order status
Picked, invoiced, shipped and delivered are separate events, and each system names them differently. An invoice doesn’t prove a parcel left, so we map every status by hand and check it against real orders. A partly shipped order stays partly shipped until the last line has gone, a status never moves backwards, and a customer doesn’t get a second tracking email because a sync ran twice.
Retries and duplicates
A timeout doesn’t tell you whether the write happened. Shopify can also deliver the same webhook twice, and it doesn’t guarantee the order webhooks arrive in. So each change carries a key and a repeat has no effect: one Shopify order stays one order in the ERP. Temporary failures retry with growing delays. Bad data stops with a clear error, so one broken record can’t hold up the rest.
Reconciliation
Webhooks get missed, which is why Shopify’s docs tell developers to run reconciliation jobs. We run small, frequent syncs with a full comparison behind them and report anything that doesn’t match. A sync only records its progress after every write has succeeded, so a failed run repeats the work instead of skipping it. We check the counts too: a short page from a source API doesn’t always mean the list has ended.
Prices and customers
A price that differs from the list could be an agreed price or a discount, and the amount alone can’t tell you which, so we carry the source of each price through to the order. Currency is requested explicitly on every read. Customers need the same care: a contact with a malformed email or no parent company gets reported for someone to fix, not guessed at.
Failures nobody sees
The worst failure is a silent one. A job that crashes halfway can look busy forever while every later run waits for it, and Shopify deletes a webhook subscription created through the Admin API after 8 consecutive failures. We log every run with its counts, expire abandoned jobs, catch up on missed schedules and alert when a queue backs up.
Which system owns what
Every integration starts with this table. Most of the arguments later come from a row nobody filled in.
Data
Usual direction, and what to decide
Products and SKUs
ERP or PIM to Shopify. Decide what happens when two active variants share a SKU. We stop and report it rather than pick one.
Stock
ERP or warehouse to Shopify. Decide how warehouses map to Shopify locations and which system owns each one.
Orders
Shopify to ERP. Decide how tax, rounding, discounts and shipping lines are booked, and what an edited order does.
Order status and tracking
ERP, warehouse or carrier to Shopify. Decide which event counts as shipped, and which system emails the customer.
Prices
ERP to Shopify. Decide how customer-specific prices, currencies and discounts are represented.
Customers and companies
Often both ways. Decide which system wins a conflict and how contacts map to companies.
Refunds and returns
Shopify or warehouse to ERP. A refund isn’t a return: money back doesn’t prove the item is back on the shelf.
Invoices and payments
ERP to wherever your team reads them. A zero balance doesn’t prove payment, because a credit note can clear it too.
NetSuite Shopify integration
Running NetSuite? A NetSuite Shopify integration moves the same data over NetSuite’s SuiteTalk REST web services: Shopify orders become sales orders, item fulfillments and tracking come back, and inventory follows the location rules you set. The hard parts are the ones above. One example: a sales order becomes an item fulfillment at a named inventory location, so your NetSuite locations have to line up with Shopify’s before stock and shipments can.
On Microsoft Dynamics 365 Business Central? We start the same way, with the map of what moves and who owns it, then read real data from its API before anything is written.
How an integration runs
Nothing writes to a live system until we’ve seen what it would do.
Map the flows
We list what moves, which system owns it, how often it runs and what should happen when it fails. The scope and price come from this map.
Read before writing
We read real data from both systems to find what the documentation leaves out: SKUs that don’t match, status values nobody listed, missing fields and rate limits.
Build for failure
Each flow gets a queue, retries, duplicate protection and logs, and the rules from the map go into tests.
Dry run
The integration runs without writing and logs every change it would make. We compare that with what your team expects, and check how many SKUs match.
Controlled go-live
We start small, read back what was written and widen the scope only when it’s correct. Then we compare the frequent syncs with full reads of the same data.
Run and watch
We monitor the runs and the queues after go-live. We stay on if you want us to, and you own the code either way.
Integrations from $10,000
What an integration costs
We map the flows with you on a discovery call, then agree the scope and price before any work starts.
One system connected to Shopify, with the flows agreed up front
A written map of what moves, in which direction and who owns it
Retries, duplicate protection and logging on every flow
A reconciliation job that compares the systems and reports differences
A dry run against real data before anything is written
Close monitoring after go-live
What pushes it up
Each further ERP, warehouse or shipping system
Two-way flows rather than one-way
Customer-specific prices and B2B rules
Several warehouses, Shopify locations or stores
A source system with a limited or poorly documented API
Source data that needs cleaning first
Prices are in US dollars. Your ERP licence, Shopify subscription and hosting are separate. Changing platform as well? Integrations are rebuilt as part of a Shopify migration. Need screens for your staff too? See Shopify app development. For everything else we build, see Shopify development services.
Frequently asked questions
How much does a Shopify ERP integration cost?
Integrations start from $10,000 for one system connected to Shopify. Further systems, two-way flows, customer-specific prices and several warehouses or stores push it up. We map the flows with you and agree the scope and price before work starts.
Which systems do you integrate with Shopify?
We’ve built integrations with Visma (ERP), Ongoing, ColliCare, ShipHero and Cin7, and we’re a Visma partner. Running Business Central or another ERP? We read its API and documentation during discovery and tell you what’s possible.
Can you build a NetSuite Shopify integration?
Yes. Shopify orders become NetSuite sales orders, item fulfillments and tracking come back to Shopify, and inventory follows the location rules we agree with you. NetSuite’s REST web services need the SuiteTax feature for tax, so your tax setup is one of the first things we check.
Should we use a connector or a custom integration?
Start with a connector if your flows are standard and it handles your awkward cases. Custom integration services make sense when your data needs rules a connector can’t express, such as customer-specific prices or several warehouses with different owners. If a connector is enough, we’ll tell you on the call.
How often should stock sync?
It depends on what the ERP can do. Some don’t push changes, so they have to be polled, and every read uses up API limits on both sides. We set the interval from measured run times and keep a full comparison running behind it to catch anything the frequent syncs miss.
Do we need Shopify Plus for an ERP integration?
No. An integration uses the Admin API and webhooks, which aren’t limited to Plus. Plus does give you a higher API limit: 1,000 cost points per second, against 100 on standard plans and 200 on Advanced. That matters with large catalogs and frequent syncs.
What happens when the ERP is down?
Your store keeps selling. Orders wait in a queue and go through when the ERP is back, without creating duplicates. Stock in Shopify goes stale during the outage, so we agree beforehand how long that’s acceptable and who gets alerted.
Can you do this as part of a migration?
Yes. Integrations don’t carry over when you change platform, so we rebuild them against Shopify’s APIs and webhooks as part of a Shopify migration, not after launch.
Who owns the integration?
You own the code we build for you. You can keep working with us, hire your own developers or choose another partner. Your ERP and other systems have their own terms.
“You will never work with anyone that is as painless, as good, as creative and as knowledgeable as you guys … I have only praise to say”
Luisa ArangoHead of Marketing & Ecommerce at Kastel Shoes
What would you like to improve?
Tell us what’s getting in the way or what you’d like to build. We’ll talk through the options and whether we’re the right team to help.