Articles in this section

Sync NetSuite item groups

An item group is an item type in NetSuite that is a single unit made up of several individual items (components). You can create an item group with various other item types, such as inventory, matrix, and kit/package items. The item group price is always dependent on its member components. The integration flows can support item groups of basic and most common configurations, such as:

  • An item group with inventory, non-inventory, and matrix child items as member components

  • A single item in NetSuite can belong to multiple item groups.

  • An item group that has different or equal quantities of member components contributing to the item group.

Item_Group_Example.jpg

Important

You can sync item group data only on the premium edition of the integration app.

The integration app supports to sync item type: item group only using the following flows:

  • “Shopify Order to NetSuite Order Add” and “Shopify Order to NetSuite Order/CashSale Add”

  • NetSuite Fulfillment to Shopify Fulfillment Add

  • NetSuite Kit and Item Group Inventory to Shopify Inventory Add/Update

    Note

    Using this flow you can sync item group data only if you have a premium subscription to the integration app.

You can manage the behavior of item groups using the Manage NetSuite item groups using setting (in the integration app > Settings > General ):

  • If you select the Member component , the price, quantity, and tax are equally considered on all the available components in the item group.

  • If you select the Master component , the price, quantity, and tax are considered only on the selected master component. When you select the master component, the price, taxes, and quantity is not considered on the remaining components in the group.

Important

Prerequisites :

  • The product SKU must match between Shopify and NetSuite.

  • The item ID maps should be created on the NetSuite item group.

  • The item IDs should have matching Inventory Item ID and Variant ID.

Sync item group orders

Important

When adding an item group in Shopify, ensure that you run the NetSuite item to Shopify product (add or update) flow instead of the Matrix item flow. Item groups in NetSuite are treated as single or regular items, not as matrix or virtual variation items. Running the Matrix flow may result in incorrect product creation or sync errors.

A product has a single SKU in Shopify and it does not have a concept like NetSuite item groups. After you run the “Shopify Order to NetSuite Order Add” flow (real-time and scheduled), if the product is an item group in NetSuite, it is expanded and lists the individual member components. The price from Shopify is proportionally applied to the item group components as per the NetSuite native pricing or applied completely on the master component based on the option selected in the Manage NetSuite item groups using setting. An “eTail order line ID” is generated for each component of the item group.

Important

The integration flow syncs cash sales only if the item group does not have any inventory detail (Lot Numbered and Serialized items).

The below table outlines the behavior of each Order element wrt to the Manage NetSuite item groups using setting.

Shopify Order to NetSuite Order Add (real-time and scheduled) 

Order Element 

Member component set up 

Master component set up 

Price

  1. For all the member components, the Shopify price is calculated as per weighted averages. For more information, see the Price calculation for member components .

  2. Assign the calculated price to each member component.

The entire Shopify SKU price is synced to only the master component.

Note

In this scenario, the price on all the remaining member components is 0.

Taxes

The same tax rate is applicable for all the member components

The tax rate is applicable only to the master component. In this scenario, the remaining member components are not considered/ignored.

Line-level discounts

In the integration app > Settings > Order section > Discount tab, in the Bring Shopify line-level discounts into NetSuite as setting, if you select:

  • Adjustments to item list price : Based on the weighted average price, the discount is adjusted to the member components

  • Newline below the original line (recommended) : A new line is added on the sales order with the discount amount, after the item group component lines.

In the integration app > Settings > Order section > Discount tab, in the Bring Shopify line-level discounts into NetSuite as setting, if you select:

  • Adjustments to item list price : The discount is adjusted to the master component price.

  • Newline below the original line (recommended) : A new line is added on the sales order with the discount amount, after the item group component lines.

Cart-level discounts

The cart-level discount is applied to the item group.

The cart-level discount is applied to the item group.

Price calculation logic for a member component

The weight is calculated per member component. If an item group “Lunch box” has three member components such as Box, Spoon, and Bag. If the price of:

  • Box is 100

  • Bag is 50

  • Spoon is 20

