Skip to main content

I would like to discuss the details of syncing template items’ options with Shopify in this post.

First, some background.

Shopify

In Shopify, we have products with variants. If a product has variants, it is done through options. For example, you can have Color as an option, and that option can have different values: Red, Blue, White. At the same time, a product can have another option - let’s say, Size, with values 2, 3, 4, 5, 6.

Acumatica

In Acumatica, we have Template Items with Matrix Inventory. Matrix Inventory (matrix items) are variants of the Template Item. The way they are connected is through Attributes. Attributes are first created on screen CS205000. The type of this attribute should be Combo. Then the attribute is added an Item Class with the type of Variant, and then we can generate matrix inventory on the Template Items screen or connect existing items to an existing template item, by filling out attribute values.

Challenge

For online stores, it is sometimes important to assign specific order for the options and option values. For example, some products might need Color first, and Size second, while other product might need Size first, and Color second. In addition, some need Red - Blue - White order, others White - Blue - Red, etc. I think you get the idea.

As far as we know, setting those orders right now is not possible in Acumatica. There are a few places where we can set the sort order though. So let’s test what those sort orders do.

Testing

First, we have a sort order on the Item Classes screen:

Here, we put size with sort order 1 and color with sort order 2 on purpose - to see if Shopify will honor that, and not use them in alphabetical order.

Second, even though our colors are sorted in alphabetical order, we set up sizes with a different ordering:

This means that sizes should go in reverse order.

Let’s create a template item with matrix inventory. We set up the configuration in the following way:

After creating all possible variants, we have 25 new products.

Let’s export them to Shopify and review the results. It’s actually showing correctly:

Notice that Size goes first, and size is sorted in the reverse order.

Let’s manipulate the order of sizes in Acumatica to be like this:

And then prepare and process this template item again. Interestingly, Prepare Data doesn’t expose this template item for the sync. But we can force-sync this item from the Sync History screen.

After the sync and refresh in Shopify, the order was changed accordingly:

Now let’s try to change the order of options (instead of Size - Color, let’s do Color - Size). For this, we will change the order in Item Class:

And then force-sync our product again. The order of options have changed:

All this works fine so far. Let’s add a third option to the mix and see if it all works correctly.

We will create Gender attribute:

Then create a new item class that has all three attributes in non-alphabetical order:

Now we will create a new template item and associated matrix items:

Upon the first export, the order of options and the order of values are correct:

Let’s shuffle them around, making Color second and Size third:

Now, we will force-sync this item to Shopify, and review the results:

Results

Apparently, it all worked out just fine.

If anyone has any questions or concerns, or have seen a different functionality, please let me know - and I will be happy to help.

The only challenge I see at this point is that sort order is set up either on the attribute level (for option variants) or on an item class (for options order), and not on the template item itself. Meaning that we cannot override the order for each item individually.

@Yuri Karpenko  Thanks for the nice article. We have users asking it to be sorted in the Template Item too. Meaning for one template Item they want the Color to be first and for another Size to be the first though they belong to the same item class. We will bring this feature in future. 


I like that, @KarthikGajendran ! Some of our clients also ask for it.


Thank you for sharing this with the community @Yuri Karpenko!


Reply