Shopify
Shopify is an ecommerce platform that has everything you need to sell online, on social media, or in person.
Features
| Feature Name | Supported | Notes |
|---|---|---|
| Capture deletes | check | ADJUSTMENT_ORDER_TRANSACTION, APP, BALANCE_TRANSACTION, CATALOG, ABANDONED_CHECKOUT, COLLECTION, COMPANY, COMPANY_CONTACT, CUSTOMER, DISPUTE, CUSTOMER_SEGMENT, DRAFT_ORDER, FULFILLMENT_EVENT, DISCOUNT_AUTOMATIC_APP, DISCOUNT_AUTOMATIC_BASIC, DISCOUNT_AUTOMATIC_BXGY, DISCOUNT_AUTOMATIC_FREE_SHIPPING, DISCOUNT_CODE_APP, DISCOUNT_CODE_BASIC, DISCOUNT_CODE_BXGY, DISCOUNT_CODE_FREE_SHIPPING, DISCOUNT_CUSTOMER_BUYS_COLLECTION, DISCOUNT_CUSTOMER_BUYS_PRODUCT, DISCOUNT_CUSTOMER_BUYS_PRODUCT_VARIANT, DISCOUNT_CUSTOMER_GETS_COLLECTION, DISCOUNT_CUSTOMER_GETS_PRODUCT, DISCOUNT_CUSTOMER_GETS_PRODUCT_VARIANT, DISCOUNT_CUSTOMER_SEGMENT_SELECTION, DISCOUNT_CUSTOMER_SELECTION, DISCOUNT_DESTINATION_SELECTION_COUNTRY, DISCOUNT_REDEEM_CODE, DISCOUNT_SHAREABLE_URL, GIFT_CARD, INVENTORY_ITEM, LOCATION, ORDER, PAYOUT, PRODUCT, PRODUCT_PUBLICATION, PUBLICATION, SHOP, and USER tables. |
| History mode | ||
| Custom data | check | ABANDONED_CHECKOUT, ABANDONED_CHECKOUT_LINE, ORDER, ORDER_LINE, and DRAFT_ORDER_LINE tables. |
| Data blocking | check | |
| Column hashing | ||
| Re-sync | check | |
| API configurable | check | API configuration |
| Priority-first sync | check | ABANDONED_CHECKOUT, COLLECTION, COMPANY, CUSTOMER, CUSTOMER_VISIT, DRAFT_ORDER, ORDER, PRICE_RULE, PRODUCT, and TENDER_TRANSACTION tables. |
| Fivetran data models | check | |
| Private networking | ||
| Authorization via API | check |
The Shopify connector supports Shopify Plus accounts. Shopify Plus is an enterprise ecommerce platform. You can sync data from the GIFT_CARD and USER tables.
Supported deployment models
We support the SaaS Deployment model for the connector.
Setup guide
Follow our step-by-step Shopify setup guide to connect Shopify with your destination using Fivetran connectors.
Sync overview
We use hard deletes to remove records from the following tables:
ABANDONED_CHECKOUT_DISCOUNT_CODEABANDONED_CHECKOUT_LINEABANDONED_CHECKOUT_SHIPPING_LINEABANDONED_CHECKOUT_URL_TAGCOLLECTION_METAFIELDCUSTOMER_ADDRESSCUSTOMER_METAFIELDCUSTOMER_TAGCUSTOMER_TAX_EXEMPTIONDISCOUNT_ALLOCATIONDISCOUNT_APPLICATIONDRAFT_ORDER_LINEDRAFT_ORDER_LINE_TAX_LINEDRAFT_ORDER_METAFIELDDRAFT_ORDER_NOTE_ATTRIBUTEDRAFT_ORDER_TAGFULFILLMENT_ORDERFULFILLMENT_ORDER_FULFILLMENT_HOLDFULFILLMENT_ORDER_LINE_ITEMMEDIA_ERRORMEDIA_FILE_ERRORMEDIA_SOURCEMEDIA_WARNINGORDER_DISCOUNT_CODEORDER_LINEORDER_METAFIELDORDER_NOTE_ATTRIBUTEORDER_RISK_ASSESSMENTORDER_SHIPPING_LINEORDER_SHIPPING_TAX_LINEORDER_TAGORDER_URL_TAGPRICE_RULE_ENT_COLLECTIONPRICE_RULE_ENT_COUNTRYPRICE_RULE_ENT_PRODUCTPRICE_RULE_ENT_VARIANTPRICE_RULE_PREREQ_COLLECTIONPRICE_RULE_PREREQ_CUSTOMERPRICE_RULE_PREREQ_CUSTOMER_SEGMENTPRICE_RULE_PREREQ_PRODUCTPRICE_RULE_PREREQ_VARIANTPRODUCT_IMAGEPRODUCT_IMAGE_METAFIELDPRODUCT_MEDIAPRODUCT_MEDIA_METAFIELDPRODUCT_METAFIELDPRODUCT_TAGPRODUCT_VARIANTPRODUCT_VARIANT_MEDIAPRODUCT_VARIANT_METAFIELDRETURNRETURN_LINE_ITEMRETURN_SHIPPING_FEETAX_LINE
Incremental sync
We cannot track incremental updates for the following tables because the necessary parameters are not available in Shopify's API:
APPCATALOGCUSTOMER_SAVED_SEARCHCUSTOMER_SEGMENTSPRODUCT_PUBLICATIONDISCOUNT_AUTOMATIC_APPDISCOUNT_AUTOMATIC_BASICDISCOUNT_AUTOMATIC_BXGYDISCOUNT_AUTOMATIC_FREE_SHIPPINGDISCOUNT_CODE_APPDISCOUNT_CODE_BASICDISCOUNT_CODE_BXGYDISCOUNT_CODE_FREE_SHIPPINGDISCOUNT_CUSTOMER_BUYS_COLLECTIONDISCOUNT_CUSTOMER_BUYS_PRODUCTDISCOUNT_CUSTOMER_BUYS_PRODUCT_VARIANTDISCOUNT_CUSTOMER_GETS_COLLECTIONDISCOUNT_CUSTOMER_GETS_PRODUCTDISCOUNT_CUSTOMER_GETS_PRODUCT_VARIANTDISCOUNT_CUSTOMER_SEGMENT_SELECTIONDISCOUNT_CUSTOMER_SELECTIONDISCOUNT_DESTINATION_SELECTION_COUNTRYDISCOUNT_REDEEM_CODEDISCOUNT_SHAREABLE_URLDISPUTEGIFT_CARDLOCATIONMETAFIELD (SHOP)PAYOUTPUBLICATIONSHOPUSER
As a result, we sync data for the above tables once a day. However, you can sync the latest data by syncing each table manually. See our table re-sync documentation for more information. We sync metafields with the owner resource as shop once a day, and sync other resource metafields incrementally based on their parent endpoint.
We sync the following tables daily if the sync takes less than 30 minutes. Otherwise, we sync them weekly on Saturdays.
DISCOUNT_AUTOMATIC_APPDISCOUNT_AUTOMATIC_BASICDISCOUNT_AUTOMATIC_BXGYDISCOUNT_AUTOMATIC_FREE_SHIPPINGDISCOUNT_CODE_APPDISCOUNT_CODE_BASICDISCOUNT_CODE_BXGYDISCOUNT_CODE_FREE_SHIPPINGDISCOUNT_CUSTOMER_BUYS_COLLECTIONDISCOUNT_CUSTOMER_BUYS_PRODUCTDISCOUNT_CUSTOMER_BUYS_PRODUCT_VARIANTDISCOUNT_CUSTOMER_GETS_COLLECTIONDISCOUNT_CUSTOMER_GETS_PRODUCTDISCOUNT_CUSTOMER_GETS_PRODUCT_VARIANTDISCOUNT_CUSTOMER_SEGMENT_SELECTIONDISCOUNT_CUSTOMER_SELECTIONDISCOUNT_DESTINATION_SELECTION_COUNTRYDISCOUNT_REDEEM_CODEDISCOUNT_SHAREABLE_URL
Historical sync time frame
You can configure the historical sync time frame when setting up your connection to speed up both the initial sync and subsequent re-syncs. Historical sync time frame limits the amount of data synced for the following tables:
ABANDONED_APPLIED_DISCOUNTABANDONED_CHECKOUTABANDONED_CHECKOUT_DISCOUNT_CODEABANDONED_CHECKOUT_LINEABANDONED_CHECKOUT_SHIPPING_LINEABANDONED_CHECKOUT_TAX_LINEABANDONED_CHECKOUT_URL_TAGAPPLIED_GIFT_CARDCUSTOMER_VISITDISCOUNT_ALLOCATIONDISCOUNT_APPLICATIONDRAFT_ORDERDRAFT_ORDER_LINEDRAFT_ORDER_LINE_TAX_LINEDRAFT_ORDER_NOTE_ATTRIBUTEDRAFT_ORDER_TAGFULFILLMENTFULFILLMENT_EVENTFULFILLMENT_ORDERFULFILLMENT_ORDER_FULFILLMENT_HOLDFULFILLMENT_ORDER_LINE_ITEMFULFILLMENT_ORDER_LINEORDERORDER_ADJUSTMENTORDER_DISCOUNT_CODEORDER_LINEORDER_LINE_REFUNDORDER_NOTE_ATTRIBUTEORDER_RISKORDER_RISK_ASSESSMENTORDER_RISK_FACTORDER_RISK_SUMMARYORDER_SHIPPING_LINEORDER_SHIPPING_TAX_LINEORDER_TAGORDER_URL_TAGREFUNDRETURNRETURN_LINE_ITEMRETURN_SHIPPING_FEETAX_LINETENDER_TRANSACTIONTRANSACTION
We apply the selected start date only to these tables, as they contain data that you are less likely to reference later. For example, you still may want to refer to a product collection created two years ago, so we don't apply the start date to the COLLECTION table. However, you are unlikely to refer to an order created 10 years ago, which is why we apply the start date to the ORDER table.
You can modify the historical sync time frame at any time.
- If you set it to an earlier date, we perform a full historical re-sync during the next scheduled sync, retrieving data starting from that new date.
- If you set it to a later date, we don’t delete any existing data. Instead, we apply the new time frame only to subsequent re-syncs.
Sync limitations
If an update to a child object does not trigger an update in its parent object, we do not capture the update until the parent object is updated. For example:
- If the
productVariantMetafieldobject is updated, we do not capture the update until its parent object,product, is updated. - If the
damagedinventory quantity is updated, theupdatedAttimestamp of its parent object,product, remains unchanged, and we do not capture the update. However, if theavailableinventory quantity is updated, theupdatedAttimestamp of its parent object,product, is updated, and we capture the update.
Schema information
This schema applies to all Fivetran accounts created on or after August 1, 2025.
This schema applies to all Fivetran accounts created before August 1, 2025.
Metafields
Fivetran supports Shopify's Metafield resource. We support the metafields of the following tables:
COLLECTIONCUSTOMERDRAFT_ORDERORDERPRODUCTPRODUCT_IMAGEPRODUCT_VARIANTSHOP
To sync your Shopify account's metafields to your destination, you must sync the METAFIELD table. Also, sync all applicable metafields of any resources for which you have configured metafields. For example, the COLLECTION_METAFIELD or CUSTOMER_METAFIELD table.
All the metafields data for the resources you have selected will appear in the METAFIELD table in your destination following the next incremental sync. The owner column indicates the resource the metafields data refers to.
Web pixels data
Our connector supports syncing web pixels event data. We sync all the standard Shopify web pixels events that are sent by the Shopify web pixels and sync them in the following tables:
ALERT_DISPLAYED_EVENTCART_ATTRIBUTE_EVENTCART_LINE_EVENTCART_VIEWED_EVENTCHECKOUT_ATTRIBUTES_EVENTCHECKOUT_DELIVERY_OPTION_EVENTCHECKOUT_DISCOUNT_APPLICATION_EVENTCHECKOUT_EVENTCHECKOUT_LINE_ITEM_DISCOUNT_ALLOCATION_EVENTCHECKOUT_LINE_ITEM_EVENTCHECKOUT_LINE_ITEM_PROPERTY_EVENTCHECKOUT_TRANSACTION_EVENTCOLLECTION_VIEWED_EVENTCOLLECTION_VIEWED_PRODUCT_VARIANT_EVENTPAGE_VIEWED_EVENTPRODUCT_ADDED_TO_CART_EVENTPRODUCT_REMOVED_FROM_CART_EVENTPRODUCT_VIEWED_EVENTSEARCH_RESULT_PRODUCT_VARIANT_EVENTSEARCH_SUBMITTED_EVENTUI_EXTENSION_ERRORED_EVENT
We use the CHECKOUT_EVENT table and its child tables to store data from the following Shopify checkout-related events:
checkout_address_info_submitted_eventcheckout_completed_eventcheckout_contact_info_submitted_eventcheckout_shipping_info_submitted_eventcheckout_started_eventpayment_info_submitted_event
You can choose what records to sync into the CHECKOUT_EVENT and its child tables by selecting or deselecting the corresponding event names in the connector schema dashboard.
This feature is available only for connections created using Fivetran’s Shopify public app.
- Only one connection per shop supports the synchronization of web pixels data. If you have multiple connections for the same Shopify store, only one connection syncs the web pixels data.
- When you enable any web pixels–related tables in the connection, Fivetran registers a Shopify Web Pixel Extension on your storefront. This runs securely in Shopify’s sandboxed environment and follows Shopify’s customer consent rules.
- If your site has privacy or performance guidelines, we recommend that you check with your team before enabling these tables. You can disable this behavior by disabling all web pixel–related tables in your connection.
- For more information, see Shopify Web Pixels documentation.
Syncing empty tables and columns
The Shopify connection doesn't support the creation of empty tables and columns in your destination.
We create a table in the destination only if we can retrieve the table data from the source. If Shopify doesn’t return data for the source table, we don’t create the table in your destination.
Shopify API access scopes
The API access scopes listed in this section are applicable only for the Shopify connections created using a non-Fivetran app (custom, private or another public app).
Fivetran requires the following authenticated access scopes for Shopify's Admin API:
read_all_ordersread_assigned_fulfillment_ordersread_customersread_discountsread_draft_ordersread_filesread_fulfillmentsread_inventoryread_localesread_locationsread_merchant_managed_fulfillment_ordersread_ordersread_price_rulesread_product_listingsread_productsread_publicationsread_returnsread_shippingread_shopify_payments_accountsread_shopify_payments_disputesread_shopify_payments_payoutsread_third_party_fulfillment_ordersread_customer_eventswrite_pixels
The read_gift_cards and read_users scopes are available only for Shopify Plus accounts. To sync data from the GIFT_CARD and USER tables, contact Shopify Support to enable these scopes for your account.