Shopify integration summary

Stitch’s Shopify integration replicates data using the Shopify REST Admin API (v2024-01). Refer to the Schema section for a list of objects available for replication.

Shopify feature snapshot

A high-level look at Stitch's Shopify (v1) integration, including release status, useful links, and the features supported in Stitch.

STITCH
Release status

Released on January 2, 2019

Supported by

Stitch

Stitch plan

Standard

API availability

Available

Singer GitHub repository

singer-io/tap-shopify

REPLICATION SETTINGS
Anchor Scheduling

Supported

Advanced Scheduling

Supported

Table-level reset

Unsupported

Configurable Replication Methods

Unsupported

DATA SELECTION
Table selection

Supported

Column selection

Supported

Select all

Supported

TRANSPARENCY
Extraction Logs

Supported

Loading Reports

Supported

Connecting Shopify

Shopify setup requirements

To set up Shopify in Stitch, you need:

  • Admin access in Shopify. This is required to allow Stitch to replicate data.

    Note: If you’re on a Shopify Plus plan, the permissions required may differ. Store owners can grant users permissions to export orders, draft orders, products, inventory, and customer data. In general, view-level permissions should be sufficient.

    Refer to the Shopify Staff permissions documentation for more information.


Step 1: Add Shopify as a Stitch data source

  1. Sign into your Stitch account.
  2. On the Stitch Dashboard page, click the Add Integration button.

  3. Click the Shopify icon.

  4. Enter a name for the integration. This is the name that will display on the Stitch Dashboard for the integration; it’ll also be used to create the schema in your destination.

    For example, the name “Stitch Shopify” would create a schema called stitch_shopify in the destination. Note: Schema names cannot be changed after you save the integration.

  5. In the Shopify Shop field, enter the name of the shop you want to connect to Stitch. For example: If the shop URL was stitch-data.shopify.com, you’d enter stitch-data into this field.

Step 2: Define the historical replication start date

The Sync Historical Data setting defines the starting date for your Shopify integration. This means that data equal to or newer than this date will be replicated to your data warehouse.

Change this setting if you want to replicate data beyond Shopify’s default setting of 1 year. For a detailed look at historical replication jobs, check out the Syncing Historical SaaS Data guide.

Step 3: Create a replication schedule

In the Replication Frequency section, you’ll create the integration’s replication schedule. An integration’s replication schedule determines how often Stitch runs a replication job, and the time that job begins.

Shopify integrations support the following replication scheduling methods:

To keep your row usage low, consider setting the integration to replicate less frequently. See the Understanding and Reducing Your Row Usage guide for tips on reducing your usage.

Step 4: Authorize Stitch to access Shopify

  1. Next, you’ll be prompted to sign into your Shopify account. Enter your Shopify credentials.
  2. Click Log in.
  3. After the authorization process is successfully completed, you’ll be directed back to Stitch.
  4. Click All Done.

Step 5: Set objects to replicate

The last step is to select the tables and columns you want to replicate. Learn about the available tables for this integration.

Note: If a replication job is currently in progress, new selections won’t be used until the next job starts.

For Shopify integrations, you can select:

  1. Individual tables and columns

  2. All tables and columns

Click the tabs to view instructions for each selection method.

  1. In the integration’s Tables to Replicate tab, locate a table you want to replicate.
  2. To track a table, click the checkbox next to the table’s name. A blue checkmark means the table is set to replicate.

  3. To track a column, click the checkbox next to the column’s name. A blue checkmark means the column is set to replicate.

  4. Repeat this process for all the tables and columns you want to replicate.
  5. When finished, click the Finalize Your Selections button at the bottom of the screen to save your selections.
  1. Click into the integration from the Stitch Dashboard page.
  2. Click the Tables to Replicate tab.

  3. In the list of tables, click the box next to the Table Names column.
  4. In the menu that displays, click Track all Tables and Fields:

    The Track all Tables and Fields menu in the Tables to Replicate tab

  5. Click the Finalize Your Selections button at the bottom of the page to save your data selections.

Initial and historical replication jobs

After you finish setting up Shopify, its Sync Status may show as Pending on either the Stitch Dashboard or in the Integration Details page.

For a new integration, a Pending status indicates that Stitch is in the process of scheduling the initial replication job for the integration. This may take some time to complete.

Free historical data loads

The first seven days of replication, beginning when data is first replicated, are free. Rows replicated from the new integration during this time won’t count towards your quota. Stitch offers this as a way of testing new integrations, measuring usage, and ensuring historical data volumes don’t quickly consume your quota.


Shopify replication

Replicating order refunds

To extract order refund data, Stitch queries every order in your account. If you have the order_refunds table selected for replication, the process can potentially be very slow depending on how many orders and refunds exist in your Shopify account. As tables are extracted one at a time, this could cause extraction to not proceed for days at a time. To ensure timely replication of your other selected tables, consider creating a separate integration for only the order_refunds table.

Note: Creating a separate integration for your order_refunds table may negatively affect your Shopify API quota.


Shopify table reference

abandoned_checkouts

The abandoned_checkouts table contains info about abandoned checkouts. Shopify considers a checkout to be abandoned when a customer has entered billing and shipping details, but hasn’t completed the purchase.

Replication Method

Key-based Incremental

Primary Key

id

Replication Key

updated_at

Useful links

abandoned_checkouts schema on GitHub

Shopify API method

