Skip to content
Darrell TW

GA4 電子商務報表-已購買的商品數為 0

ga4_item_name_show_zero_purchase_bg

English Version Please Click Here

商品購買數異常

在 GA4 的電子商務報表中,

可以看到如果顯示的維度是商品名稱 -> 已購買的商品數 都顯示 0

ga4_ecommerce_report_item_purchase_0

但如果是顯示商品 ID -> 已購買的商品數 就看起來正常

ga4_ecommerce_report_item_purchase_id_is_fine

可能的原因 GTM or DataLayer or 其他

先尋找 Purchase 事件是怎麼設定

  • Google Tag Manager 那邊設定 Purchase 時有錯誤
  • Gtag 請工程師埋 code
  • 其他可能用到 Measurement Protocol 的方式

-> 這客戶原本我就大概知道設定的邏輯,是用 Google Tag Manager 來處理電子商務相關的設定 從 Google Tag Manager 的設定來看,是沒有問題的 他們單純使用 DataLayer 裡面的電商資料來處理

排查後發現 就是 DataLayer 裡面的資料有問題, 對方工程師在推送 Purchase 事件時不知道什麼原因, 在 item_name 的最後增加了一些字符,導致 GA4 的報表顯示出現了問題

範例的 view_item DataLayer

datalayer_show_view_item

範例的 add_to_cart DataLayer

datalayer_show_add_to_cart

範例的 purchase DataLayer

datalayer_show_purchase

示意的 DataLayer 中可以看到 Purchase 事件中, item_name 的最後多了一個 "_1" 小小的一個不同就會造成 GA4 報表直接不顯示重要的指標

修復和解決方法

解決 DataLayer 中的錯誤

這裡就是和對方工程師描述一下遇到的問題和發現的狀況, 基本上應該都蠻好配合, 除非他們是刻意加上這些字符,並且有不可逆轉和不可調整的因素

無法解決 DataLayer,從 GTM 解決

如果上面的方式無法配合, 那就只能自己透過 Google Tag Manager 來調整, 方法就會是一樣讀取 DataLayer 的電子商務資料, 但額外多做一個變數,來改寫這個商品名稱的邏輯

以範例來說明 就是在變數中寫一段程式 把 時尚休閒上衣-1 改寫成 時尚休閒上衣 如果規則如範例這麼簡單,那處理起來會蠻輕鬆的 就怕實務上遇到很複雜的,處理的規則可能就會跟著一起變很複雜

function() {
  var itemName = {{DL-item_name}};
  if (itemName && itemName.endsWith('_1')) {
    return itemName.slice(0, -2);
  }
  return itemName;
}

// 注意此程式碼只是示意,實際寫法會依照 DataLayer 的不同而有所調整

如果用此方法,請在發布前多做測試,例如是不是其他電商事件也一起被調整到,但其實不該調整的

以前的歷史資料 -> LookerStudio

上面調整好發佈,或是對方工程師調整完成後 那往後的資料應該就會開始正常顯示

只是還是有一段問題,假設這個錯誤已經發生半年或是更久了 那在看以前的數據就會很麻煩 雖然把維度切換到商品 ID 是正常的 但以這客戶的情況來說,他們還是很仰賴商品名稱在看報表 來觀察商品的表現

從 Looker Studio 的建立一個和電子商務一樣的報表, 也會有商品名稱的問題

looker_studio_before_fix.png

以範例的狀況來調整 加上一個計算欄位 : item name fix 並且用上

REGEXP_REPLACE(Item name, '_1$', '')

變可以把 原本的商品名稱-1 改寫成 原本的商品名稱

looker_studio_fix_item_name.png

這樣一來就算是過往的錯誤資料, 也能在 Looker Studio 看到正常的商品名稱, 並且好好的分析商品的表現

looker_studio_after_fix.png

分享這篇文章

不想自己建?讓我幫你

已協助 15+ 個團隊導入 n8n 自動化,從流程規劃到上線維護一手包辦。

看看我能幫你做什麼