Understanding NetSuite Integration Complexity
NetSuite is one of the most flexible ERP systems available. That flexibility means there are many ways to configure the same functionality. Your specific NetSuite setup determines how Shopify data should map.
This guide covers common mapping patterns, but your implementation will require analysis of your actual NetSuite configuration.
Product Data Mapping
Products are foundational. Get this wrong and everything else breaks.
NetSuite item types
NetSuite has multiple item types relevant to ecommerce:
- Inventory items: physical products you stock
- Non-inventory items: products you sell but do not track inventory
- Kit items: bundles of other items
- Matrix items: parent items with child variants
- Assembly items: manufactured products
Shopify products and variants need to map to the appropriate NetSuite item type.
Variant handling
Shopify variants can map to NetSuite in several ways:
Matrix items: Parent item in NetSuite with child items for each variant. Matches Shopify's model conceptually.
Individual items: Each variant is a standalone NetSuite item. Simpler but loses the parent-child relationship.
Item options: Single item with options that create variants. Works for some scenarios but can complicate inventory tracking.
The right approach depends on how you manage inventory and purchasing in NetSuite.
Key field mappings
| Shopify Field | NetSuite Field (typical) |
| Product title | Item name/number or Sales Description |
| SKU | Item ID or UPC/EAN |
| Price | Base Price or Price Level |
| Description | Sales Description or Web Description |
| Variant options | Matrix options or custom fields |
Inventory Sync
Inventory accuracy directly impacts customer experience and operations.
Inventory source in NetSuite
NetSuite tracks inventory by location. You may have:
- Single warehouse location
- Multiple warehouse locations
- Store locations
- Third-party logistics locations
Decide which locations' inventory should be available on Shopify. Sum them, use specific locations, or apply rules.
Available vs committed
NetSuite distinguishes:
- On Hand: physical quantity in stock
- Available: on hand minus committed to other orders
- On Order: expected from purchase orders
Usually sync Available quantity to Shopify. Syncing On Hand leads to overselling when orders are processing.
Sync timing
Options:
- Real-time: NetSuite triggers update to Shopify on every inventory change. Most accurate but highest load.
- Scheduled: Sync runs periodically (every 5 minutes, hourly). Slight lag but more manageable.
- Event-driven: Sync after specific events like order fulfillment or receipt.
For high-velocity items, real-time or frequent scheduled sync prevents overselling.
Order Sync
Orders flowing from Shopify to NetSuite enable fulfillment and financial tracking.
Order vs sales order
Shopify orders become NetSuite sales orders. Configuration options:
- Create immediately on order placement
- Create on payment capture
- Create after fraud review passes
Order field mapping
| Shopify Field | NetSuite Field |
| Order number | PO Number or External ID |
| Line items | Sales Order Lines |
| Customer email | Customer lookup/create |
| Shipping address | Ship To address |
| Billing address | Bill To address |
| Discounts | Discount items or price adjustments |
| Shipping | Shipping item line |
| Tax | Tax code or calculated tax |
Discount handling
Shopify discounts may need translation:
- Percentage discounts as discount lines
- Fixed discounts as negative amount items
- Automatic discounts embedded in line prices
Choose an approach and apply consistently.
Payment handling
Shopify captures payment. NetSuite needs to know:
- Payment method used
- Payment status (captured, pending)
- Amount collected
Some integrations create customer deposits in NetSuite representing the Shopify payment.
Customer Sync
Customer data connects orders to customer records in NetSuite.
Customer matching
When an order arrives, match the customer:
- Search by email address
- If found, associate order with existing customer
- If not found, create new customer record
Handle edge cases:
- Guest checkout without customer creation
- Duplicate email addresses
- Customer data updates (address changes)
Customer to customer or lead
NetSuite has Customers, Leads, and Prospects. Decide where Shopify customers go. Most commonly they become Customers since they have already purchased.
Fulfillment Sync
When orders ship from NetSuite, update Shopify.
Item fulfillment to Shopify
When NetSuite creates an Item Fulfillment:
- Identify corresponding Shopify order
- Create fulfillment in Shopify
- Include tracking number from NetSuite
Shopify then notifies the customer and updates order status.
Partial fulfillment
If orders ship in multiple packages:
- Each NetSuite fulfillment creates a Shopify fulfillment
- Track which lines are fulfilled
- Handle line quantities that split across fulfillments
Implementation Considerations
Sandbox testing
Use NetSuite sandbox and Shopify development stores for testing. Production testing with real orders is risky and messy to clean up.
Error handling
Plan for failures:
- API timeouts
- Validation errors (missing required fields)
- Data mismatches (product not found)
Log errors with context. Alert on critical failures. Provide manual retry mechanisms.
Historical data
Decide whether to migrate historical Shopify orders to NetSuite. This creates accounting entries in NetSuite, which may or may not be desired.
For integration guidance, see Shopify integrations.
Working with LiftKit Digital
LiftKit Digital has deep experience with Shopify and NetSuite integrations. We analyze your specific NetSuite configuration and build mappings that work for your business.
To discuss your NetSuite integration, get in touch.