Join abandoned_checkouts with on
customers
abandoned_checkouts.customer.default_address.customer_id = customers.id
abandoned_checkouts.customer.id = customers.id
abandoned_checkouts.customer.addresses.customer_id = customers.id
abandoned_checkouts.customer.default_address.customer_id = customers.addresses.id
abandoned_checkouts.customer.id = customers.addresses.id
abandoned_checkouts.customer.addresses.customer_id = customers.addresses.id
abandoned_checkouts.customer.last_order_id = customers.last_order_id
order_refunds
abandoned_checkouts.customer.last_order_id = order_refunds.order_id
abandoned_checkouts.line_items.product_id = order_refunds.refund_line_items.line_item.product_id
orders
abandoned_checkouts.customer.last_order_id = orders.id
abandoned_checkouts.customer.last_order_id = orders.refunds.order_adjustments.order_id
abandoned_checkouts.line_items.product_id = orders.fulfillments.line_items.product_id
abandoned_checkouts.line_items.product_id = orders.refunds.refund_line_items.line_item.product_id
abandoned_checkouts.line_items.product_id = orders.line_items.product_id
transactions
abandoned_checkouts.customer.last_order_id = transactions.order_id
collects
abandoned_checkouts.line_items.product_id = collects.product_id
products
abandoned_checkouts.line_items.product_id = products.id
abandoned_checkouts.line_items.product_id = products.options.product_id

abandoned_checkout_url

STRING

billing_address

OBJECT

address1

STRING

address2

STRING

city

STRING

company

STRING

country

STRING

country_code

STRING

first_name

STRING

last_name

STRING

latitude

NUMBER

longitude

NUMBER

name

STRING

phone

STRING

province

STRING

province_code

STRING

zip

STRING

buyer_accepts_marketing

BOOLEAN

buyer_accepts_sms_marketing

BOOLEAN

cart_token

STRING

closed_at

DATE-TIME

completed_at

DATE-TIME

created_at

DATE-TIME

currency

STRING

customer

OBJECT

addresses

ARRAY

address1

STRING

address2

STRING

city

STRING

company

STRING

country

STRING

country_code

STRING

country_name

STRING

customer_id

INTEGER

default

BOOLEAN

first_name

STRING

id

INTEGER

last_name

STRING

name

STRING

phone

STRING

province

STRING

province_code

STRING

zip

STRING

admin_graphql_api_id

STRING

created_at

DATE-TIME

default_address

OBJECT

address1

STRING

address2

STRING

city

STRING

company

STRING

country

STRING

country_code

STRING

country_name

STRING

customer_id

INTEGER

default

BOOLEAN

first_name

STRING

id

INTEGER

last_name

STRING

name

STRING

phone

STRING

province

STRING

province_code

STRING

zip

STRING

email

STRING

email_marketing_consent

OBJECT

first_name

STRING

id

INTEGER

last_name

STRING

last_order_id

INTEGER

last_order_name

STRING

multipass_identifier

STRING

note

STRING

orders_count

INTEGER

phone

STRING

sms_marketing_consent

OBJECT

state

STRING

tags

STRING

tax_exempt

BOOLEAN

tax_exemptions

ARRAY

total_spent

STRING

updated_at

DATE-TIME

verified_email

BOOLEAN

customer_locale

STRING

device_id

INTEGER

discount_codes

ARRAY

amount

NUMBER

code

STRING

type

STRING

email

STRING

gateway

STRING

id

INTEGER

landing_site

STRING

line_items

ARRAY

admin_graphql_api_id

STRING

applied_discount

INTEGER

applied_discounts

ARRAY

compare_at_price

STRING

destination_location

OBJECT

active

BOOLEAN

address1

STRING

address2

STRING

admin_graphql_api_id

STRING

city

STRING

country

STRING

country_code

STRING

country_name

STRING

created_at

DATE-TIME

id

INTEGER

legacy

BOOLEAN

localized_country_name

STRING

localized_province_name

STRING

name

STRING

phone

STRING

province

STRING

province_code

STRING

updated_at

DATE-TIME

zip

STRING

destination_location_id

INTEGER

discount_allocations

ARRAY

amount

NUMBER

discount_application_index

INTEGER

fulfillable_quantity

INTEGER

fulfillment_service

STRING

fulfillment_status

STRING

gift_card

BOOLEAN

grams

INTEGER

id

INTEGER, STRING

key

STRING

line_price

STRING

name

STRING

origin_location

OBJECT

active

BOOLEAN

address1

STRING

address2

STRING

admin_graphql_api_id

STRING

city

STRING

country

STRING

country_code

STRING

country_name

STRING

created_at

DATE-TIME

id

INTEGER

legacy

BOOLEAN

localized_country_name

STRING

localized_province_name

STRING

name

STRING

phone

STRING

province

STRING

province_code

STRING

updated_at

DATE-TIME

zip

STRING

origin_location_id

INTEGER

pre_tax_price

NUMBER

price

NUMBER

product_exists

BOOLEAN

product_id

INTEGER

properties

ARRAY

name

STRING

value

STRING

OBJECT

quantity

INTEGER

requires_shipping

BOOLEAN

sku

STRING

tax_code

STRING

tax_lines

ARRAY

channel_liable

BOOLEAN

compare_at

STRING

position

INTEGER

price

NUMBER

rate

NUMBER

source

STRING

title

STRING

zone

STRING

taxable

BOOLEAN

title

STRING

total_discount

NUMBER

variant_id

INTEGER

variant_inventory_management

STRING

variant_title

STRING

vendor

STRING

location_id

INTEGER

name

STRING

note

STRING

note_attributes

ARRAY

name

STRING

value

STRING

phone

STRING

presentment_currency

STRING

referring_site

