Skip to main content
Connectors

Shopify connector

Set up the Shopify connector in Kaivo: authentication, configuration, the 48 BigQuery tables it syncs, and answers to common questions.

Written By Lauri Raivio

Last updated 15 days ago

Kaivo is a fully managed data platform that syncs your Shopify data into a Google BigQuery warehouse and keeps it up to date automatically. There is no pipeline to build and no infrastructure to run, so you can spend your time analysing your e-commerce data instead of moving it.

What is the Shopify connector

Sync your Shopify store data into BigQuery with Kaivo to analyse orders, products, and customers without exporting reports by hand.

CategoryE-commerce
AuthenticationUsername and password
SetupSelf-service

Getting started with the Shopify connector

  1. Sign up for Kaivo and create a workspace.
  2. Connect your Shopify account.
  3. Choose which tables to sync.
  4. Wait for the initial sync to finish.
  5. Query your data in BigQuery or your favourite AI or BI tool.

Authenticating Shopify

Connect with your Shopify login. You provide:

FieldDescription
API Password

The Admin API access token of a custom app in your Shopify store (Settings → Apps and sales channels → Develop apps → your app → API credentials).

Configuring the Shopify connector

When you set up the connector, you provide:

FieldDescription
Shopify Store

The name of your Shopify store found in the URL. For example, if your URL was https://my-store.myshopify.com, then the name would be 'my-store' or 'my-store.myshopify.com'.

Start Date

Any data before this date will not be fetched.

Include Closed Fulfillment Orders

If enabled, the Fulfillment Orders table includes closed fulfillment orders. Shopify excludes closed orders by default.

Tables and columns synced from Shopify

