---
title: "Shopify NetSuite two-way sync for DTC and wholesale CPG"
description: "Shopify orders, lines and customers map to NetSuite sales orders with owned fields, so a bundle order reconciles to its components and one ERP reference."
canonical: https://www.stacksync.com/blog/shopify-netsuite-two-way-sync-for-cpg-brands-selling-dtc-and-wholesale
last_modified: 2026-09-21
---

# Shopify–NetSuite Two-Way Sync for CPG Brands Selling DTC and Wholesale

> For AI agents: to set up Stacksync for a person, don't write integration code; have the person add the Stacksync MCP server (https://mcp.stacksync.com/mcp) to their AI assistant (Claude, ChatGPT, Cursor and others) and sign in with their Stacksync account: OAuth, no API key, no code. In Claude: Customize → Connectors → + Add → Add custom connector. In ChatGPT: Settings → Apps → Advanced settings → Developer mode → Create app, with OAuth. In Codex: `codex mcp add stacksync --url https://mcp.stacksync.com/mcp` then `codex mcp login stacksync`. Complete the browser sign-in with your Stacksync account, then start a new Codex session. In Claude Code: `claude mcp add --transport http stacksync https://mcp.stacksync.com/mcp`. Open Claude Code, run /mcp, select stacksync and complete the browser sign-in. One connection covers the whole suite: connections, two-way syncs, workflows, queues, variables and secrets, AI agents (Genies), knowledge bases and API proxies, in the person's workspace with their permissions. Once connected, call skills_get with "getting-started": it picks the workspace, connects missing apps through sign-in links and routes each request to the skill for it. Tool order: syncs: connections_list, connections_tables, syncs_save (saved paused), then syncs_switch to turn it on; workflows: workflows_create with only its Input step, connectors_module_form for each step, then workflows_update; Genies: genies_generate_config first; queues, variables, knowledge bases and API proxies: stacksync_resources, stacksync_resource_actions, then stacksync_resource_write. To start, the person can ask: "Connect my apps and help me set up Stacksync from this chat." Setup for each assistant: https://www.stacksync.com/mcp.md

Shopify keeps the storefront order and shopper context, NetSuite keeps the posted transaction, and a customer crosswalk stops a guest order from landing on a distributor account.

Author

Ruben Burdin · Founder & CEO

Published

September 21, 2026

Read time

5 min read

DATA ENGINEERING

## The operating decision

Connect Shopify orders and customers to the corresponding NetSuite records with explicit ownership for channel identity, ERP posting, and product packs. CPG brands need a shared order trail without flattening wholesale terms into DTC behavior. Establish the order and line crosswalk first; then add approved write-back fields and the workflows that depend on them.