The price of the item is

Weighted average = (100 (box) x 100) / (100 + 50 + 20)

Similarly when you calculate for all three member components, the

  • The weight of the item Box is 58.23

  • The weight of the item Bag is 28.23

  • The weight of item Spoon is 12.54

If Shopify's price is 120 then when it comes to NetSuite price is divided to the component according to the weight. The sale price for the item Box is calculated as

(120 * Weighted average/100)

Orders member components set up

The “Shopify Order to NetSuite Order Add” flow syncs item group data based on the option selected in the Manage NetSuite item groups using setting. If you select a member component, the price and taxes are equally considered by all the member components. An “eTail Line Order ID” is generated for each member component in the <Item group ID>_memberitem_<num> format. For more details, see the image below.

Shopify order

Shopify_order.jpg

NetSuite order with member component

IG_member_component.jpg

Order with a master component set up

The price and tax are considered from the master component and other member components are not considered and marked as 0 on the sales order. As per the below image, “CPU” is selected as the master component, and the price, quantity, and tax is calculated only for the master component. An “eTail Line Order ID” is generated for each member component in the <Item group ID>_memberitem_<num> format. Similarly, for the master component, it is generated in the <Item group ID>_masteritem_<num> format. For more details, see the image below.

NetSuite order with a master component

IG_Master_component.jpg

Sync item group order fulfillment

You can only fulfill the components and not the item group. The “NetSuite Fulfillment to Shopify Fulfillment Add” flow supports syncing full and partially fulfilled item group orders. The “NetSuite Fulfillment to Shopify Fulfillment Add” flow syncs the comma-separated tracking numbers only after the item group is completely fulfilled. It is recommended that you add the tracking numbers of the previous fulfillment to the final fulfillment.

Limitation : In case of partial fulfillment, the “NetSuite Fulfillment to Shopify Fulfillment Add” flow does not sync the tracking numbers of the previous fulfillment.

Limitation: Item groups with non-fulfillable components 

Item groups that include non-fulfillable components (such as Subtotal, Discount, or similar line types) are not fully supported by NetSuite-to-Shopify fulfillment flows.

When the integration is configured to process item group components, the flow expects all components of the item group to be fulfilled before syncing.

However, since non-fulfillable components cannot be fulfilled:

  • The item group is never considered fully fulfilled

  • The fulfillment flow does not pick up the Item Fulfillment record

This limitation applies to both:

  • NetSuite fulfillment to Shopify fulfillment (add) (Deprecated)

  • NetSuite fulfillment to Shopify fulfillment (add) (GraphQL)

As a result, fulfillment records for such item groups will not sync to Shopify.

Workaround 

  • Remove the eTail Order Line ID from non-fulfillable components in the Sales Order. This prevents the flow from expecting fulfillment for those components.

  • Custom approaches (such as using NetSuite scripts or integrator.io custom flows) can also be explored to handle such scenarios, based on your business requirements.

An item group “Lunch box” has four member components

  • Box with quantity 3

  • Bag with quantity 2

  • Spoon with quantity 1

  • Mini box with quantity 1

First fulfillment: Box (2), Bag (1), and Mini box(1).

Second fulfillment: Box (1), Bag (1), and Spoon (1).

The sum of two fulfillments is Box(3), Bag(2), Spoon(1), and Mini box(1).

  • In the Manage NetSuite item groups using setting, if you select Member component : After the first fulfillment, as the item group is not completely fulfilled, when you run the “NetSuite Fulfillment to Shopify Fulfillment Add” flow no information is synced to Shopify. Even if individually, the member component Mini box is fulfilled, no information is synced to Shopify. After the second fulfillment, as the entire item group with all components are fulfilled, the flow changes the Shopify order status as “Fulfilled.” As per the above example scenario, the flow syncs the comma-separated tracking numbers only in the second and final fulfillment. You can also include the previous fulfillment tracking numbers if required.

  • In the Manage NetSuite item groups using setting, if you select Master component , as Mini box in the eTailMaster component field, after the first fulfillment, the “NetSuite Fulfillment to Shopify Fulfillment Add” flow changes the Shopify order status as “Fulfilled.” In this scenario, the flow does not consider the other member component's fulfillment. The comma-separated tracking numbers are synced only for the master component (Minibox).

