Release Notes
August 2026
v1.9.2
Feature Updates
- Adds DuckDB as a supported destination.
v1.10.0
PR #167, PR #172 include the following updates:
Schema/Data Changes
4 total changes • 0 possible breaking changes
| Data Model(s) | Change type | Old | New | Notes |
|---|---|---|---|---|
shopify_gql__orders, shopify_gql__daily_shop | Column value | gross_sales / net_sales = Σ quantity² × unit_price | gross_sales / net_sales = Σ quantity × unit_price | Fixes a bug where GraphQL orders with any line quantity > 1 had sales figures inflated quadratically. Orders where every line has quantity = 1 are unaffected. |
shopify_gql__line_item_enhanced | Column value | total_amount = quantity² × unit_price; unit_amount = line total, then a quantity-derived unit price | total_amount = quantity × unit_price; unit_amount = Shopify's own reported unit price | The quantity double-count is fixed as before. unit_amount now reads the real per-unit price directly from the source instead of back-deriving it by dividing the line total by quantity, avoiding rounding/edge-case drift (e.g. quantity = 0). |
stg_shopify_gql__metafield | Deduplication logic and unique_key value | Deduplicated on id only; unique_key hashed on metafield_id and source_relation | Deduplicated on id, owner_id, and owner_resource; unique_key hashed on metafield_id, owner_resource_id, owner_resource, and source_relation | Shopify changed the underlying METAFIELD table's primary key to a composite of owner_id and owner_resource to fix cross-entity ID collisions. This change does not affect any downstream shopify_gql__*_metafields models, since unique_key is never selected from stg_shopify_gql__metafield into those outputs. |
stg_shopify_gql__order_line | New columns | unit_price_shop_amount, unit_price_shop_currency_code | Exposes Shopify's own per-unit price field (originalUnitPriceSet), synced by the connector but not previously mapped in this package. |
July 2026
v1.9.1
Schema/Data Changes
1 total change • 0 possible breaking changes
| Data Model(s) | Change type | Old | New | Notes |
|---|---|---|---|---|
stg_shopify__discount_redeem_codestg_shopify_gql__discount_redeem_code | Deprecated columns | created_by_descriptioncreated_by_title | These fields are deprecated as of August 2026 and will be removed in a future release. See GitHub Issue #163 for details. |
June 2026
v1.8.2
Schema/Data Change
1 total change • 0 possible breaking changes
| Data Model(s) | Change type | Old | New | Notes |
|---|---|---|---|---|
stg_shopify_gql__customer_visit | New column | is_most_recent_order_visit | Boolean field indicating whether this visit is the most recent for a given order. |
Bug Fix
- Fixes duplicate records in
shopify_gql__orderswhen multiple customer visits are attributed to the same order. - Fixes duplicate rows in
shopify_gql__order_linesfor order lines that belong to multiple fulfillment orders. - Fixes a model failure that occurred when
checkout_idwas absent from the source.
v1.9.0
Schema/Data Changes (--full-refresh required after upgrading)
1 total change • 1 possible breaking change
| Data Model(s) | Change type | Old | New | Notes |
|---|---|---|---|---|
| All models | source_relation column (when using a single Shopify schema) | Empty string ('') | <database>.<schema> |
Breaking Changes
- Shopify GraphQL table identifier variables have been renamed (
shopify_gql_*→shopify_graphql_*) for consistency with other Fivetran dbt packages and to ensure union functionality works as expected. If you have configured any identifier variables in your project, update them to the new format.
Feature Updates
- Introduces the new (recommended)
shopify_sourcesvariable for more robust union data configuration. The oldshopify_union_schemasandshopify_union_databasesvariables will still be supported. See the README for specific details.
Under the Hood
- Adds the
fivetran_using_source_casingvariable for case-sensitive destination support. When enabled, downstream transformations respect source casing to ensure consistent results. See the Additional Configurations section of the README for details. - Introduces
fivetran_utils.partition_by_source_relationmacro and replaces theshopify_partition_by_colsmacro to conditionally includesource_relationin partition clauses only when multiple sources are configured.
May 2026
v1.8.1
Quickstart Update
- Adds
table_variablesfor the following sources to prevent missing sources from blocking downstream Quickstart models:locationorder_discount_codeorder_shipping_tax_linetax_line
April 2026
v1.6.0
Schema/Data Changes
21 total changes • 9 possible breaking changes
| Data Model(s) | Change type | Old | New | Notes |
|---|---|---|---|---|
| shopify__refund_lines or shopify_gql__refund_lines | New model | New final model at the refund line item grain. Exposes per-line refund financials, product context, and restock classification. | ||
| shopify__refunds or shopify_gql__refunds | New model | New final model at the refund transaction grain. Aggregates line item financials and includes discrepancy adjustments for accurate reconciliation. | ||
| shopify__daily_shop or shopify_gql__daily_shop | Data change | refund_subtotal, refund_total_tax, and count_orders_with_refunds bucketed by order creation date | Now bucketed by refund creation date | Possible breaking change: New refund metrics now likely to change values. Aligns with Shopify Finance report behavior, which attributes refunds to the date the refund was issued. |
| shopify__customers and shopify__customer_emails or shopify_gql__customers and shopify_gql__customer_emails | Data change | lifetime_total_discount and avg_discount_per_order sourced from order_line.total_discount | Now sourced from discount_allocation | Possible breaking change: New discount metrics now likely to change values. discount_allocation is the more reliable source for order line discount values. |
| shopify__products or shopify_gql__products | Data change | product_total_discount and product_avg_discount_per_order_line sourced from order_line.total_discount | Now sourced from discount_allocation | Possible breaking change: New discount metrics now likely to change values. discount_allocation is the more reliable source for order line discount values. Additionally, order lines with no discounts could return null for these fields; they now return 0. |
| stg_shopify_gql__order_line_refund | New columns | price_pres_amount, price_pres_currency_code, price_shop_amount, price_shop_currency_code, is_restocked | Possible breaking change: Users with order_line_refund_pass_through_columns configured may encounter duplicate column errors if any passthrough columns overlap with the new columns. | |
| shopify__daily_shop or shopify_gql__daily_shop | New columns | gross_sales, discounts, returns, net_sales | New finance metrics providing a daily view of gross sales, applied discounts, returns, and net sales. | |
| shopify__orders or shopify_gql__orders | New columns | gross_sales, discounts, returns, net_sales | New finance metrics providing an order-level view of gross sales, applied discounts, returns, and net sales. | |
| stg_shopify_gql__refund | New column | updated_at | Timestamp of the last update to the refund record. | |
| stg_shopify_gql__return, stg_shopify_gql__return_line_item, stg_shopify_gql__return_shipping_fee | New models | Opt-in GraphQL staging models for return data. Can be enabled/disabled using shopify_gql_using_return variable--see README on how to use. When enabled, shopify_gql__refund_lines is enriched with return lifecycle and return line item detail columns, and shopify_gql__refunds is enriched with return context and return shipping fee columns. |
Under the Hood
- Adds YAML documentation for new models and columns.
- Updates seed files to reflect corrected column names and new columns.
- Removes DECISIONLOG entry for aggregating returns on order date to reflect that returns are now correctly applied on the refund date, matching Shopify finance report behavior.
v1.7.0
Schema/Data Changes (--full-refresh required after upgrading)
3 total changes • 3 possible breaking changes
| Data Model(s) | Change type | Field(s) | Old | New | Notes |
|---|---|---|---|---|---|
shopify_gql__customer_cohortsshopify_gql__customer_email_cohortsshopify__customer_email_cohorts | Data change | cohort_month_numbertotal_price_lifetimeorder_count_lifetimeline_item_count_lifetime | May contain null values on incremental runs | Properly calculated values | PR #152 |
Bug Fix
- Resolves an intermittent Databricks error in
shopify__customer_emailsandshopify_gql__customer_emailscaused by a non-deterministicrow_number()window function inint_shopify__customer_email_rollupandint_shopify_gql__customer_email_rollup. The ordering now includescustomer_idas a tiebreaker so results are deterministic when multiple customers share the same email andcreated_timestamp. (#154)
v1.8.0
Schema/Data Changes
5 total changes • 5 possible breaking changes
| Data Model(s) | Change type | Old | New | Notes |
|---|---|---|---|---|
shopify__order_lines | Sunset columns | variant_fulfillment_servicevariant_gramsvariant_weightvariant_weight_unitvariant_option_1variant_option_2variant_option_3 | Completes sunset of deprecated fields from January updates. | |
shopify__inventory_levels | Sunset columns | variant_fulfillment_servicevariant_inventory_managementvariant_gramsvariant_weightvariant_weight_unitvariant_option_1variant_option_2variant_option_3 | Completes sunset of deprecated fields from January updates. | |
shopify__daily_shopshopify_gql__daily_shop | Data changes | Order metrics may be inflated | Order metrics now correctly calculated | Soft-deleted staging shop records are now filtered out, which previously could have incorrectly inflated metrics. |
shopify__order_lines | Deprecated columns | pre_tax_pricepre_tax_price_set | These fields now return null and will be sunset in a future release. | |
shopify__products | Deprecated column | published_scope | This field now returns null and will be sunset in a future release. |
February 2026
v1.5.2
Bug Fixes
- Resolves trailing comma bug for users that have the
METAFIELDtable but lack records for a particular object (e.g. order, shop). - Converts JSON fields to strings in non-BigQuery warehouses.
Under the Hood
- Adjusts REST
METAFIELDseed data to test the case where an object does not have associated metafield records.
January 2026
v1.4.0
Schema/Data Changes
11 total changes • 11 possible breaking changes
| Data Model(s) | Change type | Old | New | Notes |
|---|---|---|---|---|
shopify_<gql>__customersshopify_<gql>__ordersshopify_<gql>__productsshopify_<gql>__inventory_levelsshopify_<gql>__daily_shopshopify_<gql>__collection_metafieldsshopify_<gql>__customer_metafieldsshopify_<gql>__order_metafieldsshopify_<gql>__product_metafieldsshopify_<gql>__product_variant_metafieldsshopify_<gql>__shop_metafields | Metafield columns | Unlimited | 50 (configurable) | The 50 most commonly used metafields are pivoted into columns by default. You can adjust this number via the shopify_max_metafields variable. |
Feature Updates
- Introduces the
shopify_max_metafieldsvariable to configure the number of metafields pivoted into columns. Configure it as follows (see README for details):
vars:
shopify_max_metafields: 200 # (Any positive integer) Default is 50
Bug Fixes
- Deduplicates metafields with identical slugs (for example,
my-first-metafieldandmy_first_metafield) to prevent ambiguous column errors. - Ensures the
stg_shopify_gql__shop.enabled_presentment_currenciesandstg_shopify_gql__transaction.receiptfields are strings. - Applies the following warehouse-dependent limits on the number of metafields that are pivoted into columns, regardless of the value of
shopify_max_metafields. Metafields are included based on their prevalence in your ShopifyMETAFIELDtable:- BigQuery: 10,000
- Redshift: 1,600
- Postgres: 1,600
- Databricks: 32,768
- Snowflake: No limit
Under the Hood
- Adds data validation tests for metafield models.
- Adjusts metafield seed data to test for duplicate slugs/column names.
- Creates
max_columns()anddownstream_model_column_count()macros to support adherence to warehouse column limits when pivoting metafields.
v1.5.0
Documentation
- Updates README with standardized Fivetran formatting.
Under the Hood
- In the
quickstart.ymlfile:- Adds
table_variablesfor relevant sources to prevent missing sources from blocking downstream Quickstart models. - Adds
supported_varsfor Quickstart UI customization.
- Adds
v1.5.1
Under the Hood
- Adjusts the data type of
shopify__calendar_start_datein thequickstart.ymlfrom string to date.
December 2025
v1.3.1
Schema/Data Changes
4 total changes • 0 possible breaking changes
| Data Model(s) | Change type | Old | New | Notes |
|---|---|---|---|---|
stg_shopify_gql__order_note_attribute | New column | key | Aligns with connector updates by renaming name to key. The name column has been retained but will be fully deprecated and removed from the model in January 2026. | |
stg_shopify_gql__tax_line | Updated source table names | TAX_LINE | TAX_LINE or ORDER_LINE_TAX_LINE | For newer Shopify connections, the source table has been renamed to ORDER_LINE_TAX_LINE. The model will dynamically determine which table you have and transform your data accordingly. |
stg_shopify_gql__order_line_refund | Updated source table names | ORDER_LINE_REFUND | ORDER_LINE_REFUND or REFUND_LINE_ITEM | For newer Shopify connections, the source table has been renamed to REFUND_LINE_ITEM. The model will dynamically determine which table you have and transform your data accordingly. |
stg_shopify_gql__order_note_attribute | Updated source table names | ORDER_NOTE_ATTRIBUTE | ORDER_NOTE_ATTRIBUTE or ORDER_CUSTOM_ATTRIBUTE | For newer Shopify connections, the source table has been renamed to ORDER_CUSTOM_ATTRIBUTE. The model will dynamically determine which table you have and transform your data accordingly. |
Feature Updates
- Adds automatic detection and support for new GraphQL table naming conventions introduced by Shopify for connections created after November 2025. Models will automatically use the new table names when available while maintaining backward compatibility with existing connections.
- Adds the following variables to override the above dynamic behavior if desired. See the README for more details.
shopify_gql_using_order_custom_attributeshopify_gql_using_order_line_tax_lineshopify_gql_using_refund_line_item
Under the Hood
- Adds
does_table_existmacro to dynamically detect table availability and enable automatic switching between old and new table naming conventions. - Updates integration test seed files to match new table structures.
- Updates validation tests to run dynamically based on
shopify_api.
October 2025
v1.1.0
Schema/Data Change
11 total changes • 11 possible breaking changes
| Data Model(s) | Change type | Old | New | Notes |
|---|---|---|---|---|
| shopify__customers or shopify_gql__customers | New Columns | CUSTOMER metafields | Disable by setting the shopify_using_customer_metafields and shopify_using_all_metafields variables to False. | |
| shopify__daily_shop or shopify_gql__daily_shop | New Columns | SHOP metafields | Disable by setting the shopify_using_shop_metafields and shopify_using_all_metafields variables to False. | |
| shopify__inventory_levels or shopify_gql__inventory_levels | New Columns | PRODUCT_VARIANT metafields | Disable by setting the shopify_using_product_variant_metafields and shopify_using_all_metafields variables to False. | |
| shopify__orders or shopify_gql__orders | New Columns | ORDER metafields | Disable by setting the shopify_using_order_metafields and shopify_using_all_metafields variables to False. | |
| shopify__products or shopify_gql__products | New Columns | PRODUCT metafields | Disable by setting the shopify_using_product_metafields and shopify_using_all_metafields variables to False. | |
| shopify__collection_metafields or shopify_gql__collection_metafields | Default Enablement | Disabled | Enabled | The default value of shopify_using_collection_metafields is now True (previously False). Currently, COLLECTION metafields are not included in any other end models. |
| shopify__customer_metafields or shopify_gql__customer_metafields | Default Enablement | Disabled | Enabled | The default value of shopify_using_customer_metafields is now True (previously False). |
| shopify__order_metafields or shopify_gql__order_metafields | Default Enablement | Disabled | Enabled | The default value of shopify_using_order_metafields is now True (previously False). |
| shopify__product_metafields or shopify_gql__product_metafields | Default Enablement | Disabled | Enabled | The default value of shopify_using_product_metafields is now True (previously False). |
| shopify__product_variant_metafields or shopify_gql__product_variant_metafields | Default Enablement | Disabled | Enabled | The default value of shopify_using_product_variant_metafields is now True (previously False). |
| shopify__shop_metafields or shopify_gql__shop_metafields | Default Enablement | Disabled | Enabled | The default value of shopify_using_shop_metafields is now True (previously False). |
Note: If you are running the package via Fivetran Quickstart, the
shopify_using_[object]_metafieldsvariables are automatically configured based on the presence of relevant source data in your warehouse.Please refer to the README for more details on these variables.
Under the Hood
- Adjusts seed data to test the incorporation of metafields.
- Adds consistency validation tests for all GraphQL models.
- Adds metafield variables to
quickstart.ymlto enable dynamic configuration in Fivetran Quickstart.
September 2025
v1.0.0
Schema/Data Change
1 total changes • 1 possible breaking changes
A
--full-refreshis required when upgrading to ensure the following change is properly applied.
| Data Model(s) | Change type | Old | New | Notes |
|---|---|---|---|---|
stg_shopify_gql__metafield | materialization | view | table | Corrects the previous misconfiguration. |
Source Package Consolidation
- Removed the dependency on the
fivetran/shopify_sourcepackage.- All functionality from the source package has been merged into this transformation package for improved maintainability and clarity.
- If you reference
fivetran/shopify_sourcein yourpackages.yml, you must remove this dependency to avoid conflicts. - Any source overrides referencing the
fivetran/shopify_sourcepackage will also need to be removed or updated to reference this package. - Update any shopify_source-scoped variables to be scoped to only under this package. See the README for how to configure the build schema of staging models.
- As part of the consolidation, vars are no longer used to reference staging models, and only sources are represented by vars. Staging models are now referenced directly with
ref()in downstream models.