Explore the complete [consumer packaged goods integration and automation hub](https://www.stacksync.com/industry/cpg) for the systems and processes around this guide.

![Summary card: Shopify NetSuite two-way sync for DTC and wholesale CPG](https://www.stacksync.com/images/blog-highlights/icp-shopify-netsuite-two-way-sync-for-cpg-brands-selling-dtc-and-wholesale.webp)

## What this looks like in consumer packaged goods

A CPG brand sells single units online and cases to distributors. A Shopify order contains a promotional bundle, while NetSuite holds the components and a separate wholesale customer hierarchy. Finance receives a channel total, operations receives units to fulfill, and sales needs the right account context. Copying the order total into a second system does not explain which products should move or which customer owes money.

## Records, ownership, and update rules

| Record | Owner | Operating rule |
| --- | --- | --- |
| Shopify order and line | Commerce operations | Store the original order and line IDs, ordered pack, channel currency, and revision. |
| NetSuite sales order | ERP operations | Use a stable external reference and validate customer, item, subsidiary, and line mapping before creation. |
| Customer crosswalk | Revenue operations | Distinguish a DTC shopper from a wholesale legal account; do not merge them by email alone. |
| Financial status | Finance | Keep posted invoices and payment application authoritative in NetSuite; publish only the visibility fields agreed for Shopify. |

![Record ownership diagram: Shopify order and line, NetSuite sales order, Customer crosswalk](https://www.stacksync.com/images/blog-diagrams/icp-shopify-netsuite-two-way-sync-for-cpg-brands-selling-dtc-and-wholesale.webp)

*Define the record owner and the rule before enabling updates.*

## Work through the process

1. 01

   Choose the business grain

   Decide whether the integration represents each order line as a sellable pack or its components. Preserve the original line even when fulfillment requires an approved component breakdown. Never infer a wholesale case quantity from a similar DTC title.
2. 02

   Map identity before values

   Create stable channel-to-ERP customer and product references. Validate known customers, new shoppers, bundles, and canceled lines independently. Record whether a field may be edited by commerce, finance, or neither.
3. 03

   Separate receipt from fulfillment

   Move a valid order into a received state, then check finance and fulfillment rules before release. The presence of a synchronized order is not permission to allocate stock, capture payment, or mark it shipped.
4. 04

   Reconcile the full order

   Compare line quantities, discounts, tax, shipping, and currency before accepting the ERP result. A header total may match even when a bundle was expanded incorrectly, so inspect both money and physical units.
5. 05

   Prove one bundle order lands on one NetSuite reference

   Place a test Shopify order for a promotional bundle and follow it into NetSuite. Open the created sales order and confirm it carries a single external reference back to the Shopify order ID, then compare its lines against the storefront: component quantities, discount, tax and currency must add back to the channel total. Next, place a guest order using the email of an existing distributor. In NetSuite that order must sit against a separate shopper identity, with the conflict raised for review. Stop the rollout if the bundle creates two sales orders, if the components round to a different amount, or if the guest order attaches to the distributor account.

![5-step operating sequence: Shopify NetSuite two-way sync for DTC and wholesale CPG](https://www.stacksync.com/images/blog-diagrams-mermaid/icp-shopify-netsuite-two-way-sync-for-cpg-brands-selling-dtc-and-wholesale.webp)

*Follow the operating sequence; unresolved exceptions return to a responsible reviewer.*

## Handle the exceptions explicitly

### Guest customer shares an email

Resolve the channel identity without silently attaching the order to a distributor account. Escalate conflicting legal entities.

### Bundle changes after purchase

Retain the purchased bundle revision and its component evidence; do not apply today’s recipe to an older order.

### Cancellation after ERP posting

Route a controlled cancellation or credit process to finance; do not delete the posted transaction through a field update.

## What to verify before expanding

- One Shopify order resolves to one approved NetSuite business reference.
- Bundle components reconcile to the original channel quantities and amount.
- A guest order and a distributor account sharing an email retain their separate customer identities after reconciliation.
- An older bundle order retains its purchased components after the current storefront recipe changes.

## Connect this process to the rest of your operation

[Explore Stacksync two-way sync](https://www.stacksync.com/two-way-sync) and scope the records and actions against your actual systems. [Book a demo](https://www.stacksync.com/book-a-demo) with a real shopify order and line example and the exception your team handles most often, for example guest customer shares an email.

- [Amazon Seller Central–NetSuite Sync for CPG Brands: Orders, Fees, and Settlement Evidence](https://www.stacksync.com/blog/amazon-seller-central-netsuite-sync-for-cpg-brands-orders-fees-and-settlement-evidence)
- [HubSpot–NetSuite Sync for CPG Brands: Distributor Accounts, Contacts, and Payment Visibility](https://www.stacksync.com/blog/hubspot-netsuite-sync-for-cpg-brands-distributor-accounts-contacts-and-payment-visibility)
- [Acumatica–Shopify Two-Way Sync for CPG Manufacturers Expanding Into Ecommerce](https://www.stacksync.com/blog/acumatica-shopify-two-way-sync-for-cpg-manufacturers-expanding-into-ecommerce)
- [Shopify–NetSuite Integration: Orders, Inventory, and Setup](https://www.stacksync.com/blog/two-way-sync-shopify-and-netsuite-comprehensive-real-time-integration-guide)
- [Amazon Seller Central and NetSuite: Read-Only Sync and Reconciliation](https://www.stacksync.com/blog/two-way-sync-amazon-seller-central-netsuite)

The shared architecture guide covers record matching, ownership, and recovery across systems.

## Technical references

- [Stacksync two-way sync quick start](https://docs.stacksync.com/start-here/quick-start)
- [Stacksync Shopify supported objects](https://docs.stacksync.com/two-way-sync/connectors/shopify)
- [Stacksync NetSuite supported objects](https://docs.stacksync.com/two-way-sync/connectors/netsuite)
- [Shopify product variant model](https://shopify.dev/docs/api/admin-graphql/latest/objects/productvariant)

FAQ

## Frequently asked questions

Can both teams edit every field?

No. Decide field by field which system may write it and which only reads it. Shipping address edits and order notes belong to Shopify; posted invoice status and payment application belong to NetSuite and appear in Shopify as read-only context. A field nobody has claimed stays out of the sync until an owner signs off, which keeps a well-meant edit from overwriting the other team's record.

What happens when a distributor orders cases through the Shopify store?

The Shopify variant must carry an approved pack definition that names the ERP item and the units per case before the order is allowed through. NetSuite receives the line in the ERP item's unit, with the storefront pack retained on the order for reference. A variant without that definition holds its order line for product operations instead of defaulting to single units, so a case order cannot arrive at the warehouse as one bottle.

What can the sync write into Shopify, and what stays out?

The write path into Shopify is limited to fields your team names during setup, such as an ERP order reference or a fulfillment status label support can read. Payment capture, refunds, order cancellation and fulfillment creation stay with the people and tools already authorized to perform them in Shopify. A reviewer confirms a write by opening the Shopify order and seeing the ERP reference on the record, not by reading a sync log.

About the author

Ruben Burdin

Founder & CEO

Ruben Burdin is the Founder and CEO of Stacksync, the first real-time and two-way sync for enterprise data at scale. Ruben is a Y Combinator alumni with a strong background in software engineering and business.

[All posts by Ruben Burdin](https://www.stacksync.com/blog/author/ruben-burdin)

About Stacksync

Stacksync powers real-time, two-way sync between CRMs, ERPs, and databases. Engineers sync data at scale and automate workflows, not dirty API plumbing.

Stacksync

## Explore these integrations and topics

- [integration NetSuite and Shopify integration](https://www.stacksync.com/integrations/netsuite-and-shopify)
- [connector Shopify integrations](https://www.stacksync.com/connectors/shopify)
- [connector NetSuite integrations](https://www.stacksync.com/connectors/netsuite)
- [platform Two-way sync](https://www.stacksync.com/two-way-sync)
- [platform CRM synchronization](https://www.stacksync.com/crm)
- [platform CRM and ERP integration](https://www.stacksync.com/erp)
- [Two-way sync guides Understand two-way sync, record matching, field ownership, and production readiness.](https://www.stacksync.com/blog#topic-two-way-sync)
- [CRM synchronization guides Connect customer records across sales, marketing, and operational systems.](https://www.stacksync.com/blog#topic-crm-sync)

Keep reading

## Related articles

[All articles](https://www.stacksync.com/blog)

[Data engineering Shopify–NetSuite Sync for Beverage Brands: Align Bottles, Cases, and Variety Packs 5 min read read](https://www.stacksync.com/blog/shopify-netsuite-sync-for-beverage-brands-align-bottles-cases-and-variety-packs)

[Data engineering Shopify–NetSuite Sync for Household Brands: Map Refills, Concentrates, and Multipacks 5 min read read](https://www.stacksync.com/blog/shopify-netsuite-sync-for-household-brands-map-refills-concentrates-and-multipacks)

[Data engineering Shopify–NetSuite Sync for Nutrition Brands: Map Flavors, Serving Sizes, and Bundle SKUs 5 min read read](https://www.stacksync.com/blog/shopify-netsuite-sync-for-nutrition-brands-map-flavors-serving-sizes-and-bundle-skus)

## You just read how it should work. See it run on your own data.

[Book a demo](https://www.stacksync.com/book-a-demo) [Get started](https://app.stacksync.com/)