Note

In the Manage NetSuite item groups using setting, if you select Master component , and in the eTailMaster component field if you do not select any member component, the flow does not sync fulfillment information to Shopify.

Sync item group order inventory

The item group quantity and inventory is managed at the component level. The behavior of the item group inventory is similar to the kit inventory.

NetSuite Kit and Item Group Inventory to Shopify Inventory Add/Update 

Member 

Master item 

Quantity calculation

The minimum quantity of among all the member components is considered and synced to Shopify.

The selected master component quantity is considered and synced to Shopify.

Many to one

  • Box, Bag, and Spoon are member components

  • California, Texas, and Florida are different locations

In this scenario, the sum of the quantity of the item Box is calculated for all the three locations (California, Texas, and Florida). Similarly, the sum of items Bag and Spoon are also calculated. Whichever item’s sum is minimum, that is considered and synced to Shopify.

  • Box, Bag, and Spoon are member components

  • California, Texas, and Florida are different locations

  • Bag is master component

In this scenario, the sum of item Bag is calculated for all the three locations and synced to Shopify.

One to one - NetSuite location

  • Box, Bag, and Spoon are member components

  • California, Texas, and Florida are different locations

In this scenario, the minimum of the three items that is either Box, Bag, and Spoon are calculated for the California location and are synced to Shopify.

Similar calculation is performed for Texas and Florida locations.

  • Box, Bag, and Spoon are member components

  • California, Texas, and Florida are different locations

  • The bag is a master component

In this scenario, the item Bag quantity is synced to the locations California, Texas, and Florida.

Configure your NetSuite saved search

Prerequisite : Before you run the “NetSuite Kit and Item Group Inventory to Shopify Inventory Add/Update” flow, configure the NetSuite saved search.

  1. Login to your NetSuite account.

  2. In the global search bar, enter Celigo Shopify kit inventory and item group export .

  3. From the search results, select the appropriate saved search.

  4. On the “Celigo Shopify kit inventory and item group export [<account name>]” page, click Edit this Search .

  5. Go to Criteria > Standard

    1. Click on the Type row.

    2. Next to the Type drop-down list, click Expand .

    3. On the “Saved Item Search” window, select I tem Group and Kit/Package .

    4. Click Set.

      Filter 

      Description 

      Type

      Is any of Item Group, Kit/Package

  6. Go to Results > Columns .

  7. Add the following records:

    1. For “Member item : Internal ID”

      1. Click to add a new row.

      2. Enter Member Item Fields…

      3. On the “Saved Search Item” window, from the “Member Item Field” drop-down list, select Internal ID .

      4. In the Custom label column, enter member_item_id.

    2. For “eTail master component : Internal ID”

      1. Repeat steps i to v from the previous section.

        Field 

        Custom label 

        Member item : Internal ID

        member_item_id

        eTail master component : Internal ID

        Note

        In this field, select “eTail master component” only if you select Master component the Manage NetSuite item groups using integration app setting. If you select the Member component in the integration app setting, do not select any value in this NetSuite field.

        master_component_id

  8. Click Save .

Important

Limitations : The integration app doesn't support:

  • Lot-numbered or serialized items as member components in item groups.

  • Item groups with a combination of member and master component setup. In the Manage NetSuite item groups using setting, you cannot select the member component option while also selecting the master component in the eTailMaster component field in NetSuite.

  • Exact price sync on all items; a variance of 0.01 or 0.02 may appear on specific item prices due to internal calculations.

  • Exporting a virtual variation whose child items are item groups. Virtual variation export is only available when the children are individual inventory items, assembly items, or Kits.