diff --git a/common/changes/@snowplow/browser-plugin-snowplow-ecommerce/ga4-ecommerce-fix_2025-05-28-10-25.json b/common/changes/@snowplow/browser-plugin-snowplow-ecommerce/ga4-ecommerce-fix_2025-05-28-10-25.json new file mode 100644 index 000000000..c956adf68 --- /dev/null +++ b/common/changes/@snowplow/browser-plugin-snowplow-ecommerce/ga4-ecommerce-fix_2025-05-28-10-25.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@snowplow/browser-plugin-snowplow-ecommerce", + "comment": "Fixing GA4 Ecommerce functions to use finalCartValue within ecommerce object", + "type": "none" + } + ], + "packageName": "@snowplow/browser-plugin-snowplow-ecommerce" +} \ No newline at end of file diff --git a/plugins/browser-plugin-snowplow-ecommerce/src/ga4/api.ts b/plugins/browser-plugin-snowplow-ecommerce/src/ga4/api.ts index 21d74d93c..c2a25284f 100644 --- a/plugins/browser-plugin-snowplow-ecommerce/src/ga4/api.ts +++ b/plugins/browser-plugin-snowplow-ecommerce/src/ga4/api.ts @@ -33,21 +33,23 @@ export function trackGA4SelectPromotion(ecommerce: GA4EcommerceObject & Promotio } export function trackGA4AddToCart( - ecommerce: GA4EcommerceObject & Currency, + ecommerce: GA4EcommerceObject & Currency & { finalCartValue?: number }, opts: Options & { finalCartValue: number } ) { const currency = (ecommerce.currency || opts.currency)!; + const finalCartValue = ecommerce.finalCartValue ?? opts.finalCartValue; const products = transformG4ItemsToSPProducts(ecommerce, currency); - trackAddToCart({ products, total_value: opts.finalCartValue, currency }); + trackAddToCart({ products, total_value: finalCartValue, currency }); } export function trackGA4RemoveFromCart( - ecommerce: GA4EcommerceObject & Currency, + ecommerce: GA4EcommerceObject & Currency & { finalCartValue?: number }, opts: Options & { finalCartValue: number } ) { const currency = (ecommerce.currency || opts.currency)!; + const finalCartValue = ecommerce.finalCartValue ?? opts.finalCartValue; const products = transformG4ItemsToSPProducts(ecommerce, currency); - trackRemoveFromCart({ products, total_value: opts.finalCartValue, currency }); + trackRemoveFromCart({ products, total_value: finalCartValue, currency }); } export function trackGA4ViewItem(ecommerce: GA4EcommerceObject, opts: Options = {}) {