STRING

shipping_address

OBJECT

address1

STRING

address2

STRING

city

STRING

company

STRING

country

STRING

country_code

STRING

first_name

STRING

last_name

STRING

latitude

NUMBER

longitude

NUMBER

name

STRING

phone

STRING

province

STRING

province_code

STRING

zip

STRING

shipping_lines

ARRAY

api_client_id

INTEGER

applied_discounts

ARRAY

carrier_identifier

STRING

carrier_service_id

INTEGER

code

STRING

custom_tax_lines

ARRAY

delivery_category

STRING

id

STRING

markup

STRING

phone

STRING

price

NUMBER

requested_fulfillment_service_id

STRING

source

STRING

tax_lines

ARRAY

channel_liable

BOOLEAN

compare_at

STRING

position

INTEGER

price

NUMBER

rate

NUMBER

source

STRING

title

STRING

zone

STRING

title

STRING

validation_context

STRING

sms_marketing_phone

STRING

source

STRING

source_identifier

STRING

source_name

STRING

source_url

STRING

subtotal_price

NUMBER

tax_lines

ARRAY

channel_liable

BOOLEAN

compare_at

STRING

position

INTEGER

price

NUMBER

rate

NUMBER

source

STRING

title

STRING

zone

STRING

taxes_included

BOOLEAN

token

STRING

total_discounts

NUMBER

total_duties

NUMBER

total_line_items_price

NUMBER

total_price

NUMBER

total_tax

NUMBER

total_weight

INTEGER

updated_at

DATE-TIME

user_id

INTEGER

collects

The collects table contains info about collects, which are used to manage relationships between products and custom collections. For every product in a custom collection, there’s a collect that tracks the ID of both the product and the custom collection.

Replication Method

Key-based Incremental

Primary Key

id

Replication Key

updated_at

Useful links

collects schema on GitHub

Shopify API method

Join collects with on
custom_collections
collects.collection_id = custom_collections.id
abandoned_checkouts
collects.product_id = abandoned_checkouts.line_items.product_id
order_refunds
collects.product_id = order_refunds.refund_line_items.line_item.product_id
orders
collects.product_id = orders.fulfillments.line_items.product_id
collects.product_id = orders.refunds.refund_line_items.line_item.product_id
collects.product_id = orders.line_items.product_id
products
collects.product_id = products.id
collects.product_id = products.options.product_id

collection_id

INTEGER

created_at

DATE-TIME

id

INTEGER

position

INTEGER

product_id

INTEGER

sort_value

STRING

updated_at

DATE-TIME

custom_collections

The custom_collections table contains info about custom collections. A custom collection is a grouping of products that a merchant creates to make their store easier to browse.

Replication Method

Key-based Incremental

Primary Key

id

Replication Key

updated_at

Useful links

custom_collections schema on GitHub

Shopify API method

Join custom_collections with on
collects
custom_collections.id = collects.collection_id

admin_graphql_api_id

STRING

body_html

STRING

handle

STRING

id

INTEGER

image

OBJECT

alt

STRING

created_at

STRING

height

INTEGER

src

STRING

width

INTEGER

published_at

STRING

published_scope

STRING

sort_order

STRING

template_suffix

STRING

title

STRING

updated_at

STRING

customers

The customers table contains info about the shop’s customers. This includes their contact details, order history, and email marketing preferences.

Customer metafield data

To replicate customer metafield data, you must set this table and the metafields table to replicate.

Replication Method

Key-based Incremental

Primary Key

id

Replication Key

updated_at

Useful links

Shopify documentation

customers schema on GitHub

Shopify API method

Join customers with on
abandoned_checkouts
customers.id = abandoned_checkouts.customer.default_address.customer_id
customers.addresses.id = abandoned_checkouts.customer.default_address.customer_id
customers.id = abandoned_checkouts.customer.id
customers.addresses.id = abandoned_checkouts.customer.id
customers.id = abandoned_checkouts.customer.addresses.customer_id
customers.addresses.id = abandoned_checkouts.customer.addresses.customer_id
customers.last_order_id = abandoned_checkouts.customer.last_order_id
order_refunds
customers.last_order_id = order_refunds.order_id
orders
customers.last_order_id = orders.id
customers.last_order_id = orders.refunds.order_adjustments.order_id
transactions
customers.last_order_id = transactions.order_id

addresses

ARRAY

address1

STRING

address2

STRING

city

STRING

company

STRING

country

STRING

country_code

STRING

country_name

STRING

customer_id

INTEGER

default

BOOLEAN

first_name

STRING

id

INTEGER

last_name

STRING

name

STRING

phone

STRING

province

STRING

province_code

STRING

zip

STRING

admin_graphql_api_id

STRING

created_at

DATE-TIME

default_address

OBJECT

address1

STRING

address2

STRING

city

STRING

company

STRING

country

STRING

country_code

STRING

country_name

STRING

customer_id

INTEGER

default

BOOLEAN

first_name

STRING

id

INTEGER

last_name

STRING

name

STRING

phone

STRING

province

STRING

province_code

STRING

zip

STRING

email

STRING

email_marketing_consent

OBJECT

first_name

STRING

id

INTEGER

last_name

STRING

last_order_id

INTEGER

last_order_name

STRING

multipass_identifier

STRING

note

STRING

orders_count

INTEGER

phone

STRING

sms_marketing_consent

OBJECT

state

STRING

tags

STRING

tax_exempt

BOOLEAN

tax_exemptions

ARRAY

total_spent

STRING

updated_at

DATE-TIME

verified_email

