Shopify

Setup Shopify with DinMo's ingestion capabilities.

Sync overview

We use hard deletes to remove records from the following tables:

  • ABANDONED_CHECKOUT_DISCOUNT_CODE

  • ABANDONED_CHECKOUT_LINE

  • ABANDONED_CHECKOUT_SHIPPING_LINE

  • ABANDONED_CHECKOUT_URL_TAG

  • COLLECTION_METAFIELD

  • CUSTOMER_ADDRESS

  • CUSTOMER_METAFIELD

  • CUSTOMER_TAG

  • CUSTOMER_TAX_EXEMPTION

  • DISCOUNT_ALLOCATION

  • DISCOUNT_APPLICATION

  • DRAFT_ORDER_LINE

  • DRAFT_ORDER_LINE_TAX_LINE

  • DRAFT_ORDER_METAFIELD

  • DRAFT_ORDER_NOTE_ATTRIBUTE

  • DRAFT_ORDER_TAG

  • FULFILLMENT_ORDER

  • FULFILLMENT_ORDER_FULFILLMENT_HOLD

  • FULFILLMENT_ORDER_LINE_ITEM

  • MEDIA_ERROR

  • MEDIA_FILE_ERROR

  • MEDIA_SOURCE

  • MEDIA_WARNING

  • ORDER_DISCOUNT_CODE

  • ORDER_LINE

  • ORDER_METAFIELD

  • ORDER_NOTE_ATTRIBUTE

  • ORDER_RISK_ASSESSMENT

  • ORDER_SHIPPING_LINE

  • ORDER_SHIPPING_TAX_LINE

  • ORDER_TAG

  • ORDER_URL_TAG

  • PRICE_RULE_ENT_COLLECTION

  • PRICE_RULE_ENT_COUNTRY

  • PRICE_RULE_ENT_PRODUCT

  • PRICE_RULE_ENT_VARIANT

  • PRICE_RULE_PREREQ_COLLECTION

  • PRICE_RULE_PREREQ_CUSTOMER

  • PRICE_RULE_PREREQ_CUSTOMER_SEGMENT

  • PRICE_RULE_PREREQ_PRODUCT

  • PRICE_RULE_PREREQ_VARIANT

  • PRODUCT_IMAGE

  • PRODUCT_IMAGE_METAFIELD

  • PRODUCT_MEDIA

  • PRODUCT_MEDIA_METAFIELD

  • PRODUCT_METAFIELD

  • PRODUCT_TAG

  • PRODUCT_VARIANT

  • PRODUCT_VARIANT_MEDIA

  • PRODUCT_VARIANT_METAFIELD

  • RETURN

  • RETURN_LINE_ITEM

  • RETURN_SHIPPING_FEE

  • TAX_LINE

Incremental sync

