如果頁面有 id=”ga”,用 gtag 埋 Google Analytics 會收不到流量

如果頁面有 id="ga",用 gtag 埋 Google Analytics 會收不到流量
如果頁面有 id="ga",用 gtag 埋 Google Analytics 會收不到流量

English version: If the page has id=”ga”, google analytics with gtag will not receive sessions.

首先,August 不想下個「做了這件事以後,GA 就收不到流量,知道原因後朋友們都跪了」之類的標題殺人法,所以先在標題跟第一段先說結論:
如果頁面的 HTML,有出現 id="ga",而埋 GA code 的方式又是 gtag 的話,那 GA 就會收不到這頁的瀏覽量。

以下是從發現問題到找到問題,最後解決問題的過程。

因為目前還沒在網路上找到因為頁面有 id="ga" 就收不到流量的文章,所以寫了這篇,希望大大們可以避免,或是也發生一樣問題的頁面可以解決這問題。


發現問題

收不到流量這是前幾天慘痛的經驗。在寫完以下兩篇後:

原本是要比較一下中文、英文流量有沒有差異的,可是一天過去了,兩天過去了,這兩篇在 Google Analytics 的流量一直是 0。

奇怪的是,在看 Hotjar 時,有看到有人進到中文那篇在觀看。FB 的分享也有朋友點讚,怎麼樣都會有人進來晃晃吧?但 GA 確實一直沒收到數據。

而且點進其他篇,其他篇一樣可以收到流量,就這兩篇不行。

然後就打開 GA Debugger,開始一系列的找 bug 過程。


找到問題

一開始是懷疑因為裝了禁止 GA 追蹤的擴充功能「Google Analytics (分析) 不透露資訊外掛程式」所以沒收到流量,移掉後,即時報表還是沒看到瀏覽量進來。

接著想到,發文前一天,想來試一下 AB/ test,埋 GA tracking code 時,有加了 Google Optimize 的 config,就去 Optimize 結束 A/B test,但一樣,GA page view 一樣沒送出。

然後又想,難道是自訂維度的 code 寫錯了?那 自訂維度的使用 那篇不就要重寫?好險,即便刪掉自訂維度的事件,一樣是沒收到流量。

接著又試著刪掉 GA 事件追蹤、service-worker.js、Mixpanel,都沒解決 GA 收不到瀏覽量的問題。

最後,只好採取土法煉鋼的方式,把頁面下載成靜態的 HTML 檔,一行一行刪,看刪到哪一行可以讓 GA 正常運作。


一般找前端的 bug,第一個先找的是 JavaScript,因為 JS 最可能把 AJAX 擋下。

先把頁面上引用的 JS、直接寫的 <script> 都刪掉,如果發現流量進來了後,再來找是哪個檔案造成的。

結果:刪完後還是收不到流量。

CSS 會影響嗎?疑惑之下還是刪了,引用的跟頁面上的 <style> 都刪。

結果:一樣沒收到流量。

好吧,只好看其他 HML 的部分,先刪 <head> 裡的,沒作用。

再刪掉整個 body,嗯?GA 收到流量了!

那可以肯定的是,是前端頁面的問題,而不是 GA 設定或是 Server 的問題。

HTML 一行一行刪下去,在刪掉這一行:

<h3>
  <span class="ez-toc-section" id="ga" tabindex="-1">ga</span>
</h3>

GA 就能收到流量,終於找到問題了,這一行問題會跟 GA 有關的就是 id="ga"

不過 August 也疑惑,為什麼會寫出 id="ga" 這行?感覺這個 id 就會是 Google Analytics 的保留字。

看了頁面才發現,為了讓頁面增加內部連結,也為了讓大家閱讀方便,August 有裝「Easy Table of Contents」這個外掛,id 是由這個外掛自動生成的,他會去判斷標題裡的英文,自動把英文變成這個標題的 id,結果那兩篇都有個標題就叫「GA」。


解決問題

一開始是先俢改標題的文字,原本標題是「GA」,就改成「GA code」,讓外掛生成的 id 變成 ga-code。

這在英文那篇沒問題,但在中文那邊有個問題,就是 Easy Table of Contents 只會抓標題裡的英文當 id,而中文那篇有一個標題是「會埋 GA 事件的好處」,外掛就只抓了 ga 出來,不得已下只好把標題改成「會埋 GA Event 的好處」。


再說一次 GA 流量是 0 的原因

這很重要,這是真人真事非改編悲劇換來的經驗,所以最後再說明一次:

如果頁面的 HTML,有出現 id="ga",而埋 Google Analytics 的方式又是 gtag 的話,那 GA 就會收不到這頁的瀏覽量。

Summary
如果頁面有 id="ga",用 gtag 埋 Google Analytics 會收不到流量
Article Name
如果頁面有 id="ga",用 gtag 埋 Google Analytics 會收不到流量
Description
深入了解當頁面 HTML 包含 id="ga",且使用 gtag 嵌入 Google Analytics 時,為何 GA 無法收到流量。本文從問題發現、原因分析到解決方法,提供了完整的指南。
Augustus
Let's Write
Let's Write
https://letswrite.tw/wp-content/uploads/2020/08/logo_512.jpg
訂閱
通知
guest

1 Comment
最舊
最新
Inline Feedbacks
看所有留言
Alex Lion
Alex Lion
1 年 之前

想來很少人會回報之前 Easy Table of Content 出的問題及後續處理結果…

  1. 之前 Easy Table of Content 只要內容標題 (Heading) 是混合中英字元便會僅取用標題中的英文字元作為 ID 值。
  2. 之前 Easy Table of Content 只要內容標題 (Heading) 純中文字元,因為當時它無法正確處理,這類標題會造成 ID 值為純數字。

只要標題不是純英文,當時都會發生一樣的問題,於是就有外掛使用者回報了,當然後來也解了這個問題。
現在 Easy Table of Content 能正確處理非英文標題,ID 值會是完整標題。舉例來說,如果內容標題為「Facebook 原有的貼文分享方式」,則其內容目錄錨點 ID 值為「#facebook-原有的貼文分享方式」。