Schema · Entity relationship diagram
Shopify Products & Inventory tables and relationships
Products with options, tags and media, variants, collections and their products, inventory items with levels and quantities (available, on hand, committed, incoming ...) by location, locations, and product and collection metafields. Tables and columns are named after the Shopify Admin API and share one shopify schema with Shopify Orders, Shopify Customers, Shopify Payments & Payouts, Shopify Checkouts & Discounts, Shopify Analytics.
shopify- The six Shopify connectors load into one
shopifyschema. The others: Shopify Orders, Shopify Customers, Shopify Payments & Payouts, Shopify Checkouts & Discounts, Shopify Analytics. Dashed boxes are their tables. - Tables and columns are named after the Shopify Admin GraphQL API (2026-07): a table per object (
Order→orders, itslineItems→order_line_items), a column per field path in snake_case (totalPriceSet.shopMoney.amount→total_price_set_shop_money_amount). Ids are the number in Shopify's global id, so they join across connectors. - Lists inside an object (tags, tax lines, custom attributes ...) are child tables keyed by the parent id and
index, replaced as a set whenever the parent changes._jsdata_syncedis the load time;_jsdata_deletedis always false. - Inventory, collections, locations and metafields are re-read in full every 6 hours (inventory levels change without the product changing); products and variants sync incrementally.
Drag to pan, scroll or pinch to zoom, click a table to see what it joins to.
Table reference
14 tables · click a table for its columnsproducts28 columns · Catalogshow in diagram
Primary key: id
| Column | Type | Key | Description |
|---|---|---|---|
| idPrimary key. | bigint | PK | Primary key. |
| title | varchar(65535) | ||
| handle | varchar(65535) | ||
| status | varchar(256) | ||
| vendor | varchar(65535) | ||
| product_type | varchar(65535) | ||
| created_at | timestamp | ||
| updated_at | timestamp | ||
| published_at | timestamp | ||
| total_inventory | bigint | ||
| tracks_inventory | boolean | ||
| has_only_default_variant | boolean | ||
| is_gift_card | boolean | ||
| online_store_url | varchar(65535) | ||
| template_suffix | varchar(65535) | ||
| description | varchar(65535) | ||
| category_id | varchar(256) | ||
| category_name | varchar(65535) | ||
| category_full_name | varchar(65535) | ||
| seo_title | varchar(65535) | ||
| seo_description | varchar(65535) | ||
| featured_media_idReferences product_media.id. | bigint | FK | References product_media.id. |
| price_range_v2_min_variant_price_amount | decimal(38,9) | ||
| price_range_v2_min_variant_price_currency_code | varchar(256) | ||
| price_range_v2_max_variant_price_amount | decimal(38,9) | ||
| price_range_v2_max_variant_price_currency_code | varchar(256) | ||
| _jsdata_deletedTrue when the record was deleted at the source. | boolean | True when the record was deleted at the source. | |
| _jsdata_syncedWhen jsdata last wrote this row. | timestamp | When jsdata last wrote this row. |
product_options7 columns · Catalogshow in diagram
Primary key: id
| Column | Type | Key | Description |
|---|---|---|---|
| product_idReferences products.id. | bigint | FK | References products.id. |
| index | bigint | ||
| idPrimary key. | bigint | PK | Primary key. |
| name | varchar(65535) | ||
| position | bigint | ||
| _jsdata_deletedTrue when the record was deleted at the source. | boolean | True when the record was deleted at the source. | |
| _jsdata_syncedWhen jsdata last wrote this row. | timestamp | When jsdata last wrote this row. |
product_option_values7 columns · Catalogshow in diagram
Primary key: id
| Column | Type | Key | Description |
|---|---|---|---|
| product_option_idReferences product_options.id. | bigint | FK | References product_options.id. |
| index | bigint | ||
| idPrimary key. | bigint | PK | Primary key. |
| name | varchar(65535) | ||
| has_variants | boolean | ||
| _jsdata_deletedTrue when the record was deleted at the source. | boolean | True when the record was deleted at the source. | |
| _jsdata_syncedWhen jsdata last wrote this row. | timestamp | When jsdata last wrote this row. |
product_variants20 columns · Catalogshow in diagram
Primary key: id
| Column | Type | Key | Description |
|---|---|---|---|
| product_idReferences products.id. | bigint | FK | References products.id. |
| typename | varchar(256) | ||
| idPrimary key. | bigint | PK | Primary key. |
| title | varchar(65535) | ||
| display_name | varchar(65535) | ||
| sku | varchar(65535) | ||
| barcode | varchar(65535) | ||
| position | bigint | ||
| price | decimal(38,9) | ||
| compare_at_price | decimal(38,9) | ||
| taxable | boolean | ||
| available_for_sale | boolean | ||
| inventory_quantity | bigint | ||
| inventory_policy | varchar(256) | ||
| created_at | timestamp | ||
| updated_at | timestamp | ||
| inventory_item_idReferences inventory_items.id. | bigint | FK | References inventory_items.id. |
| selected_options | varchar(65535) | ||
| _jsdata_deletedTrue when the record was deleted at the source. | boolean | True when the record was deleted at the source. | |
| _jsdata_syncedWhen jsdata last wrote this row. | timestamp | When jsdata last wrote this row. |
product_media11 columns · Catalogshow in diagram
Primary key: id
| Column | Type | Key | Description |
|---|---|---|---|
| product_idReferences products.id. | bigint | FK | References products.id. |
| typename | varchar(256) | ||
| idPrimary key. | bigint | PK | Primary key. |
| alt | varchar(65535) | ||
| media_content_type | varchar(256) | ||
| status | varchar(256) | ||
| image_url | varchar(65535) | ||
| image_width | bigint | ||
| image_height | bigint | ||
| _jsdata_deletedTrue when the record was deleted at the source. | boolean | True when the record was deleted at the source. | |
| _jsdata_syncedWhen jsdata last wrote this row. | timestamp | When jsdata last wrote this row. |
product_metafields11 columns · Catalogshow in diagram
Primary key: id
| Column | Type | Key | Description |
|---|---|---|---|
| product_idReferences products.id. | bigint | FK | References products.id. |
| typename | varchar(256) | ||
| idPrimary key. | bigint | PK | Primary key. |
| namespace | varchar(65535) | ||
| key | varchar(65535) | ||
| type | varchar(65535) | ||
| value | varchar(65535) | ||
| created_at | timestamp | ||
| updated_at | timestamp | ||
| _jsdata_deletedTrue when the record was deleted at the source. | boolean | True when the record was deleted at the source. | |
| _jsdata_syncedWhen jsdata last wrote this row. | timestamp | When jsdata last wrote this row. |
collections9 columns · Collectionsshow in diagram
Primary key: id
| Column | Type | Key | Description |
|---|---|---|---|
| idPrimary key. | bigint | PK | Primary key. |
| title | varchar(65535) | ||
| handle | varchar(65535) | ||
| updated_at | timestamp | ||
| sort_order | varchar(256) | ||
| template_suffix | varchar(65535) | ||
| products_count_count | bigint | ||
| _jsdata_deletedTrue when the record was deleted at the source. | boolean | True when the record was deleted at the source. | |
| _jsdata_syncedWhen jsdata last wrote this row. | timestamp | When jsdata last wrote this row. |
collection_products5 columns · Collectionsshow in diagram
Primary key: collection_id, product_id
| Column | Type | Key | Description |
|---|---|---|---|
| collection_idPrimary key (with product_id). References collections.id. | bigint | PK FK | Primary key (with product_id). References collections.id. |
| typename | varchar(256) | ||
| product_idPrimary key (with collection_id). References products.id. | bigint | PK FK | Primary key (with collection_id). References products.id. |
| _jsdata_deletedTrue when the record was deleted at the source. | boolean | True when the record was deleted at the source. | |
| _jsdata_syncedWhen jsdata last wrote this row. | timestamp | When jsdata last wrote this row. |
collection_metafields11 columns · Collectionsshow in diagram
Primary key: id
| Column | Type | Key | Description |
|---|---|---|---|
| collection_idReferences collections.id. | bigint | FK | References collections.id. |
| typename | varchar(256) | ||
| idPrimary key. | bigint | PK | Primary key. |
| namespace | varchar(65535) | ||
| key | varchar(65535) | ||
| type | varchar(65535) | ||
| value | varchar(65535) | ||
| created_at | timestamp | ||
| updated_at | timestamp | ||
| _jsdata_deletedTrue when the record was deleted at the source. | boolean | True when the record was deleted at the source. | |
| _jsdata_syncedWhen jsdata last wrote this row. | timestamp | When jsdata last wrote this row. |
inventory_items15 columns · Inventoryshow in diagram
Primary key: id
| Column | Type | Key | Description |
|---|---|---|---|
| idPrimary key. | bigint | PK | Primary key. |
| sku | varchar(65535) | ||
| tracked | boolean | ||
| requires_shipping | boolean | ||
| country_code_of_origin | varchar(256) | ||
| province_code_of_origin | varchar(65535) | ||
| harmonized_system_code | varchar(65535) | ||
| created_at | timestamp | ||
| updated_at | timestamp | ||
| unit_cost_amount | decimal(38,9) | ||
| unit_cost_currency_code | varchar(256) | ||
| measurement_weight_unit | varchar(256) | ||
| measurement_weight_value | decimal(38,9) | ||
| _jsdata_deletedTrue when the record was deleted at the source. | boolean | True when the record was deleted at the source. | |
| _jsdata_syncedWhen jsdata last wrote this row. | timestamp | When jsdata last wrote this row. |
inventory_levels9 columns · Inventoryshow in diagram
Primary key: id
| Column | Type | Key | Description |
|---|---|---|---|
| inventory_item_idReferences inventory_items.id. | bigint | FK | References inventory_items.id. |
| typename | varchar(256) | ||
| idPrimary key. Shopify's inventory level id, kept as text ('<number>?inventory_item_id=<item>'): the number alone is not unique. | varchar(256) | PK | Primary key. Shopify's inventory level id, kept as text ('<number>?inventory_item_id=<item>'): the number alone is not unique. |
| is_active | boolean | ||
| created_at | timestamp | ||
| updated_at | timestamp | ||
| location_idReferences locations.id. | bigint | FK | References locations.id. |
| _jsdata_deletedTrue when the record was deleted at the source. | boolean | True when the record was deleted at the source. | |
| _jsdata_syncedWhen jsdata last wrote this row. | timestamp | When jsdata last wrote this row. |
inventory_quantities7 columns · Inventoryshow in diagram
Primary key: inventory_level_id, index
| Column | Type | Key | Description |
|---|---|---|---|
| inventory_level_idPrimary key (with index). References inventory_levels.id. | varchar(256) | PK FK | Primary key (with index). References inventory_levels.id. |
| indexPrimary key (with inventory_level_id). | bigint | PK | Primary key (with inventory_level_id). |
| nameavailable, on_hand, committed, incoming, reserved, damaged, safety_stock or quality_control. | varchar(65535) | available, on_hand, committed, incoming, reserved, damaged, safety_stock or quality_control. | |
| quantity | bigint | ||
| updated_at | timestamp | ||
| _jsdata_deletedTrue when the record was deleted at the source. | boolean | True when the record was deleted at the source. | |
| _jsdata_syncedWhen jsdata last wrote this row. | timestamp | When jsdata last wrote this row. |
locations23 columns · Inventoryshow in diagram
Primary key: id
| Column | Type | Key | Description |
|---|---|---|---|
| idPrimary key. | bigint | PK | Primary key. |
| name | varchar(65535) | ||
| is_active | boolean | ||
| is_fulfillment_service | boolean | ||
| fulfills_online_orders | boolean | ||
| ships_inventory | boolean | ||
| has_active_inventory | boolean | ||
| created_at | timestamp | ||
| updated_at | timestamp | ||
| deactivated_at | varchar(65535) | ||
| address_address1 | varchar(65535) | ||
| address_address2 | varchar(65535) | ||
| address_city | varchar(65535) | ||
| address_province | varchar(65535) | ||
| address_province_code | varchar(65535) | ||
| address_country | varchar(65535) | ||
| address_country_code | varchar(65535) | ||
| address_zip | varchar(65535) | ||
| address_phone | varchar(65535) | ||
| address_latitude | decimal(38,9) | ||
| address_longitude | decimal(38,9) | ||
| _jsdata_deletedTrue when the record was deleted at the source. | boolean | True when the record was deleted at the source. | |
| _jsdata_syncedWhen jsdata last wrote this row. | timestamp | When jsdata last wrote this row. |