BOOLEAN

events

The events table contains info about events in the shop.

Replication Method

Key-based Incremental

Primary Key

id

Replication Key

created_at

Useful links

Shopify documentation

events schema on GitHub

Shopify API method

arguments

ARRAY

STRING

author

STRING

body

STRING

created_at

DATE-TIME

description

STRING

id

INTEGER

message

STRING

path

STRING

subject_id

INTEGER

subject_type

STRING

verb

STRING

inventory_items

The inventory_items table contains info about items in a shop.

Replication Method

Key-based Incremental

Primary Key

id

Replication Key

updated_at

Useful links

Shopify documentation

inventory_items schema on GitHub

Shopify API method

admin_graphql_api_id

STRING

cost

NUMBER

country_code_of_origin

STRING

country_harmonized_system_codes

ARRAY

country_code

STRING

harmonized_system_code

STRING

created_at

DATE-TIME

harmonized_system_code

INTEGER

id

INTEGER

province_code_of_origin

STRING

requires_shipping

BOOLEAN

sku

STRING

tracked

BOOLEAN

updated_at

DATE-TIME

inventory_levels

The inventory_levels table contains info about quantities of an inventory item for a location.

Replication Method

Key-based Incremental

Primary Keys

inventory_item_id

location_id

Replication Key

updated_at

Useful links

Shopify documentation

inventory_levels schema on GitHub

Shopify API method

admin_graphql_api_id

STRING

available

INTEGER

inventory_item_id

INTEGER

location_id

INTEGER

updated_at

DATE-TIME

locations

The locations table contains info about .

Replication Method

Key-based Incremental

Primary Key

id

Replication Key

updated_at

Useful links

Shopify documentation

locations schema on GitHub

Shopify API method

active

BOOLEAN

address1

STRING

address2

STRING

admin_graphql_api_id

STRING

city

STRING

country

STRING

country_code

STRING

country_name

STRING

created_at

DATE-TIME

id

INTEGER

legacy

BOOLEAN

localized_country_name

STRING

localized_province_name

STRING

name

STRING

phone

STRING

province

STRING

province_code

STRING

updated_at

DATE-TIME

zip

STRING

metafields

The metafields table contains info about resource metafields. These are arbitrary fields used to store additional information about resources.

Metafield replication and resource types

By default, this table will include only shop-level metafield data. To replicate the metafields for a given resource type, this table and the table for the resource must be set to replicate.

For example: To replicate metafield data for Orders, the orders table must also be set to replicate.

Metafield data is available for customers, products, and orders.

Replication Method

Key-based Incremental

Primary Key

id

Replication Key

updated_at

Useful links

metafields schema on GitHub

Shopify API method

admin_graphql_api_id

STRING

created_at

DATE-TIME

description

STRING

id

INTEGER

key

STRING

namespace

STRING

owner_id

INTEGER

owner_resource

STRING

type

STRING

updated_at

DATE-TIME

value

INTEGER, OBJECT, STRING

value_type

STRING

order_refunds

The order_refunds table contains info about refunds associated with orders.

Replication Method

Key-based Incremental

Primary Key

id

Replication Key

created_at

Useful links

order_refunds schema on GitHub

Shopify API method

Join order_refunds with on
abandoned_checkouts
order_refunds.order_id = abandoned_checkouts.customer.last_order_id
order_refunds.refund_line_items.line_item.product_id = abandoned_checkouts.line_items.product_id
customers
order_refunds.order_id = customers.last_order_id
orders
order_refunds.order_id = orders.id
order_refunds.order_id = orders.refunds.order_adjustments.order_id
order_refunds.id = orders.refunds.id
order_refunds.id = orders.refunds.order_adjustments.refund_id
order_refunds.refund_line_items.line_item.product_id = orders.fulfillments.line_items.product_id
order_refunds.refund_line_items.line_item.product_id = orders.refunds.refund_line_items.line_item.product_id
order_refunds.refund_line_items.line_item.product_id = orders.line_items.product_id
transactions
order_refunds.order_id = transactions.order_id
collects
order_refunds.refund_line_items.line_item.product_id = collects.product_id
products
order_refunds.refund_line_items.line_item.product_id = products.id
order_refunds.refund_line_items.line_item.product_id = products.options.product_id

admin_graphql_api_id

STRING

created_at

DATE-TIME

id

INTEGER

note

STRING

order_adjustments

ARRAY

amount

NUMBER

amount_set

OBJECT

id

INTEGER

kind

STRING

order_id

INTEGER

reason

STRING

refund_id

INTEGER

tax_amount

NUMBER

tax_amount_set

OBJECT

order_id

INTEGER

processed_at

STRING

refund_line_items

ARRAY

id

INTEGER

line_item

OBJECT

admin_graphql_api_id

STRING

discount_allocations

ARRAY

amount

STRING

amount_set

OBJECT

presentment_money

OBJECT

amount

STRING

currency_code

STRING

shop_money

OBJECT

amount

STRING

currency_code

STRING

discount_application_index

INTEGER

fulfillable_quantity

INTEGER

fulfillment_service

STRING

fulfillment_status

STRING

gift_card

BOOLEAN

grams

INTEGER

id

INTEGER

name

STRING

pre_tax_price

STRING

pre_tax_price_set

OBJECT

presentment_money

OBJECT

amount

STRING

currency_code

STRING

shop_money

OBJECT

amount

STRING

currency_code

STRING

price

STRING

price_set

OBJECT

presentment_money

OBJECT

amount

STRING

currency_code

STRING

shop_money

OBJECT

amount

