The situation
Shopify on the front. NetSuite on the back. Between them, a daily manual re-keying exercise: orders downloaded as CSV, imported into NetSuite, inventory reconciled by hand, customer records duplicated across both systems. The consequences were predictable — stock-outs they didn’t see coming, oversells they had to apologize for, and a finance team that had stopped trusting the inventory report.
The mandate
Make Shopify and NetSuite operate as one system. Orders, customers, inventory, fulfillment status, refunds — all flowing in real time, with one side as the source of truth for each data type.
What we did
- Data architecture. Decided what’s truth where. NetSuite owns items, inventory, customers post-creation, invoices, and credit memos. Shopify owns the storefront, the cart, and the initial customer record. We wrote the rules for who wins on conflict.
- Connector setup. Configured the integration layer for bi-directional sync. Items flow NetSuite → Shopify on save. Orders flow Shopify → NetSuite in near real time. Inventory updates flow both ways with proper conflict resolution.
- Order-to-cash. Customer places order on Shopify → flows to NetSuite as a sales order → triggers fulfillment in the warehouse → ships → tracking flows back to Shopify and emails the customer. Refunds and exchanges follow the same path in reverse.
- Edge cases. Handled the gnarly stuff — discount codes mapping to NetSuite promotions, gift cards as deferred revenue, partial fulfillments, bundles, taxable / non-taxable splits, multi-currency.
- Monitoring. Built a small dashboard that flags any sync failure within minutes so the team catches issues before they compound.
The outcome
Manual order entry stopped. Inventory drift went away. The finance team got their close time on commerce revenue down from days to hours. Customer-service tickets about “the website said it was in stock” disappeared.
Why it worked
Integration projects fail when teams chase 100% feature parity and end up with a fragile system. We focused on the flows that drive the bulk of the volume, then handled exceptions deliberately — so the system is boring, reliable, and operates without anyone having to babysit it.
