Shopify: what ID is used for the MerchantProductNo?
Shopify product ID
When first connecting your Shopify plugin as a merchant plugin (so as the source of data and system to submit orders to - not to be confused with using Shopify as a channel integration), you might notice that the unique product identifier in ChannelEngine (the MerchantProductNo) is a long number and not the SKU that you may have assigned to a product.
These long numbers that are stored as the MerchantProductNo are Shopify's own product (or variant) IDs.
Why is this used? Can this be changed?
The reason we use these Shopify IDs instead of your own SKU (as would often be the case if you use a product feed or ERP connection) is that these IDs are needed to perform API calls to and from Shopify - they are all based on these specific IDs (including setting the relationship between individual variants, children, and their group product, parent).
If we made it possible to change these MerchantProductNos storing these IDs (and their relationship), it would be a lot more difficult with a higher chance that misconfiguration(s) would happen and Shopify operations would fail.
Extracting the IDs for external use
However, while Shopify offers a great and simple platform for managing an online webshop, it only offers limited options for product information. As a lot of marketplaces require more and more detailed product information, most Shopify users will use an alternative system to enrich the existing product information and add new attributes.
To add additional product information via a feed, the original MerchantProductNo (so in this case the Shopify product IDs) has to be included in that feed to connect the data. Therefore, extracting these product IDs is crucial when it comes to that.
/ Exporting the Shopify product IDs
The main problem is that while Shopify has an export option to generate a CSV with all products in Shopify (on the Products page, select Export in the top right corner), and that does contain information about the individual variants, it does not include any Shopify IDs.
However, there are multiple alternatives that will allow you to export all products including variant IDs.
- Using a (paid) Shopify plugin: there are multiple (paid) Shopify plugins available (like https://apps.shopify.com/product-and-variant-ids) that do allow the exporting of Shopify IDs.
- Building your own implementation of the Shopify API: if you have a developer available or are a little tech-savvy, it is relatively simple to fetch all product information from Shopify. This can be done by running https://shopname.myshopify.com/admin/variants.json?fields=id,product-id,title&limit=250&page=1 (the number of pages and number of calls being based on your total amount of products).
- Using a custom channel in ChannelEngine: it is possible to create a custom channel in ChannelEngine including all (Shopify) products. These will automatically contain the Shopify ID (as the MerchantProductNo) and the SKU (the VendorProductNo).
In the example below, this last method is used to set up a new feed for enriching existing content.
/ Example: using Google Sheets to enrich Shopify content
- First, if you don't already have a custom channel, create one and include all (Shopify) products in there. Once a feed has been generated (this can take up to one hour after enabling the channel), download the CSV file.
Open that file with Excel or an alternative that can open CSV files and copy-paste whatever columns you want to Google Sheets or directly open Google Sheets and select File > Import > Upload > select the file you downloaded from ChannelEngine.
Make sure that the MerchantProductNo column remains, but you can add columns with all sorts of product information to the Google spreadsheet.
Once you're done, publish the file to the web, make it public and export it as a CSV file. More information on how to do that can be found on Product feeds: using Google Docs.
Now you can use the link and import the new/added product information (more information on setting up feed mapping can be found on Product feeds). In our example below, the new fields are selected as custom fields, but you can also overwrite regular fields, etc.