STRING

currency_code

STRING

product_exists

BOOLEAN

product_id

INTEGER

properties

ARRAY

name

STRING

value

STRING

quantity

INTEGER

requires_shipping

BOOLEAN

sku

STRING

tax_lines

ARRAY

price

STRING

price_set

OBJECT

presentment_money

OBJECT

amount

STRING

currency_code

STRING

shop_money

OBJECT

amount

STRING

currency_code

STRING

rate

NUMBER

title

STRING

taxable

BOOLEAN

title

STRING

total_discount

STRING

total_discount_set

OBJECT

presentment_money

OBJECT

amount

STRING

currency_code

STRING

shop_money

OBJECT

amount

STRING

currency_code

STRING

variant_id

INTEGER

variant_inventory_management

STRING

variant_title

STRING

vendor

STRING

line_item_id

INTEGER

location_id

INTEGER

quantity

INTEGER

restock_type

STRING

subtotal

NUMBER

subtotal_set

OBJECT

presentment_money

OBJECT

amount

STRING

currency_code

STRING

shop_money

OBJECT

amount

STRING

currency_code

STRING

total_tax

NUMBER

total_tax_set

OBJECT

presentment_money

OBJECT

amount

STRING

currency_code

STRING

shop_money

OBJECT

amount

STRING

currency_code

STRING

restock

BOOLEAN

transactions

ARRAY

admin_graphql_api_id

STRING

amount

NUMBER

authorization

STRING

created_at

STRING

currency

STRING

device_id

INTEGER

error_code

STRING

gateway

STRING

id

INTEGER

kind

STRING

location_id

INTEGER

message

STRING

order_id

INTEGER

parent_id

INTEGER

payment_details

OBJECT

acquirer_reference_number

STRING

avs_result_code

STRING

credit_card_bin

STRING

credit_card_company

STRING

credit_card_number

STRING

cvv_result_code

STRING

payments_refund_attributes

STRING

processed_at

STRING

status

STRING

payments_refund_attributes

OBJECT

acquirer_reference_number

STRING

status

STRING

processed_at

STRING

source_name

STRING

status

STRING

test

BOOLEAN

user_id

INTEGER

user_id

INTEGER

orders

The orders table contains info about a shop’s completed orders.

Order metafield data

To replicate order metafield data, you must set this table and the metafields table to replicate.

Replication Method

Key-based Incremental

Primary Key

id

Replication Key

updated_at

Useful links

Shopify documentation

orders schema on GitHub

Shopify API method

Join orders with on
abandoned_checkouts
orders.id = abandoned_checkouts.customer.last_order_id
orders.refunds.order_adjustments.order_id = abandoned_checkouts.customer.last_order_id
orders.fulfillments.line_items.product_id = abandoned_checkouts.line_items.product_id
orders.refunds.refund_line_items.line_item.product_id = abandoned_checkouts.line_items.product_id
orders.line_items.product_id = abandoned_checkouts.line_items.product_id
customers
orders.id = customers.last_order_id
orders.refunds.order_adjustments.order_id = customers.last_order_id
order_refunds
orders.id = order_refunds.order_id
orders.refunds.order_adjustments.order_id = order_refunds.order_id
orders.refunds.id = order_refunds.id
orders.refunds.order_adjustments.refund_id = order_refunds.id
orders.fulfillments.line_items.product_id = order_refunds.refund_line_items.line_item.product_id
orders.refunds.refund_line_items.line_item.product_id = order_refunds.refund_line_items.line_item.product_id
orders.line_items.product_id = order_refunds.refund_line_items.line_item.product_id
transactions
orders.id = transactions.order_id
orders.refunds.order_adjustments.order_id = transactions.order_id
collects
orders.fulfillments.line_items.product_id = collects.product_id
orders.refunds.refund_line_items.line_item.product_id = collects.product_id
orders.line_items.product_id = collects.product_id
products
orders.fulfillments.line_items.product_id = products.id
orders.refunds.refund_line_items.line_item.product_id = products.id
orders.line_items.product_id = products.id
orders.fulfillments.line_items.product_id = products.options.product_id
orders.refunds.refund_line_items.line_item.product_id = products.options.product_id
orders.line_items.product_id = products.options.product_id

admin_graphql_api_id

STRING

app_id

INTEGER

billing_address

OBJECT

address1

STRING

address2

STRING

city

STRING

company

STRING

country

STRING

country_code

STRING

first_name

STRING

last_name

STRING

latitude

NUMBER

longitude

NUMBER

name

STRING

phone

STRING

province

STRING

province_code

STRING

zip

STRING

browser_ip

STRING

buyer_accepts_marketing

BOOLEAN

cancel_reason

STRING

cancelled_at

DATE-TIME

cart_token

STRING

checkout_id

INTEGER

checkout_token

STRING

client_details

OBJECT

accept_language

STRING

browser_height

INTEGER

browser_ip

STRING

browser_width

INTEGER

session_hash

STRING

user_agent

STRING

closed_at

DATE-TIME

confirmed

BOOLEAN

contact_email

STRING

created_at

DATE-TIME

currency

STRING

current_subtotal_price

NUMBER

current_subtotal_price_set

OBJECT

current_total_additional_fees_set

OBJECT

presentment_money

OBJECT

amount

NUMBER

currency

STRING

shop_money

OBJECT

amount

NUMBER

currency

STRING

current_total_discounts

NUMBER

current_total_discounts_set

OBJECT

current_total_duties_set

OBJECT

current_total_price

NUMBER

current_total_price_set

OBJECT

current_total_tax

