This document provides instructions for integrating Shopify data into Panoply. The following items will be covered:

Shopify Data Integration

To integrate Shopify data into Panoply using default selections, complete the following steps. For more advanced options, complete the following and refer to the subsequent sections for detailed information.

  1. Click Data Sources in the navigation menu.
  2. Click the Add Data Source button.
  3. In the Data Sources – Choose Source Type window, select Shopify. Shopify is listed under APIs.
  4. In the Data Sources – Shopify screen, type the name of your shop as it appears in the Shopify subdomain scheme. For example, if your URL is, you would type This-Is-Your-Shop-Name.
    • Even if your Shopify store uses a custom domain, your URL is still active. See Shopify’s documentation on Managing Domains for more information on identifying your shop name.
  5. Click Connect.
  6. If you are not already logged into your Shopify store, you will be prompted to log in. Enter your Shopify username and password, and then click Log in.
  7. A Shopify page explains that the Shopify Data Source will be able to access your Shopify data. Click Install unlisted app.
  8. (Optional) To customize the ingestion from your data source, review the advanced options.
  9. Click Collect.

The Data Sources – Shopify window will appear grayed out while the data integration is pending. A small green progress bar appears below Shopify.

You will be prompted to set up the integration of another data source. You can set up multiple data integrations without impacting the ingestion of the already scheduled or pending data integrations.

From the Data Sources main menu, you can monitor the data ingestion status of the scheduled and pending data integrations. After the data ingestion is complete, you can clean or transform your data in the Tables menu.

Advanced Options

Clicking Show next to Advanced will expand the Data Sources - Shopify window to include Destination, Primary Key, Exclude, Parse string, and Truncate table.

  • Destination - Default isshopify_{__resource}. This means that a table will be created for each unique __resource value, and each table will be prefixed with shopify_. If you want to customize the destination for this data source solely by altering the prefix, be sure to keep the _{__resource} postfix. For example, you could change shopify to company-name, resulting in this destination: company-name_{__resource}. If you do not include the _{__resource} postfix, all Shopify data from this data source will be collected into a single table.

  • Primary Key - Default is id, which is returned by the Shopify API.

  • Incremental Key - Not configurable for this data source. The Shopify data source pulls data incrementally based on when the ingestion process was last suceessfully completed. Panoply pulls all of your Shopify data the first time you click the Collect button, which results in a slower run time. All subsequent data collections (for the same Shopify data source) only pull the delta between the last time it finished successfully and now.

Data Schema

Panoply uses Shopify’s REST Admin API to ingest data into your Panoply data warehouse. This article explains the details of that integration. For complete details regarding the Shopify REST API, see Shopify’s REST Admin API reference documentation.

Because some Shopify data is nested, such as the billing address details for an order (see the Order properties for details), you should be aware of what Panoply does with nested data. By default, Panoply transforms nested data into a set of many-to-many or one-to-many relationship tables. This is the classic solution for nested structures in relational databases, where the nested model is transformed into several flat tables that can be joined together. In the case of the billing_address data for an order, if you use the default destination then Panoply would create a table called shopify_orders_billing_address to store the billing address information associted with the orders stored on the shopify_orders table.


Retrieves all orders, along with any associated refunds, transactions, and checkouts. Each order is a record of a complete purchase that includes details of the customer, their cart, and any transactions.

Data for each of the following are related to an order.


Returns information about a shop’s customers, such as their contact details, their order history, and whether they’ve agreed to receive email marketing.


Retrieves a list of products.

Abandoned Checkouts

Queries the Checkout resource to return abandoned checkouts. A checkout is considered abandoned when a customer has entered billing and shipping information, but hasn’t completed the purchase. Each Checkout object includes a URL to the online checkout, where the customer can complete their purchase.

Custom Collection

Retrieves a list of custom collections. A custom collection is a grouping of products that a merchant can create to make their store easier to browse. The merchant creates a custom collection and then selects the products that will go into it.


Retrieves a list of metafields that belong to a Shop resource. Metafields can be used in several ways, such as to add a summary to a blog post. You can also use metafields to share information with other Shopify apps.


Retrieves all collects for the shop. The Collect resource connects a product to a custom collection. For every product in a custom collection there is a collect that tracks the ID of both the product and the custom collection. A product can be in more than one collection, and will have a collect connecting it to each collection. Unlike many Shopify resources, collects aren’t apparent to store owners.