In this reference we’ll look at how to setup a Shopify Products API connection.
We’ll use SyncWith to get your Shopify Product Data into Google Sheets. Please see our Shopify Guide to see a full listing of all our Shopify connections, templates, tutorial and specific Shopify use cases.
In SyncWith if you search for
shopifyyou’ll get a few results, this guide deals with moving Shopify Product data into Google Sheets. You can check out our guides for Shopify Orders and General Shopify API GraphQL Queries.
As a reference this connector utilizes the Shopify Product API, if you’re curious about calling the api directly we have published a comprehensive Shopify API Guide. You can read the official Shopify API specs at https://shopify.dev/api/admin-rest/2022-04/resources/product#top.
Connecting to shopify works slightly differently - you need to add the SyncWith app in Shopify and then your stores will automagically show up in the Google Sheets addon, here are instructions: Connect your Shopify account
- SyncWith is a Google Sheets Add On
- SyncWith allows you to move data from any API into Google Sheets
- Learn more about why Marketers love SyncWith
- Check out our Google Workspace Listing and see why we’re the highest rated API add on with over 100,000 installs. Install today and get your data into Sheets in minutes.
Understanding Shopify’s Product Structure
- Products aren’t really products - they don’t have prices, weights, or titles, a product is a container that holds the
product variantsand the
- Products do have some fields:
- List of images
- Product type
- Many of the attributes you think about when you think about a product are under the product variant, each product can have many variants each with it’s own fields:
- Quantity in stock
- For example you might have a product called “Insulated coffee mug” you can better understand why variants e
- Variant 1
- title: 16oz stainless steel
- price: 24.99
- inventory quantity: 10
- Variant 2
- title: 24oz power coat pink
- price: 49.99
- inventory quantity:3
In our connector we present all the fields available. If you choose fields related to a product variant you will get one row per product variant, if you pick only fields related to the product you will get one row per product.
Any time multiple value fields that could apply to a product - such as image URLs they are included in a single cell comma separated. You can use SPLIT() as a method to extract them, eg if you want to return the images to their own columns. If you feel we’re missing anything please contact support and we’ll prioritize the updating of our Shopify Products connector.
For example if you choose ID, Variant ID , Title and Variant Title you’ll get data that looks like:
You can see that there are new rows being created for each product variant. If we had only selected ID and Title then we would have gotten a single row. So including any product variant fields will expand the size of rows by # of products * # of variants.
Shopify Product API Fields
Unique identifier of every Shopify product. It is unique across not just a single shop but across all of shopify.
Description of the product - supports HTML formatting and returns the raw HTML from the product description. Utilizes the body_html property. For example: <p>These amazing insulated coffee mugs are made from space age materials, guarenteed to keep your coffee <b>hot</b> or your smoothie <b>cold</b> </p>
The api returns an array of image objects, which we cast into a comma separated list of image URLs for the product.
Returns the product type as defined by your Shopify Shop’s Product Types for filtering and searching products. Eg
Scooters Skateboards Backpacks Running Shoes
Each product can have up to 250 tags. Again tags are useful to categorize multiple products into different categories, topics, uses, personas. For example you might have a
Running Shoesproduct type but you might have shoes that are designed for winter and add the tags
Shows the product status there are 3 valid states:
active: The product is ready to sell and is available to customers on the online store, sales channels, and apps. By default, existing products are set to active.
archived: The product is no longer being sold and isn't available to customers on sales channels and apps.
draft: The product isn't ready to sell and is unavailable to customers on sales channels and apps. By default, duplicated and unarchived products are set to draft.
Name of the product
Date and time when the product was last modified. Updates can include automated changes, for instance if inventory tracking is enabled the update of inventory amounts after a sale will count as an update. This means you can not necessarily use it to determine if a human made an edit.
Date and time the product was created.
Date and time the product was published to the store. If set to null it will unpublish the product from the Online Store channel.
A human friendly name for the product (vs it’s unique identifier). If not manually set it is automatically generated from the product’s title.
Indicates whether the product is published to the point of sale channel. Values include:
webpubished to the online store channel but not published to the point of sale channel
globalpublished to both the online store channel and the point of sale channel
he suffix of the Liquid template used for the product page. If this property is specified, then the product page uses a template called "product.suffix.liquid", where "suffix" is the value of this property. If this property is
null, then the product page uses the default template "product.liquid". (default:
Name of the product vendor, eg a Macbook Air would have the vendor Apple. Air Jordan 1 Mid would have the vendor Nike
Shopify Product - Product Variant Fields
Unique identifier of the product variant
This is a concatenation of the option1, option2 and option3 properties. Variant title cannot be updated directly and will change when the option properties are updated
Price of the product variant
Compare At Price
Original price of the item before a sale or adjustment. Useful if you want to see how much you’re discounting items or perhaps if you want to analyze if you’re letting users stack coupons on top of sales items.
Aggregate inventory of the product across all locations
weight of the product variant in the units set by
The unit of measurement the product variant weight is set to use. Values include:
g kg oz lb
Weight of the product variant in grams
A unique identifier for the product variant in the shop. Required in order to connect to a FulfillmentService (third party warehouse that prepares and ships orders on behalf of the store owner. Fulfillment services charge a fee to package and ship items and update product inventory levels).
Variant Created At
Date and time the product variant was created
Variant Updated At
The date and time when the product variant was last modified.
Whether a tax is charged when the product variant is sold.
The barcode, UPC, or ISBN number for the product.
The order of the product variant in the list of product variants. The first position in the list is 1. The position of variants is indicated by the order in which they are listed.
Whether customers are allowed to place an order for the product variant when it's out of stock. Default value is
deny: Customers are not allowed to place orders for the product variant if it's out of stock.
continue: Customers are allowed to place orders for the product variant if it's out of stock.
Inventory Item ID
The unique identifier for the inventory item, which is used in the Inventory API to query for inventory information.
This property is deprecated by Shopify
Fulfillment service associated with the product
Describes the service that is tracking how much is in stock, valid values include:
shopifyyou are tracking the inventory yourself
nullyou are not tracking inventory on the product variant
fulfillment service handlethe handle of the fullfilment service that is handling inventory management
Manual RefreshIs the default scheduling for a connection. Data will not be updated until you actively refresh it. In order to refresh the data you must either:
- Refresh your data from in the SyncWith addon side bar via the refresh button - all connections can be manually refreshed
- Refresh via the Add-on menu, allowing you to refresh all connections setup, or all connection(s) pushing data to the current active sheet
- Refresh via the check box (located in the header above the data table)
There are 3 options for scheduled refreshes:
Automatically refresh dailywill refresh the data every day at the same time. The time is set based on when the connection was last updated. If you wish to set the refresh to happen at a specific time you would need to open the connection and save it at that time.
Automatically refresh hourlywill refresh the data every hourly
Automatically refresh every 5 minuteswill refresh the data every 5 minutes. This is not typically used for shopify data. But if you had a staff looking at all the recent orders it could make sense, you could constanly pull the current and last days data rapidly to monitor things in close to real time.
Contact Support and we can try and answer any questions you have.