NUMBER

current_total_tax_set

OBJECT

customer

OBJECT

accepts_marketing

BOOLEAN

accepts_marketing_updated_at

DATE-TIME

STRING

addresses

ARRAY

address1

STRING

address2

STRING

city

STRING

company

STRING

country

STRING

country_code

STRING

country_name

STRING

customer_id

INTEGER

default

BOOLEAN

first_name

STRING

id

INTEGER

last_name

STRING

name

STRING

phone

STRING

province

STRING

province_code

STRING

zip

STRING

admin_graphql_api_id

STRING

created_at

DATE-TIME

currency

STRING

default_address

OBJECT

address1

STRING

address2

STRING

city

STRING

company

STRING

country

STRING

country_code

STRING

country_name

STRING

customer_id

INTEGER

default

BOOLEAN

first_name

STRING

id

INTEGER

last_name

STRING

name

STRING

phone

STRING

province

STRING

province_code

STRING

zip

STRING

email

STRING

email_marketing_consent

OBJECT

first_name

STRING

id

INTEGER

last_name

STRING

marketing_opt_in_level

STRING

multipass_identifier

STRING

note

STRING

phone

STRING

sms_marketing_consent

OBJECT

state

STRING

tags

STRING

tax_exempt

BOOLEAN

tax_exemptions

ARRAY

updated_at

DATE-TIME

verified_email

BOOLEAN

customer_locale

STRING

device_id

INTEGER

discount_applications

ARRAY

allocation_method

STRING

code

STRING

description

STRING

target_selection

STRING

target_type

STRING

title

STRING

type

STRING

value

NUMBER

value_type

STRING

discount_codes

ARRAY

amount

NUMBER

code

STRING

type

STRING

email

STRING

estimated_taxes

BOOLEAN

financial_status

STRING

fulfillment_status

STRING

fulfillments

ARRAY

admin_graphql_api_id

STRING

created_at

DATE-TIME

id

INTEGER

line_items

ARRAY

admin_graphql_api_id

STRING

applied_discount

INTEGER

applied_discounts

ARRAY

compare_at_price

STRING

destination_location

OBJECT

active

BOOLEAN

address1

STRING

address2

STRING

admin_graphql_api_id

STRING

city

STRING

country

STRING

country_code

STRING

country_name

STRING

created_at

DATE-TIME

id

INTEGER

legacy

BOOLEAN

localized_country_name

STRING

localized_province_name

STRING

name

STRING

phone

STRING

province

STRING

province_code

STRING

updated_at

DATE-TIME

zip

STRING

destination_location_id

INTEGER

discount_allocations

ARRAY

amount

NUMBER

discount_application_index

INTEGER

fulfillable_quantity

INTEGER

fulfillment_service

STRING

fulfillment_status

STRING

gift_card

BOOLEAN

grams

INTEGER

id

INTEGER, STRING

key

STRING

line_price

STRING

name

STRING

origin_location

OBJECT

active

BOOLEAN

address1

STRING

address2

STRING

admin_graphql_api_id

STRING

city

STRING

country

STRING

country_code

STRING

country_name

STRING

created_at

DATE-TIME

id

INTEGER

legacy

BOOLEAN

localized_country_name

STRING

localized_province_name

STRING

name

STRING

phone

STRING

province

STRING

province_code

STRING

updated_at

DATE-TIME

zip

STRING

origin_location_id

INTEGER

pre_tax_price

NUMBER

price

NUMBER

product_exists

BOOLEAN

product_id

INTEGER

properties

ARRAY

name

STRING

value

STRING

OBJECT

quantity

INTEGER

requires_shipping

BOOLEAN

sku

STRING

tax_code

STRING

tax_lines

ARRAY

channel_liable

BOOLEAN

compare_at

STRING

position

INTEGER

price

NUMBER

rate

NUMBER

source

STRING

title

STRING

zone

STRING

taxable

BOOLEAN

title

STRING

total_discount

NUMBER

variant_id

INTEGER

variant_inventory_management

STRING

variant_title

STRING

vendor

STRING

location_id

INTEGER

name

STRING

receipt

OBJECT

authorization

STRING

testcase

BOOLEAN

service

STRING

shipment_status

STRING

status

STRING

tracking_company

STRING

tracking_number

STRING

tracking_numbers

ARRAY

tracking_url

STRING

tracking_urls

ARRAY

updated_at

DATE-TIME

id

INTEGER

landing_site

STRING

landing_site_ref

STRING

line_items

ARRAY

admin_graphql_api_id

STRING

applied_discount

INTEGER

applied_discounts

ARRAY

compare_at_price

STRING

destination_location

OBJECT

active

BOOLEAN

address1

STRING

address2

STRING

admin_graphql_api_id

STRING

city

STRING

country

STRING

country_code

STRING

country_name

STRING

created_at

DATE-TIME

id

INTEGER

legacy

BOOLEAN

localized_country_name

STRING

localized_province_name

STRING

name

STRING

phone

STRING

province

STRING

province_code

STRING

updated_at

DATE-TIME

zip

STRING

destination_location_id

INTEGER

discount_allocations

ARRAY

amount

NUMBER

discount_application_index

INTEGER

fulfillable_quantity

INTEGER

fulfillment_service

STRING

fulfillment_status

STRING

gift_card

BOOLEAN

grams

INTEGER

id

INTEGER, STRING

key

STRING

line_price

STRING

name

STRING

origin_location

OBJECT

active

BOOLEAN

address1

STRING

address2

STRING

admin_graphql_api_id

STRING

city

STRING

