This post helps you with loading your data from Shopify to BigQuery. Suppose you are looking to get analytics-ready data without the manual hassle. In that case, you can integrate Shopify to BigQuery with RudderStack, so you can focus on what matters, getting value out of your shop data.
What we will see:
Extract your preferred data using Shopify and Shopify API (the hard way)
Prepare your Shopify Data for Google BigQuery
Data load from Shopify to BigQuery
The best way to load any data from Shopify to BigQuery (the easy way)
How to Extract my data from Shopify?
Shopify exposes its complete platform to developers through its API. It is used by thousands of developers to create applications that are then sold through the Shopify marketplace.
As a Web API following the RESTful architecture principles, it can be accessed through HTTP. As a RESTful API, interacting with it can be achieved by using tools like CURL or Postmanor by using HTTP clients for your favorite language or framework.
Shopify also offers a number of SDKs that are officially supported and maintained by them and that can be used to access their platform for different uses. For example, by using the iOS and Android Buy SDK, it is possible to add Shopify checkout capabilities to your mobile application. Other SDKs that are offered are:
There are two different types of applications in Shopify when it comes to authentication, private and public apps.
Private apps will only function on individual stores, so you don’t need to authenticate them through Oauth. You can get Private app credentials through your Partner dashboard or by logging into any Shopify admin. You can also use this API key to manipulate your store using the API console without the need for building a fully functional app.
The apps you create in your Partners dashboard function as public apps that can be made available for download in Shopify’s App Store if you meet the criteria.
Shopify rate limiting
The API call limit operates using a “leaky bucket” algorithm as a controller. This allows for infrequent bursts of calls and allows your app to continue to make an unlimited amount of calls over time.
The bucket size is 40 calls (which cannot be exceeded at any given time), with a “leak rate” of 2 calls per second that continually empties the bucket. If your app averages 2 calls per second, it will never trip a 429 error (“bucket overflow”).
Endpoints and available resources
Shopify exposes 35+ endpoints covering all the possible touchpoints of e-commerce. Some of the most important resources that can be accessed through these endpoints are the following:
Abandoned checkouts: used to return abandoned checkouts. A checkout is considered abandoned when a customer has entered their billing & shipping info but has yet to complete the purchase.
ApplicationCharge: Request to charge a shop a one-time fee by issuing this call.
Article: Operations concerning articles on your Blog.
Asset: files that make up the theme of a shop.
Blog: Shopify, in addition to the e-commerce features also offers an environment where the merchant can create a Blog for her shop.
CarrierService: A Carrier Service (also known as a Carrier Calculated Service or Shipping Service) provides real-time shipping rates to Shopify.
Collect: An object that connects a product to a custom collection.
Customer: A customer resource instance represents a customer account with the shop.
Event: Events are generated by specific Shopify resources when specific things happen, such as the creation of an article.
Order: An order is a customer’s completed request to purchase one or more products from a shop.
Product: A product is an individual item for sale in a Shopify shop.
Transaction: Transactions are created for every order that results in an exchange of money.
For a complete list of endpoints, you can see here.
It is clear that with such a rich platform and API, the data that can be pulled out of Shopify are both valuable and come in large quantities. So, let’s assume that we want to pull all events out of Shopify to use them for further analysis.
To do so, we need to make a request to the Event endpoint like this.
This request will get us back to all the events that are related to Products and Orders for our shop. The response will be in JSON and will look like this: