Sync data from Shopify to your warehouse destination via RudderStack.
5 minute read
RudderStack’s Cloud Extract (ETL) product will be sunset on December 1, 2025. See this release note for more details.
Shopify is a popular ecommerce platform that gives you all tools to start, run, and grow your business effectively. It offers online retailers a variety of services around digital payments, marketing, product shipping, customer engagement and retention, and more.
This document guides you in setting up Shopify as a source in RudderStack. Once configured, RudderStack automatically ingests your Shopify data and routes it to your specified data warehouse destination.
Go to Sources > New source > Cloud Extract and select Shopify from the list of sources.
Assign a name to your source and click Continue.
Connection settings
Enter the following connection credentials to set up the Shopify source
Shopify Store: Enter the name of your Shopify store from the URL. For example, if your URL is https://NAME.myshopify.com, then the store name would be NAME.
Replication Start Date: Select the date from when RudderStack should ingest your Shopify data. RudderStack will not replicate any data before this date.
API Password: Enter the Admin API access token which you can obtain by following the below steps:
You can see the Admin API access token in the API credentials tab.
Destination settings
The following settings specify how RudderStack sends the data ingested from Shopify to the connected warehouse destination:
Table prefix: RudderStack uses this prefix to create a table in your data warehouse and loads all your Shopify data into it.
Note that RudderStack does not add special characters like - or _ to the prefix by default. Hence, you need to specify it while setting the prefix.
Schedule Settings: RudderStack gives you three options to ingest the data from Shopify:
Basic: Runs the syncs at the specified time interval.
CRON: Runs the syncs based on the user-defined CRON expression.
Manual: You are required to run the syncs manually.
For more information on the schedule types, refer to the Common Settings guide.
Selecting the data to import
You can choose the Shopify data you want to ingest by selecting the required resources. The below table mentions the sync type, API endpoints and the required scopes for these resources where id is a common primary key for all:
Resource
Sync type
Shopify API endpoint
Articles
Incremental
/articles.json
MetafieldArticles
Incremental
/articles/[object_id]/metafields.json
Blogs
Incremental
/blogs.json
MetafieldBlogs
Incremental
/blogs/[object_id]/metafields.json
Customers
Incremental
/customers.json
MetafieldCustomers
Incremental
/customers/[object_id]/metafields.json
Orders
Incremental
/orders.json
MetafieldOrders
Incremental
/orders/[object_id]/metafields.json
DraftOrders
Incremental
/draft_orders.json
MetafieldDraftOrders
Incremental
/draft_orders/[object_id]/metafields.json
Products
Incremental
/products.json
MetafieldProducts
Incremental
/products/[object_id]/metafields.json
ProductImages
Incremental
/products/{product_id}/images.json
MetafieldProductImages
Incremental
/product_images/{image_id}/metafields.json
ProductVariants
Incremental
products/{product_id}/variants.json
MetafieldProductVariants
Incremental
variants/{variant_id}/metafields.json
AbandonedCheckouts
Incremental
checkouts.json
CustomCollections
Incremental
custom_collections.json
SmartCollections
Incremental
smart_collections
MetafieldSmartCollections
Incremental
/smart_collections/[object_id]/metafields.json
Collects
Incremental
collects.json
Collections
Incremental
collections/{collection_id}.json
MetafieldCollections
Incremental
collections/{object_id}/metafields.json
BalanceTransactions
Incremental
shopify_payments/balance/transactions.json
OrderRefunds(Sub resource)
Incremental
orders/{order_id}/refunds.json
OrderRisks
Incremental
orders/{order_id}/risks.json
Transactions
Incremental
orders/{order_id}/transactions.json
TenderTransactions
Incremental
tender_transactions.json
Pages
Incremental
pages.json
MetafieldPages
Incremental
/pages/[object_id]/metafields.json
PriceRules
Incremental
price_rules.json
DiscountCodes
Incremental
price_rules/{price_rule_id}/discount_codes.json
Locations
Full Refresh
locations.json
MetafieldLocations
Incremental
/locations/[object_id]/metafields.json
InventoryLevels
Incremental
locations/{location_id}/inventory_levels.json
InventoryItems
Incremental
inventory_items.json?ids={ids}
FulfillmentOrders
Incremental
orders/{order_id}/fulfillment_orders.json
Fulfillments
Incremental
orders/{order_id}/fulfillments.json
Shop
Full Refresh
shop.json
MetafieldShops
Incremental
metafields.json
For more information on the Full Refresh and Incremental sync modes, refer to the Common Settings guide.
Shopify is now configured as a source. RudderStack will start ingesting data from Shopify as per your specified schedule and frequency.
You can further connect this source to your data warehouse by clicking on Add Destination, as shown:
Use the Use Existing Destination option if you have an already-configured data warehouse destination in RudderStack. To configure a data warehouse destination from scratch, select the Create New Destination button.
FAQ
Is it possible to have multiple Cloud Extract sources writing to the same schema?
Yes, it is.
RudderStack associates a table prefix for every Cloud Extract source writing to a warehouse schema. This way, multiple Cloud Extract sources can write to the same schema with different table prefixes.
How does RudderStack count the events for Cloud Extract sources?
RudderStack counts the number of records returned by the source APIs when queried during each sync. It considers each record as an event.
How does RudderStack set the table name for the data sent via Cloud Extract sources?
RudderStack sets the table name for the resource you are syncing to the warehouse by adding rudder_ to the Table prefix you set while configuring your Cloud Extract source in the dashboard.
For example, if you set test_ as the Table prefix in the dashboard, RudderStack sets the table name as test_rudder_<resource_name>, where <resource_name> is the name of the resource you are syncing (for example, contacts, messages, etc.).
Note that RudderStack does not add the character _ to the prefix by default. Hence, you need to specify it while setting the prefix.
This site uses cookies to improve your experience while you navigate through the website. Out of
these
cookies, the cookies that are categorized as necessary are stored on your browser as they are as
essential
for the working of basic functionalities of the website. We also use third-party cookies that
help
us
analyze and understand how you use this website. These cookies will be stored in your browser
only
with
your
consent. You also have the option to opt-out of these cookies. But opting out of some of these
cookies
may
have an effect on your browsing experience.
Necessary
Always Enabled
Necessary cookies are absolutely essential for the website to function properly. This
category only includes cookies that ensures basic functionalities and security
features of the website. These cookies do not store any personal information.
This site uses cookies to improve your experience. If you want to
learn more about cookies and why we use them, visit our cookie
policy. We'll assume you're ok with this, but you can opt-out if you wish Cookie Settings.