We cannot track incremental updates for the following tables because the necessary parameters are not available in Shopify's API:

  • APP

  • CATALOG

  • CUSTOMER_SAVED_SEARCH

  • CUSTOMER_SEGMENTS

  • PRODUCT_PUBLICATION

  • 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

  • DISPUTE

  • GIFT_CARD

  • LOCATION

  • METAFIELD (SHOP)

  • PAYOUT

  • PUBLICATION

  • SHOP

  • USER

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_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

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_DISCOUNT

  • ABANDONED_CHECKOUT

  • ABANDONED_CHECKOUT_DISCOUNT_CODE

  • ABANDONED_CHECKOUT_LINE

  • ABANDONED_CHECKOUT_SHIPPING_LINE

  • ABANDONED_CHECKOUT_TAX_LINE

  • ABANDONED_CHECKOUT_URL_TAG

  • APPLIED_GIFT_CARD

  • CUSTOMER_VISIT

  • DISCOUNT_ALLOCATION

  • DISCOUNT_APPLICATION

  • DRAFT_ORDER

  • DRAFT_ORDER_LINE

  • DRAFT_ORDER_LINE_TAX_LINE

  • DRAFT_ORDER_NOTE_ATTRIBUTE

  • DRAFT_ORDER_TAG

  • FULFILLMENT

  • FULFILLMENT_EVENT

  • FULFILLMENT_ORDER

  • FULFILLMENT_ORDER_FULFILLMENT_HOLD

  • FULFILLMENT_ORDER_LINE_ITEM

  • FULFILLMENT_ORDER_LINE

  • ORDER

  • ORDER_ADJUSTMENT

  • ORDER_DISCOUNT_CODE

  • ORDER_LINE

  • ORDER_LINE_REFUND

  • ORDER_NOTE_ATTRIBUTE

  • ORDER_RISK

  • ORDER_RISK_ASSESSMENT

  • ORDER_RISK_FACT

  • ORDER_RISK_SUMMARY

  • ORDER_SHIPPING_LINE

  • ORDER_SHIPPING_TAX_LINE

  • ORDER_TAG

  • ORDER_URL_TAG

  • REFUND

  • RETURN

  • RETURN_LINE_ITEM

  • RETURN_SHIPPING_FEE

  • TAX_LINE

  • TENDER_TRANSACTION

  • TRANSACTION

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 productVariantMetafield object is updated, we do not capture the update until its parent object, product, is updated.

  • If the damaged inventory quantity is updated, the updatedAt timestamp of its parent object, product, remains unchanged, and we do not capture the update. However, if the available inventory quantity is updated, the updatedAt timestamp of its parent object, product, is updated, and we capture the update.

Schema information

This schema applies to all DinMo accounts created on or after August 1, 2025.

Explore Shopify schema ERD

Interactive Shopify Schema ERD

Metafields

DinMo supports Shopify's Metafield resource. We support the metafields of the following tables:

  • COLLECTION

  • CUSTOMER

  • DRAFT_ORDER

  • ORDER

  • PRODUCT

  • PRODUCT_IMAGE

  • PRODUCT_VARIANT

  • SHOP

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_EVENT

  • CART_ATTRIBUTE_EVENT

  • CART_LINE_EVENT

  • CART_VIEWED_EVENT

  • CHECKOUT_ATTRIBUTES_EVENT

  • CHECKOUT_DELIVERY_OPTION_EVENT

  • CHECKOUT_DISCOUNT_APPLICATION_EVENT

  • CHECKOUT_EVENT

  • CHECKOUT_LINE_ITEM_DISCOUNT_ALLOCATION_EVENT

  • CHECKOUT_LINE_ITEM_EVENT

  • CHECKOUT_LINE_ITEM_PROPERTY_EVENT

  • CHECKOUT_TRANSACTION_EVENT

  • COLLECTION_VIEWED_EVENT

  • COLLECTION_VIEWED_PRODUCT_VARIANT_EVENT

  • PAGE_VIEWED_EVENT

  • PRODUCT_ADDED_TO_CART_EVENT

  • PRODUCT_REMOVED_FROM_CART_EVENT

  • PRODUCT_VIEWED_EVENT

  • SEARCH_RESULT_PRODUCT_VARIANT_EVENT

  • SEARCH_SUBMITTED_EVENT

  • UI_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_event

  • checkout_completed_event

  • checkout_contact_info_submitted_event

  • checkout_shipping_info_submitted_event

  • checkout_started_event

  • payment_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 DinMo’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, DinMo 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-DinMo app (custom, private or another public app).

DinMo requires the following authenticated access scopes for Shopify's Admin API:

  • read_all_orders

  • read_assigned_fulfillment_orders

  • read_customers

  • read_discounts

  • read_draft_orders

  • read_files

  • read_fulfillments

  • read_inventory

  • read_locales

  • read_locations

  • read_merchant_managed_fulfillment_orders

  • read_orders

  • read_price_rules

  • read_product_listings

  • read_products

  • read_publications

  • read_returns

  • read_shipping

  • read_shopify_payments_accounts

  • read_shopify_payments_disputes

  • read_shopify_payments_payouts

  • read_third_party_fulfillment_orders

  • read_customer_events

  • write_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.

Last updated