country

STRING

country_code

STRING

country_name

STRING

created_at

DATE-TIME

id

INTEGER

legacy

BOOLEAN

localized_country_name

STRING

localized_province_name

STRING

name

STRING

phone

STRING

province

STRING

province_code

STRING

updated_at

DATE-TIME

zip

STRING

origin_location_id

INTEGER

pre_tax_price

NUMBER

price

NUMBER

product_exists

BOOLEAN

product_id

INTEGER

properties

ARRAY

name

STRING

value

STRING

OBJECT

quantity

INTEGER

requires_shipping

BOOLEAN

sku

STRING

tax_code

STRING

tax_lines

ARRAY

channel_liable

BOOLEAN

compare_at

STRING

position

INTEGER

price

NUMBER

rate

NUMBER

source

STRING

title

STRING

zone

STRING

taxable

BOOLEAN

title

STRING

total_discount

NUMBER

variant_id

INTEGER

variant_inventory_management

STRING

variant_title

STRING

vendor

STRING

location_id

INTEGER

merchant_of_record_app_id

INTEGER

name

STRING

note

STRING

note_attributes

ARRAY

name

STRING

value

STRING

number

INTEGER

order_adjustments

ARRAY

amount

NUMBER

amount_set

OBJECT

id

INTEGER

kind

STRING

order_id

INTEGER

reason

STRING

refund_id

INTEGER

tax_amount

NUMBER

tax_amount_set

OBJECT

order_number

INTEGER

order_status_url

STRING

original_total_additional_fees_set

OBJECT

presentment_money

OBJECT

amount

NUMBER

currency

STRING

shop_money

OBJECT

amount

NUMBER

currency

STRING

original_total_duties_set

OBJECT

payment_gateway_names

ARRAY

payment_terms

OBJECT

amount

INTEGER, STRING

currency

STRING

due_in_days

INTEGER

payment_schedules

ARRAY

amount

INTEGER, STRING

completed_at

STRING

currency

STRING

due_at

DATE-TIME

expected_payment_method

STRING

issued_at

DATE-TIME

payment_terms_name

STRING

payment_terms_type

STRING

phone

STRING

poNumber

STRING

presentment_currency

STRING

processed_at

DATE-TIME

reference

STRING

referring_site

STRING

refunds

ARRAY

admin_graphql_api_id

STRING

created_at

DATE-TIME

id

INTEGER

note

STRING

order_adjustments

ARRAY

amount

NUMBER

amount_set

OBJECT

id

INTEGER

kind

STRING

order_id

INTEGER

reason

STRING

refund_id

INTEGER

tax_amount

NUMBER

tax_amount_set

OBJECT

processed_at

DATE-TIME

refund_line_items

ARRAY

id

INTEGER

line_item

OBJECT

admin_graphql_api_id

STRING

applied_discount

INTEGER

applied_discounts

ARRAY

compare_at_price

STRING

destination_location

OBJECT

active

BOOLEAN

address1

STRING

address2

STRING

admin_graphql_api_id

STRING

city

STRING

country

STRING

country_code

STRING

country_name

STRING

created_at

DATE-TIME

id

INTEGER

legacy

BOOLEAN

localized_country_name

STRING

localized_province_name

STRING

name

STRING

phone

STRING

province

STRING

province_code

STRING

updated_at

DATE-TIME

zip

STRING

destination_location_id

INTEGER

discount_allocations

ARRAY

amount

NUMBER

discount_application_index

INTEGER

fulfillable_quantity

INTEGER

fulfillment_service

STRING

fulfillment_status

STRING

gift_card

BOOLEAN

grams

INTEGER

id

INTEGER, STRING

key

STRING

line_price

STRING

name

STRING

origin_location

OBJECT

active

BOOLEAN

address1

STRING

address2

STRING

admin_graphql_api_id

STRING

city

STRING

country

STRING

country_code

STRING

country_name

STRING

created_at

DATE-TIME

id

INTEGER

legacy

BOOLEAN

localized_country_name

STRING

localized_province_name

STRING

name

STRING

phone

STRING

province

STRING

province_code

STRING

updated_at

DATE-TIME

zip

STRING

origin_location_id

INTEGER

pre_tax_price

NUMBER

price

NUMBER

product_exists

BOOLEAN

product_id

INTEGER

properties

ARRAY

name

STRING

value

STRING

OBJECT

quantity

INTEGER

requires_shipping

BOOLEAN

sku

STRING

tax_code

STRING

tax_lines

ARRAY

channel_liable

BOOLEAN

compare_at

STRING

position

INTEGER

price

NUMBER

rate

NUMBER

source

STRING

title

STRING

zone

STRING

taxable

BOOLEAN

title

STRING

total_discount

NUMBER

variant_id

INTEGER

variant_inventory_management

STRING

variant_title

STRING

vendor

STRING

line_item_id

INTEGER

location_id

INTEGER

quantity

INTEGER

restock_type

STRING

subtotal

NUMBER

total_tax

NUMBER

restock

BOOLEAN

user_id

INTEGER

shipping_address

OBJECT

address1

STRING

address2

STRING

city

STRING

company

STRING

country

STRING

country_code

STRING

first_name

STRING

last_name

STRING

latitude

NUMBER

longitude

NUMBER

name

STRING

phone

STRING

province

STRING

province_code

STRING

zip

STRING

shipping_lines

ARRAY

carrier_identifier

STRING

code

STRING

delivery_category

STRING

discount_allocations

ARRAY

amount

NUMBER

discount_application_index

INTEGER

discounted_price

