---
title: "Shopify"
slug: "shopify"
description: "Get your Shopify data securely integrated with Dataddo! Learn how to create a Shopify data source, configure snapshotting preferences, and preview data."
updated: 2026-07-09T08:37:47Z
published: 2026-07-09T08:37:47Z
canonical: "docs.dataddo.com/shopify"
---

> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dataddo.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Shopify

**Shopify** is an e-commerce platform that allows businesses to create online stores and sell products or services. It provides a range of tools and features for inventory management, order processing, payment integration, and website customization, enabling businesses to easily set up and operate their online storefronts.

Refer to our website for [the list of metrics and attributes available in Dataddo](https://dataddo.com/connector/shopify).

Refer to Shopify's official documentation to see [all available endpoints from the Shopify API](https://shopify.dev/docs/api/admin-rest).

## Authorize Connection to Shopify

### In Shopify

To authorize your Shopify account, you will need your **API access token**.

**Create an App**

1. Make sure you are logged in to your Shopify account and navigate to the [**Developer Dashboard**](https://dev.shopify.com/dashboard/) page.
2. In the top-right corner, click **Create app**.
3. Name your app and click **Create**.
4. On the **Create a version page**, scroll down to **Access** to add the following admin API scopes. You can copy paste the following list or select it from the **Select scopes** menu.

```
read_assigned_fulfillment_orders, read_customers,read_fulfillments, read_merchant_managed_fulfillment_orders, read_orders, read_products, read_third_party_fulfillment_orders
```
5. Click **Release** to save the app version with updated scopes.
6. On the **Home** tab, click **Install app**. Select which Shopify store you want to install the app to. Click **Install**.
7. Back in your **Developer Dashboard**, select the newly created app and navigate to the **Settings** page.
8. From the **Credentials** section, copy your **Client ID** and **Client Secret**. These will be used to **retrieve your access token**.

**Obtain Your Access Token**

Exchange your client credentials for an access token to authenticate your API requests. This is a server-to-server request.

- **Endpoint**: `POST https://{shop}.myshopify.com/admin/oauth/access_token`
- **Headers**: `Content-Type: application/x-www-form-urlencoded`
- **Body Parameters**

| Parameter | Value | Description |
| --- | --- | --- |
| `client_id` | string | Your app's **client ID** found in the Developer Dashboard. |
| `client_secret` | string | Your app's **client Secret**. |
| `grant_type` | string | Must be set to `client_credentials`. |

Copy the **access token** from the response. You will need this token for account authorization in Dataddo:

```
{
    "access_token": "shpat_a1b2c3d4f5g6h7j8k9l10",
    "scope": "read_assigned_fulfillment_orders,read_customers,read_fulfillments,read_merchant_managed_fulfillment_orders,read_orders,read_products,read_third_party_fulfillment_orders",
    "expires_in": 86399
}
```

### In Dataddo

1. On the **Authorizers** page, click on [Authorize New Service](https://app.dataddo.com/service/new) and select Shopify.
2. Fill in the following fields:
  1. **Subdomain**: Shopify subdomain name, aka the name of your shop=. E.g. `agencyname` from `agencyname.myshopify.com`.
  2. **Access Token**: Your Shopify API access token.
3. Rename your ***authorizer*** for easier identification and click on **Save**.

## Data Coverage

Shopify exposes the following datasets. Each dataset maps to a table you can extract. Example fields are a representative sample; each dataset returns more columns. The Date range column shows whether a dataset extracts a selected relative window or all available data (see below).

| Dataset | Description | Example fields | Date range |
| --- | --- | --- | --- |
| Customers | Retrieves a list of customers | Id, Accepts Marketing, Amount Spent Amount, Average Order Amount, Created At, Display Name (+9 more) | Yes |
| Orders | Retrieves a list of orders | Id, Billing Address 1, Billing Address 2, Billing Address City, Billing Address Company, Billing Address Country (+42 more) | Yes |
| Order Line Items | Retrieves a list of order line items | Order Id, Line Item ID, Tax Lines Title, Fulfillable Quantity, Fulfillment Service, Line Item Name (+11 more) | Yes |
| Products | Retrieves a list of products | Product Id, Product Created At, Product Handle, Product Max Variant Price Amount, Product Max Variant Price Currency Code, Product Min Variant Price Amount (+27 more) | Yes |
| Refunds Line Items | Retrieves a list of refunds line items | Order ID, Refund ID, Refund Line Item Id, Order Updated At, Refund Updated At, Refund Line Item Quantity | Yes |

## How Data Extraction Works

Every dataset for this connector uses a relative date range: the source reads a relative window (for example "last 7 days"), and that window slides forward with the current date. Every run re-reads the window, so a range of "1 day ago" always pulls the previous day (D-1). Each run replaces the window's data rather than adding older history. To load records from before the window, run a full data re-sync with a wider range. See [Data Backfilling](/docs/data-backfilling).

Set the relative date range when you create the source.

## Metadata Columns

When you create a source, you can add these Dataddo metadata columns to the extracted data:

- **dataddo_hash** - a fingerprint built from each record's key fields. It works as a natural key, so it is ideal for upserts (updating existing rows in your destination instead of creating duplicates).
- **dataddo_extraction_timestamp** - the date and time the row was extracted. Use it to track how records change over time, for example to build slowly changing dimensions.

## How to Create a New Shopify Data Source

Creating a data source takes you through six steps, shown in the progress bar at the top of the wizard. Each step is explained below.

**1. Pick the connector**

On the **Sources** page, click **Create Source**, then select the connector from the catalog. Use the search bar or the category tabs if you do not see it right away. You can rename the source at any time using the pencil icon next to its name.

**2. Select the dataset**

A dataset defines the shape of your data: which fields you get and how they relate. Select the dataset you want; you can still fine-tune the exact fields later.

- Each dataset has a short description of what it contains. Use the search box to find a dataset, attribute, or metric by name.
- The panel on the right previews the selected dataset's fields. For each field you can see its **data type**, whether it holds **sensitive** data (personal fields such as name or email are flagged), and which **other datasets it links to**, so you can see how the datasets relate.

**3. Choose the account**

This step selects what Dataddo reads from.

- **Authorizer:** Select an account you have already authorized from the drop-down. If you have none yet, choose **Add new account** and follow the prompts. If no authorizer is selected, Dataddo asks you to authorize before you continue.
- **What to extract from:** Select the exact entity you want to pull data from. Depending on the service this may be labelled an account, property, profile, workspace, or similar, sometimes with a sub-level to choose as well.
- **Multiple accounts:** To pull the same data from every entity you can access, turn on **Automatically collect data from all ...**. This is multi-account extraction. Leave it off to choose them by hand.

**4. Refine the attributes and metrics**

The dataset already sets the structure. Here you fine-tune it: tick or untick the specific attributes and metrics you want to keep, and use the search box to find a field quickly. Click **Test on Sample Data** at any point to preview the result before you continue.

**5. Add metadata columns (optional)**

Two optional columns help your destination handle the data.

- **Dataddo Hash (Include Row Hash):** a fingerprint built from the columns you pick. It works as a natural key, so your destination can deduplicate rows and run upserts instead of creating duplicates. Turn it on, then select the columns that uniquely identify a row.
- **Dataddo Extraction Timestamp:** the time each row was extracted. Use it to watermark the data, for example to build slowly changing dimensions or to track when a value last changed.

**6. Set the schedule**

Decide how often Dataddo runs the extraction.

- **Frequency:** how often the pipeline runs, for example daily. Click **Show advanced settings** to also set the exact hour and minute (UTC).
- **Date range:** the relative window each run extracts, for example "Yesterday". The window moves forward on every run.
- **Historical data:** a new source starts from the current window. To load older data, run a [full data re-sync](https://docs.dataddo.com/docs/data-backfilling) after the source is created.
- **Allow Empty Data Extractions:** when on, a run that returns no data records zero rows instead of failing. Turn it on if the source can legitimately have periods with no data.

Click **Save**. Your data source is ready.

## Limitations

### Multi-Account Extraction

If you have multiple Shopify accounts and would like to extract the same data from all of them, you can do it via [data union](/docs/data-union).

## Troubleshooting

### Data Preview Unavailable

No data preview when you click on **Test Data** might be caused by an issue with your ***source*** configuration. The most common causes are:

- **Date range**: Try a smaller date range. You can load the rest of your data afterward via [manual data load](https://docs.dataddo.com/docs/data-backfilling).
- **Insufficient permissions**: Please make sure your authorized account has at least admin-level permissions.

### Insufficient Scopes Error

**ERROR MESSAGE** `Cannot Access Data: Insufficient Scopes`

If you cannot access some of your data, please double-check which permissions you've given to Dataddo. In majority of cases, you will need to add additional permissions to your account.

**Example** To gain access to the `fulfillmentOrders` field from the **Orders** dataset, give Dataddo at least one of the following scopes:

- `read_assigned_fulfillment_orders`
- `read_merchant_managed_fulfillment_orders`
- `read_third_party_fulfillment_orders`

## Related Articles

Now that you have successfully created a ***data source***, see how you can connect your data to a dashboarding app or a data storage.

**Sending Data to Dashboarding Apps**

- [Simple Data Integration to Dashboards](https://docs.dataddo.com/docs/simple-data-integration-to-dashboards)
- [Data Backfilling to Dashboarding Apps](https://docs.dataddo.com/docs/data-backfilling-to-dashboarding-apps)

**Sending Data to Data Storages**

- [Batch Ingestion to Data Warehouses](https://docs.dataddo.com/docs/ingestion-to-data-warehouses)
- [Data Backfilling to Storages](https://docs.dataddo.com/docs/data-backfilling-to-storages)

**Other Resources**

- [Troubleshooting](https://docs.dataddo.com/docs/troubleshooting)
- [Extraction Logs](https://docs.dataddo.com/docs/extraction-logs)
- [Data Duplication](https://docs.dataddo.com/docs/data-duplication)