Kaivo syncs 48 tables from Shopify into a dedicated dataset in your BigQuery warehouse. Click any table to see its columns and types.

ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
location_idINT64ID of the location
buyer_accepts_marketingBOOLIndicates if the buyer accepts marketing
currencySTRINGCurrency used for the checkout
completed_atTIMESTAMPDate and time when the checkout was completed
tokenSTRINGToken associated with the checkout
billing_address__phoneSTRINGPhone number associated with the billing address
billing_address__countrySTRINGCountry of the customer's billing address
billing_address__first_nameSTRINGFirst name of the customer
billing_address__nameSTRINGFull name associated with the billing address
... and 93 more columns

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • abandoned_checkouts__note_attributes (5 columns)
  • abandoned_checkouts__discount_codes (6 columns)
  • abandoned_checkouts__tax_lines (14 columns)
  • abandoned_checkouts__line_items (14 columns)
  • abandoned_checkouts__shipping_lines (16 columns)
  • abandoned_checkouts__shipping_lines__applied_discounts (4 columns)
  • abandoned_checkouts__shipping_lines__tax_lines (14 columns)
  • abandoned_checkouts__customer__addresses (20 columns)
  • abandoned_checkouts__customer__tax_exemptions (4 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
idINT64The unique identifier of the article
titleSTRINGThe title of the article
created_atTIMESTAMPThe date and time when the article was created
body_htmlSTRINGThe HTML content of the article body
blog_idINT64The unique identifier of the blog to which the article belongs
authorSTRINGThe name of the author of the article
user_idSTRINGThe unique identifier of the user who created the article
published_atTIMESTAMPThe date and time when the article was published
updated_atTIMESTAMPThe date and time when the article was last updated
... and 10 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
idINT64The unique identifier of the balance transaction.
typeSTRINGThe type of transaction.
testBOOLFlag indicating if the transaction is a test transaction.
payout_idINT64The identifier of the associated payout.
payout_statusSTRINGThe status of the payout associated with this transaction.
payoucurrencyt_statusSTRINGIndicates the status of the payout for the currency in which the transaction occurred.
amountFLOAT64The amount of the transaction in the specified currency.
feeFLOAT64The fee associated with the transaction.
netFLOAT64The final amount received after deducting fees.
... and 7 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
commentableSTRINGIndicates whether comments are allowed on the blog.
created_atTIMESTAMPThe date and time when the blog was created.
feedburnerTIMESTAMPThe Feedburner date for the blog.
feedburner_locationINT64The location information related to Feedburner.
handleSTRINGThe unique handle used in the blog's URL.
idINT64The unique identifier for the blog.
tagsSTRINGTags associated with the blog.
template_suffixSTRINGThe template suffix used in the blog's layout.
titleSTRINGThe title of the blog.
... and 7 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
collection_idINT64The unique identifier for the collection.
collection_admin_graphql_api_idSTRINGThe Admin GraphQL API ID for the collection.
collection_handleSTRINGThe handle (URL-friendly name) for the collection.
collection_updated_atTIMESTAMPThe date and time when the collection was last updated.
product_idINT64The unique identifier for the product.
product_admin_graphql_api_idSTRINGThe Admin GraphQL API ID for the product.
shop_urlSTRINGThe URL of the shop associated with this collection-product association.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
idINT64The unique identifier for the collection.
handleSTRINGA unique URL-friendly string that represents the collection.
titleSTRINGThe title or name of the collection.
updated_atTIMESTAMPThe datetime when the collection was last updated.
body_htmlSTRINGThe HTML content describing the collection.
published_atTIMESTAMPThe datetime when the collection was published.
sort_orderSTRINGThe order in which the collection should be sorted.
template_suffixSTRINGThe name of the template that is used to render the collection.
products_countINT64The number of products within the collection.
... and 5 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
idINT64The unique identifier for the collect.
collection_idINT64The unique identifier for the collection.
created_atTIMESTAMPThe date and time when the collect was created.
positionINT64The position of the product in the collection.
product_idINT64The unique identifier of the product.
sort_valueSTRINGThe value used to sort the products in the collection.
shop_urlSTRINGThe URL of the shop associated with the collect.
updated_atTIMESTAMPThe date and time when the collect was last updated.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
codeSTRINGISO country code.
idINT64Unique identifier for the country.
nameSTRINGName of the country.
rest_of_worldBOOLWhether the country in a catch-all group of countries that are not individually listed or assigned to any specific zone or market.
translated_nameSTRINGTranslated name of the country
shop_urlSTRINGURL for the shop related to this country.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • countries__provinces (8 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
handleSTRINGThe unique URL-friendly string that identifies the custom collection.
sort_orderSTRINGThe order in which the custom collection should be displayed.
body_htmlSTRINGThe full description of the custom collection for display purposes.
titleSTRINGThe title of the custom collection.
idINT64The unique identifier of the custom collection.
published_scopeSTRINGThe scope where the custom collection is published (global or web).
admin_graphql_api_idSTRINGThe unique identifier of the custom collection accessible via GraphQL Admin API.
updated_atTIMESTAMPThe date and time when the custom collection was last updated.
image__altSTRINGThe alternative text description of the image.
... and 11 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
address1STRINGThe first line of the customer's street address.
address2STRINGThe second line of the customer's street address.
citySTRINGThe city where the customer resides.
countrySTRINGThe full name of the country associated with the address.
country_codeSTRINGThe ISO 3166-1 alpha-2 country code of the address country.
country_nameSTRINGThe name of the country associated with the address.
companySTRINGThe company name associated with the customer's address.
customer_idINT64The unique identifier of the customer to whom the address belongs.
first_nameSTRINGThe first name of the customer.
... and 11 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
order_idINT64The id of the order.
created_atTIMESTAMPThe date and time when the order was created.
updated_atTIMESTAMPThe date and time when the order was last updated.
customer_journey_summary__readyBOOLWhether the attributed sessions for the order have been created yet.
customer_journey_summary__moments_count__countINT64Count of elements.
customer_journey_summary__moments_count__precisionSTRINGPrecision of count, how exact is the value.
customer_journey_summary__customer_order_indexINT64The position of the current order within the customer's order history. Test orders aren't included.
customer_journey_summary__days_to_conversionINT64The number of days between the first session and the order creation date. The first session represents the first session since the last order, or the first session within the 30 day attribution window, if more than 30 days have passed since the last order.
customer_journey_summary__first_visit__idINT64A globally-unique ID.
... and 32 more columns

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • customer_journey_summary__customer_journey_summary__moments (18 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
last_order_nameSTRINGName of the customer's last order.
currencySTRINGCurrency associated with the customer.
emailSTRINGCustomer's email address.
multipass_identifierSTRINGMultipass identifier for the customer.
shop_urlSTRINGURL of the customer's associated shop.
default_address__citySTRINGCity where the customer's default address is located.
default_address__address1STRINGFirst line of customer's default address.
default_address__zipSTRINGPostal or ZIP code of the customer's default address.
default_address__idINT64Unique identifier for the default address.
... and 40 more columns

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • customers__addresses (20 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
idINT64The unique identifier of the deleted product.
deleted_atTIMESTAMPThe date and time when the product was deleted.
deleted_messageSTRINGMessage related to the deletion of the product.
deleted_descriptionSTRINGDescription of the reason for deletion.
shop_urlSTRINGThe URL of the shop where the product was listed.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
idINT64The unique identifier for the discount code
price_rule_idINT64The identifier of the price rule associated with the discount code
codeSTRINGThe discount code that customers can use during checkout to apply the discount
usage_countINT64The number of times the discount code has been used by customers
created_atTIMESTAMPThe date and time when the discount code was created
created_by__idSTRING
created_by__titleSTRING
updated_atTIMESTAMPThe date and time when the discount code was last updated
summarySTRINGA brief summary or description of the discount code
... and 15 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
idINT64The unique identifier of the dispute
order_idINT64The identifier of the order associated with the dispute
typeSTRINGThe type of dispute (e.g., chargeback, refund request)
currencySTRINGThe currency in which the dispute amount is represented
amountSTRINGThe disputed amount in the currency specified
reasonSTRINGThe reason provided for the dispute
network_reason_codeSTRINGThe reason code provided by the network for the dispute
statusSTRINGThe current status of the dispute
initiated_atTIMESTAMPThe date and time when the dispute was initiated
... and 4 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
idINT64Unique identifier of the draft order
noteSTRINGAdditional notes or comments related to the draft order
emailSTRINGEmail address associated with the draft order
taxes_includedBOOLIndicates if taxes are included in the prices
currencySTRINGCurrency used for the draft order
invoice_sent_atTIMESTAMPTimestamp when the invoice was sent
created_atTIMESTAMPTimestamp when the draft order was created
updated_atTIMESTAMPTimestamp when the draft order was last updated
tax_exemptBOOLIndicates if the draft order is tax exempt
... and 92 more columns

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • draft_orders__line_items (25 columns)
  • draft_orders__line_items__tax_lines (10 columns)
  • draft_orders__line_items__properties (5 columns)
  • draft_orders__tax_lines (10 columns)
  • draft_orders__note_attributes (5 columns)
  • draft_orders__customer__tax_exemptions (4 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
assigned_location_idINT64The unique identifier of the assigned location
channel_idSTRINGThe ID of the channel that created an order
destination__idINT64The unique identifier of the destination
destination__address1STRINGThe primary address of the destination
destination__address2STRINGThe secondary address of the destination
destination__citySTRINGThe city of the destination
destination__companySTRINGThe name of the company at the destination
destination__countrySTRINGThe country of the destination
destination__emailSTRINGThe email address of the recipient at the destination
... and 32 more columns

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • fulfillment_orders__fulfillment_holds (5 columns)
  • fulfillment_orders__line_items (11 columns)
  • fulfillment_orders__supported_actions (5 columns)
  • fulfillment_orders__merchant_requests (7 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
admin_graphql_api_idSTRINGThe unique identifier of the resource in the Admin GraphQL API.
created_atTIMESTAMPThe date and time when the fulfillment was created.
idINT64The unique identifier of the fulfillment.
location_idINT64The location identifier where the fulfillment takes place.
nameSTRINGThe name of the fulfillment.
notify_customerBOOLIndicates if the customer should be notified about the fulfillment.
order_idINT64The unique identifier of the order associated with the fulfillment.
origin_address__address1STRINGThe first line of the origin address.
origin_address__address2STRINGThe second line of the origin address.
... and 16 more columns

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • fulfillments__tracking_numbers (4 columns)
  • fulfillments__tracking_urls (4 columns)
  • fulfillments__line_items (33 columns)
  • fulfillments__line_items__properties (4 columns)
  • fulfillments__line_items__tax_lines (11 columns)
  • fulfillments__line_items__duties (10 columns)
  • fulfillments__line_items__duties__tax_lines (11 columns)
  • fulfillments__line_items__discount_allocations (13 columns)
  • fulfillments__duties (10 columns)
  • fulfillments__duties__tax_lines (11 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
idINT64The unique identifier of the inventory item
admin_graphql_api_idSTRINGThe unique identifier for the inventory item in the admin GraphQL API
costFLOAT64The cost of the inventory item
currency_codeSTRINGCurrency of the money
country_code_of_originSTRINGThe country code indicating the origin of the inventory item
duplicate_sku_countINT64The number of inventory items that share the same SKU with this item
harmonized_system_codeSTRINGThe harmonized system code for the inventory item
province_code_of_originSTRINGThe province code indicating the origin of the inventory item
updated_atTIMESTAMPThe date and time when the inventory item was last updated
... and 6 more columns

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • inventory_items__country_harmonized_system_codes (4 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
idSTRINGThe unique identifier for the inventory level.
admin_graphql_api_idSTRINGThe unique identifier for the inventory levels in GraphQL format.
availableINT64The quantity of items available for sale in the inventory.
can_deactivateBOOLWhether the inventory items associated with the inventory level can be deactivated.
created_atTIMESTAMPThe date and time when the inventory level was created.
inventory_history_urlSTRINGThe URL that points to the inventory history for the item.
locations_count__countINT64The count of elements.
deactivation_alertSTRINGDescribes either the impact of deactivating the inventory level, or why the inventory level can't be deactivated.
inventory_item_idINT64The unique identifier for the associated inventory item.
... and 4 more columns

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • inventory_levels__quantities (8 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
activeBOOLIndicates if the location is currently active or not.
address1STRINGThe first line of the location's address.
address2STRINGThe second line of the location's address.
admin_graphql_api_idSTRINGThe Admin GraphQL API ID of the location.
citySTRINGThe city where the location is based.
countrySTRINGThe full name of the country where the location is located.
country_codeSTRINGThe ISO country code of the location.
country_nameSTRINGThe name of the country where the location is located.
created_atTIMESTAMPThe date and time when the location was created.
... and 12 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
idINT64The unique identifier of the metafield
namespaceSTRINGThe namespace under which the metafield is defined
keySTRINGThe key or identifier used to access the metafield
valueSTRINGThe actual value stored in the metafield
value_typeSTRINGThe type of value stored in the metafield (e.g., single, array)
descriptionSTRINGThe description or details of the metafield
owner_idINT64The unique identifier of the resource that owns the metafield
created_atTIMESTAMPThe date and time when the metafield was created
updated_atTIMESTAMPThe date and time when the metafield was last updated
... and 5 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
owner_idINT64The unique identifier of the owner associated with the metafield data
admin_graphql_api_idSTRINGThe unique identifier for the metafield data in the Admin GraphQL API
owner_resourceSTRINGThe resource type of the owner associated with the metafield data
value_typeSTRINGThe data type of the value stored in the metafield
keySTRINGThe key associated with the metafield data
created_atTIMESTAMPThe date and time when the metafield data was created
idINT64The unique identifier for the metafield data
namespaceSTRINGThe namespace of the metafield data
descriptionSTRINGThe description of the metafield data
... and 5 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
owner_idINT64The ID of the owner associated with the metafield collection
admin_graphql_api_idSTRINGThe unique identifier for the metafield collection in the Admin GraphQL API
owner_resourceSTRINGThe resource type of the owner associated with the metafield collection
value_typeSTRINGThe type of the value in the metafield collection
keySTRINGThe key associated with the metafield collection
created_atTIMESTAMPThe date and time when the metafield collection was created
idINT64The unique identifier for the metafield collection
namespaceSTRINGThe namespace for the metafield collection
descriptionSTRINGThe description of the metafield collection
... and 5 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
idINT64The unique identifier for the metafield.
namespaceSTRINGThe namespace in which the metafield is defined.
keySTRINGThe key or title that identifies the metafield.
valueSTRINGThe actual value of the metafield.
value_typeSTRINGThe type of value stored in the metafield (e.g., string, integer, boolean).
descriptionSTRINGThe description or additional information about the metafield.
owner_idINT64The unique identifier of the resource owner associated with the metafield.
created_atTIMESTAMPThe date and time when the metafield was created.
updated_atTIMESTAMPThe date and time when the metafield was last updated.
... and 5 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
idINT64The unique identifier of the metafield draft order.
namespaceSTRINGThe namespace of the metafield draft order.
keySTRINGThe key associated with the metafield draft order.
valueSTRINGThe value of the metafield draft order.
value_typeSTRINGThe data type of the value of the metafield draft order.
descriptionSTRINGThe textual description of the metafield draft order.
owner_idINT64The unique identifier of the owner (e.g., shop) associated with the metafield draft order.
created_atTIMESTAMPThe date and time when the metafield draft order was created.
updated_atTIMESTAMPThe date and time when the metafield draft order was last updated.
... and 5 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
idINT64The unique identifier for the metafield
namespaceSTRINGThe namespace of the metafield
keySTRINGThe key or name of the metafield
valueSTRINGThe actual value of the metafield
value_typeSTRINGThe data type of the metafield value
descriptionSTRINGThe description of the metafield
owner_idINT64The unique identifier of the resource that owns the metafield
created_atTIMESTAMPThe date and time when the metafield was created
updated_atTIMESTAMPThe date and time when the metafield was last updated
... and 5 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
idINT64The unique identifier for the metafield record.
namespaceSTRINGThe area or group to which the metafield belongs.
keySTRINGThe name that identifies the metafield.
valueSTRINGThe actual value of the metafield.
value_typeSTRINGThe type of data stored in the metafield value.
descriptionSTRINGAdditional information or notes about the metafield.
owner_idINT64The unique identifier of the resource that owns the metafield.
created_atTIMESTAMPThe date and time when the metafield was created.
updated_atTIMESTAMPThe date and time when the metafield was last updated.
... and 5 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
idINT64A unique identifier for the metafield.
namespaceSTRINGThe namespace for the metafield, used to group related metafields together.
keySTRINGThe key or name of the metafield.
valueSTRINGThe actual value stored in the metafield.
value_typeSTRINGThe data type of the value stored in the metafield (e.g., string, integer).
descriptionSTRINGThe description or purpose of the metafield.
owner_idINT64The ID of the resource (e.g., product, order) that owns the metafield.
created_atTIMESTAMPThe date and time when the metafield was created.
updated_atTIMESTAMPThe date and time when the metafield was last updated.
... and 5 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
idINT64The unique ID of the metafield.
namespaceSTRINGThe namespace of the metafield.
keySTRINGThe key that identifies the metafield.
valueSTRINGThe actual value stored in the metafield.
value_typeSTRINGThe type of the value stored in the metafield.
descriptionSTRINGThe description of the metafield.
owner_idINT64The ID of the owner of the metafield.
created_atTIMESTAMPThe date and time when the metafield was created.
updated_atTIMESTAMPThe date and time when the metafield was last updated.
... and 5 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
idINT64The unique identifier for the metafield
namespaceSTRINGThe namespace for grouping metafields
keySTRINGThe key associated with the metafield for identifying purposes
valueSTRINGThe actual value of the metafield
value_typeSTRINGThe type that the value of the metafield represents (e.g., URL, text)
descriptionSTRINGThe description of the metafield content
owner_idINT64The unique identifier of the entity that owns the metafield
created_atTIMESTAMPThe date and time when the metafield was created
updated_atTIMESTAMPThe date and time when the metafield was last updated
... and 5 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
idINT64A unique identifier for the metafield.
namespaceSTRINGThe namespace for the metafield, helping to group related metafields together.
keySTRINGThe key or name that identifies the metafield.
valueSTRINGThe actual value of the metafield based on its type.
value_typeSTRINGA representation of the type of the value (for example, 'string' or 'integer').
descriptionSTRINGThe description of the metafield, providing additional information.
owner_idINT64The unique identifier of the resource that owns the metafield.
created_atTIMESTAMPThe date and time the metafield was created in ISO 8601 format.
updated_atTIMESTAMPThe date and time the metafield was last updated in ISO 8601 format.
... and 5 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
idINT64The unique identifier for the metafield.
namespaceSTRINGThe namespace to which the metafield belongs.
keySTRINGThe key that identifies the metafield.
valueSTRINGThe actual value stored in the metafield.
value_typeSTRINGThe data type of the value stored in the metafield.
descriptionSTRINGThe additional information about the metafield.
owner_idINT64The unique identifier of the owner resource linked to this metafield.
created_atTIMESTAMPThe date and time when the metafield was created.
updated_atTIMESTAMPThe date and time when the metafield was last updated.
... and 5 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
idINT64The unique identifier for the metafield.
namespaceSTRINGThe container for a set of metafields. Typically corresponds to a section of the store.
keySTRINGThe key or name associated with the metafield.
valueSTRINGThe actual value of the metafield.
value_typeSTRINGThe type of value stored in the metafield (e.g., string, integer, json_string).
descriptionSTRINGThe detailed description of the metafield data.
owner_idINT64The ID of the resource to which the metafield is attached.
created_atTIMESTAMPThe date and time when the metafield was created.
updated_atTIMESTAMPThe date and time when the metafield was last updated.
... and 5 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
idINT64A globally-unique Order ID
created_atTIMESTAMPThe date and time when the order was created
updated_atTIMESTAMPThe date and time when the order was last updated
admin_graphql_api_idSTRINGThe original order id reference for the shopify api
shop_urlSTRINGURL of the shop where the order was placed.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • order_agreements__agreements (7 columns)
  • order_agreements__agreements__sales (18 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
order_idINT64ID of the original order for which the refund was issued
restockBOOLIndicates if the refund involves restocking items
processed_atSTRINGDate and time when the refund was processed
user_idINT64ID of the user who initiated the refund
noteSTRINGAny additional notes or comments regarding the refund
idINT64Unique identifier for the order refund resource
created_atTIMESTAMPDate and time when the order refund was created
admin_graphql_api_idSTRINGID of the Shopify API resource
dutiesSTRINGInformation about any duties associated with the refund
... and 8 more columns

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • order_refunds__order_adjustments (10 columns)
  • order_refunds__refund_line_items (52 columns)
  • order_refunds__refund_line_items__line_item__tax_lines (11 columns)
  • order_refunds__refund_line_items__line_item__properties (4 columns)
  • order_refunds__refund_line_items__line_item__discount_allocations (9 columns)
  • order_refunds__refund_line_items__line_item__duties (8 columns)
  • order_refunds__transactions (34 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
idINT64Unique identifier for the order risk entry.
order_idINT64The identifier of the order to which the risk is related.
checkout_idINT64The unique identifier of the checkout associated with the order.
sourceSTRINGSource of the risk notification.
scoreFLOAT64Numerical score indicating the level of risk.
recommendationSTRINGSuggested action to mitigate the risk.
displayBOOLFlag to determine if the risk should be displayed to the merchant.
cause_cancelBOOLReason indicating why the order is at risk of cancellation.
messageSTRINGDescription of the risk associated with the order.
... and 5 more columns

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • order_risks__assessments (27 columns)
  • order_risks__assessments__facts (5 columns)
  • order_risks__assessments__provider__features (4 columns)
  • order_risks__assessments__provider__failed_requirements (7 columns)
  • order_risks__assessments__provider__feedback__messages (5 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
idINT64The unique identifier of the order
admin_graphql_api_idSTRINGThe unique identifier of the order in the GraphQL Admin API
app_idINT64The ID of the app that created the order
browser_ipSTRINGThe IP address of the customer's browser
buyer_accepts_marketingBOOLIndicates if the customer has agreed to receive marketing emails
cancel_reasonSTRINGThe reason provided if the order was canceled
cancelled_atTIMESTAMPThe date and time when the order was canceled
cart_tokenSTRINGToken representing the cart associated with the order
checkout_idINT64The ID of the checkout that processed the order
... and 197 more columns

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • orders__discount_applications (11 columns)
  • orders__discount_codes (6 columns)
  • orders__note_attributes (5 columns)
  • orders__payment_gateway_names (4 columns)
  • orders__tax_lines (11 columns)
  • orders__customer__tax_exemptions (4 columns)
  • orders__discount_allocations (13 columns)
  • orders__fulfillments (22 columns)
  • orders__fulfillments__tracking_numbers (4 columns)
  • orders__fulfillments__tracking_urls (4 columns)
  • orders__fulfillments__line_items (49 columns)
  • orders__fulfillments__line_items__properties (5 columns)
  • orders__fulfillments__line_items__tax_lines (11 columns)
  • orders__fulfillments__line_items__duties (11 columns)
  • orders__fulfillments__line_items__duties__tax_lines (11 columns)
  • orders__fulfillments__line_items__discount_allocations (13 columns)
  • orders__line_items (49 columns)
  • orders__line_items__properties (5 columns)
  • orders__line_items__tax_lines (11 columns)
  • orders__line_items__duties (11 columns)
  • orders__line_items__duties__tax_lines (11 columns)
  • orders__line_items__discount_allocations (13 columns)
  • orders__refunds (15 columns)
  • orders__refunds__order_adjustments (18 columns)
  • orders__refunds__transactions (34 columns)
  • orders__refunds__refund_line_items (47 columns)
  • orders__refunds__refund_line_items__line_item__properties (4 columns)
  • orders__refunds__refund_line_items__line_item__tax_lines (11 columns)
  • orders__refunds__refund_line_items__line_item__discount_allocations (9 columns)
  • orders__refunds__refund_line_items__line_item__duties (8 columns)
  • orders__refunds__duties (8 columns)
  • orders__shipping_lines (20 columns)
  • orders__shipping_lines__tax_lines (4 columns)
  • orders__shipping_lines__discount_allocations (13 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
authorSTRINGThe author of the page.
admin_graphql_api_idSTRINGThe unique identifier for the page in the Admin GraphQL API.
body_htmlJSONThe HTML content of the page.
created_atTIMESTAMPThe timestamp when the page was created.
handleSTRINGThe unique URL path segment for the page.
idINT64The unique identifier for the page.
published_atTIMESTAMPThe timestamp when the page was published.
shop_idINT64The ID of the shop to which the page belongs.
template_suffixSTRINGThe suffix of the liquid template used for the page.
... and 7 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
allocation_methodSTRINGThe method used to allocate the discount
admin_graphql_api_idSTRINGThe unique identifier for the price rule in the GraphQL Admin API
created_atTIMESTAMPThe date and time when the price rule was created
updated_atTIMESTAMPThe date and time when the price rule was last updated
customer_selectionSTRINGThe customer selection criteria for the discount
ends_atTIMESTAMPThe date and time when the discount ends
idINT64The unique identifier for the price rule
once_per_customerBOOLWhether the discount can only be applied once per customer
prerequisite_quantity_range__greater_than_or_equal_toINT64The minimum quantity required for the discount
... and 18 more columns

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • price_rules__customer_segment_prerequisite_ids (4 columns)
  • price_rules__entitled_collection_ids (4 columns)
  • price_rules__entitled_country_ids (4 columns)
  • price_rules__entitled_product_ids (4 columns)
  • price_rules__entitled_variant_ids (4 columns)
  • price_rules__prerequisite_customer_ids (4 columns)
  • price_rules__prerequisite_saved_search_ids (4 columns)
  • price_rules__prerequisite_product_ids (4 columns)
  • price_rules__prerequisite_variant_ids (4 columns)
  • price_rules__prerequisite_collection_ids (4 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
created_atTIMESTAMPDate and time when the image was created
idINT64Unique identifier for the image
positionINT64Position order of the image relative to other images of the same product
product_idINT64Unique identifier of the product associated with the image
srcSTRINGURL of the image
widthINT64Width of the image in pixels
heightINT64Height of the image in pixels
updated_atTIMESTAMPDate and time when the image was last updated
admin_graphql_api_idSTRINGUnique identifier for the image in the Admin GraphQL API
... and 3 more columns

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • product_images__variant_ids (4 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
idINT64The unique identifier for the variant
product_idINT64The unique identifier for the product associated with the variant
titleSTRINGThe title of the variant
priceFLOAT64The price of the variant
skuSTRINGThe unique SKU (stock keeping unit) of the variant
positionINT64The position of the variant in the product's list of variants
inventory_policySTRINGThe inventory policy for the variant
compare_at_priceSTRINGThe original price of the variant before any discount
option1STRINGThe value for option 1 of the variant
... and 23 more columns

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • product_variants__options (14 columns)
  • product_variants__presentment_prices (7 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
published_atTIMESTAMPThe date and time when the product was published.
created_atTIMESTAMPThe date and time when the product was created.
published_scopeSTRINGThe scope of where the product is available for purchase.
statusSTRINGThe status of the product.
vendorSTRINGThe vendor or manufacturer of the product.
updated_atTIMESTAMPThe date and time when the product was last updated.
body_htmlSTRINGThe HTML description of the product.
product_typeSTRINGThe type or category of the product.
tagsSTRINGTags associated with the product.
... and 56 more columns

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • products__options (7 columns)
  • products__options__values (4 columns)
  • products__image__variant_ids (4 columns)
  • products__images (13 columns)
  • products__images__variant_ids (4 columns)
  • products__variants (30 columns)
  • products__variants__presentment_prices (6 columns)
  • products__featured_media__media_errors (6 columns)
  • products__featured_media__media_warnings (5 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
idSTRINGID of the location group.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
address1STRINGThe first line of the shop's address
address2STRINGThe second line of the shop's address
auto_configure_tax_inclusivitySTRINGFlag indicating if taxes are automatically configured to be inclusive
checkout_api_supportedBOOLFlag indicating if the shop supports the checkout API
citySTRINGThe city where the shop is located
countrySTRINGThe country where the shop is located
country_codeSTRINGThe country code of the shop's location
country_nameSTRINGThe name of the country where the shop is located
county_taxesBOOLFlag indicating if county taxes are applicable
... and 50 more columns

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • shop__enabled_presentment_currencies (4 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
idINT64The unique identifier for the smart collection
handleSTRINGThe human-friendly URL for the collection
titleSTRINGThe title or name of the smart collection
updated_atTIMESTAMPThe date and time when the collection was last updated
body_htmlSTRINGThe description or details of the smart collection
published_atTIMESTAMPThe date and time when the collection was published
sort_orderSTRINGThe order in which the collection is displayed
template_suffixSTRINGThe suffix added to the collection template filename
disjunctiveBOOLIndicates whether the collection uses disjunctive filtering
... and 4 more columns

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • smart_collections__rules (4 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
idINT64Unique identifier for the tender transaction.
order_idINT64The identifier of the order associated with the transaction.
amountSTRINGThe transaction amount in the specified currency.
currencySTRINGThe currency in which the transaction amount is stated.
user_idINT64Unique identifier of the user associated with the transaction.
testBOOLFlag indicating whether the transaction was done in a testing environment.
processed_atTIMESTAMPThe date and time when the transaction was processed.
remote_referenceSTRINGReference to an external system for the transaction.
payment_details__credit_card_numberSTRINGThe masked credit card number used for payment.
... and 4 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
error_codeSTRINGError code associated with the transaction
device_idINT64ID of the device used to process the transaction
user_idINT64ID of the user associated with the transaction
parent_idINT64ID of the parent transaction if applicable
testBOOLFlag to indicate if the transaction is a test transaction
kindSTRINGType of transaction
order_idINT64ID of the order associated with the transaction
amountFLOAT64The amount of the transaction
amount_set__shop_money__amountFLOAT64Amount in the shop currency
... and 35 more columns

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • transactions__fees (15 columns)

How the Shopify sync works

After the first load, Kaivo keeps your BigQuery warehouse up to date for you. Where Shopify supports it, each sync pulls only new and changed records so it stays fast; otherwise it refreshes the whole table. Every record keeps its original ID, so you won't get duplicate rows.

Frequently asked questions

How long does the initial sync take for Shopify?

It depends on how much history is in your Shopify account. Most initial syncs finish within minutes, while large accounts can take a few hours. After that, syncs only fetch new and changed records, so they're much faster.

Can I sync only some tables or columns?

Yes. You pick which tables to sync when you set up the connection and can change the selection later. Tables you don't select are never copied to your warehouse.

What happens when Shopify's schema changes?

New fields are never added automatically. You choose which fields to sync, so data you haven't selected (sensitive personal data, for example) never lands in your warehouse. When a new field appears, it becomes available for you to add. What happens to removed or renamed fields depends on a table's sync mode: full-refresh tables always match what's currently in Shopify, so dropped fields disappear, while incremental tables keep their existing columns and history, so an old field stays and newly added fields fill in over time.

How do I handle GDPR or data deletion requests?

Your data lives in your own Kaivo-managed BigQuery warehouse, so the most direct option is to delete or anonymise specific records right in BigQuery. If you delete data in Shopify instead, full-refresh tables drop it on the next sync, while incremental tables keep it, so you would remove the row in BigQuery or ask us to run a full refresh. To remove everything, delete the Shopify connector in Kaivo and all of its synced data is deleted with it.

Common use cases for Shopify data

Sales reporting

Bring your Shopify orders into BigQuery to track revenue and average order value over time.

Product performance

Analyse orders and products to see best sellers and margin by category.

Customer analysis

Use your customer data to measure repeat purchase rates and lifetime value.

Use Shopify data in your AI and BI tools

Once Shopify data lands in your Kaivo-managed BigQuery warehouse, you can explore it with AI tools or any BI tool that connects to BigQuery. Here's how the most common destinations work with Shopify data.

Claude

Use Kaivo's MCP server to give Claude secure, workspace-scoped access to your data. Setup guide →

Power BI

Microsoft's BI tool with a native BigQuery connector. Supports direct query and scheduled refresh. Setup guide →

Data Studio

Free Google BI tool with native BigQuery support. One-click connection to your Kaivo warehouse; great for SMB teams on Google Workspace. Setup guide →

Tableau

The premium analytics standard, with native BigQuery integration. Setup guide →

Google Sheets

Use Connected Sheets to query BigQuery directly from a spreadsheet, with no SQL. Setup guide →

Excel

Connect via Power Query's BigQuery connector. Setup guide →

Metabase

Open-source BI tool with strong BigQuery support. Setup guide →

See our pricing page for Shopify connector pricing and plan details.

Was this helpful?

Still need help? Share an idea