NUMBER

id

INTEGER

phone

STRING

price

NUMBER

requested_fulfillment_service_id

STRING

source

STRING

tax_lines

ARRAY

channel_liable

BOOLEAN

compare_at

STRING

position

INTEGER

price

NUMBER

rate

NUMBER

source

STRING

title

STRING

zone

STRING

title

STRING

source_identifier

STRING

source_name

STRING

source_url

STRING

subtotal_price

NUMBER

tags

STRING

taxExempt

BOOLEAN

tax_lines

ARRAY

channel_liable

BOOLEAN

compare_at

STRING

position

INTEGER

price

NUMBER

rate

NUMBER

source

STRING

title

STRING

zone

STRING

taxes_included

BOOLEAN

test

BOOLEAN

token

STRING

total_discounts

NUMBER

total_line_items_price

NUMBER

total_outstanding

NUMBER

total_price

NUMBER

total_tax

NUMBER

total_tip_received

STRING

total_weight

INTEGER

updated_at

DATE-TIME

user_id

INTEGER

products

The products table contains info about a shop’s products.

Product metafield data

To replicate product metafield data, you must set this table and the metafields table to replicate.

Replication Method

Key-based Incremental

Primary Key

id

Replication Key

updated_at

Useful links

Shopify documentation

products schema on GitHub

Shopify API method

Join products with on
abandoned_checkouts
products.id = abandoned_checkouts.line_items.product_id
products.options.product_id = abandoned_checkouts.line_items.product_id
collects
products.id = collects.product_id
products.options.product_id = collects.product_id
order_refunds
products.id = order_refunds.refund_line_items.line_item.product_id
products.options.product_id = order_refunds.refund_line_items.line_item.product_id
orders
products.id = orders.fulfillments.line_items.product_id
products.options.product_id = orders.fulfillments.line_items.product_id
products.id = orders.refunds.refund_line_items.line_item.product_id
products.options.product_id = orders.refunds.refund_line_items.line_item.product_id
products.id = orders.line_items.product_id
products.options.product_id = orders.line_items.product_id

admin_graphql_api_id

STRING

body_html

STRING

created_at

DATE-TIME

handle

STRING

id

INTEGER

image

OBJECT

admin_graphql_api_id

STRING

alt

STRING

created_at

DATE-TIME

height

INTEGER

id

INTEGER

position

INTEGER

src

STRING

updated_at

DATE-TIME

variant_ids

ARRAY

width

INTEGER

images

ARRAY

admin_graphql_api_id

STRING

alt

STRING

created_at

DATE-TIME

height

INTEGER

id

INTEGER

position

INTEGER

src

STRING

updated_at

DATE-TIME

variant_ids

ARRAY

width

INTEGER

options

ARRAY

id

INTEGER

name

STRING

position

INTEGER

product_id

INTEGER

values

ARRAY

product_type

STRING

published_at

DATE-TIME

published_scope

STRING

status

STRING

tags

STRING

template_suffix

STRING

title

STRING

updated_at

DATE-TIME

variants

ARRAY

admin_graphql_api_id

STRING

barcode

STRING

compare_at_price

NUMBER

created_at

DATE-TIME

fulfillment_service

STRING

grams

INTEGER

id

INTEGER

image_id

INTEGER

inventory_item_id

INTEGER

inventory_management

STRING

inventory_policy

STRING

inventory_quantity

INTEGER

old_inventory_quantity

INTEGER

option1

STRING

option2

STRING

option3

STRING

position

INTEGER

price

NUMBER

product_id

INTEGER

requires_shipping

BOOLEAN

sku

STRING

tax_code

STRING

taxable

BOOLEAN

title

STRING

updated_at

DATE-TIME

weight

NUMBER

weight_unit

STRING

vendor

STRING

transactions

The transactions table contains info about transactions.

Replication Method

Key-based Incremental

Primary Key

id

Replication Key

created_at

Useful links

transactions schema on GitHub

Shopify API method

Join transactions with on
abandoned_checkouts
transactions.order_id = abandoned_checkouts.customer.last_order_id
customers
transactions.order_id = customers.last_order_id
order_refunds
transactions.order_id = order_refunds.order_id
orders
transactions.order_id = orders.id
transactions.order_id = orders.refunds.order_adjustments.order_id

admin_graphql_api_id

STRING

amount

NUMBER

authorization

STRING

created_at

STRING

currency

STRING

device_id

INTEGER

error_code

STRING

gateway

STRING

id

INTEGER

kind

STRING

location_id

INTEGER

message

STRING

order_id

INTEGER

parent_id

INTEGER

payment_details

OBJECT

avs_result_code

STRING

credit_card_bin

STRING

credit_card_company

STRING

credit_card_expiration_month

INTEGER

credit_card_expiration_year

INTEGER

credit_card_name

STRING

credit_card_number

STRING

credit_card_wallet

STRING

cvv_result_code

STRING

payment_id

STRING

payments_refund_attributes

OBJECT

acquirer_reference_number

STRING

status

STRING

processed_at

STRING

receipt

OBJECT

fee_amount

NUMBER

gross_amount

NUMBER

tax_amount

NUMBER

source_name

STRING

status

STRING

test

BOOLEAN

total_unsettled_set

OBJECT

presentment_money

OBJECT

amount

NUMBER

currency

STRING

shop_money

OBJECT

amount

NUMBER

currency

STRING

user_id

INTEGER


Questions? Feedback?

Did this article help? If you have questions or feedback, feel free to submit a pull request with your suggestions, open an issue on GitHub, or reach out to us.