如何用 GTM 設定「Google 同意聲明模式(Consent Mode)」?

什麼是「Google 同意聲明模式(Consent Mode)」?

簡單來說,就是你必須在網站上取得使用者的同意之後,才可以對使用者進行在網站上與 Google 相關服務的行為以及廣告追蹤。(例如啟動 GA4 、Google Ad 以及 Floodlight 等服務)

隨著人們對於網路上隱私保護意識的抬頭,與隱私保護相關的法規也越來越嚴格,例如目前最為嚴格的歐盟 GDPR 以及美國的 CCPA 等,儘管你是台灣的公司,但只要網站有在歐洲運營,有蒐集到來自歐洲的流量,都必須要遵守 GDPR 的隱私規範。

自 2018 GDPR 上路後,各個在歐洲運營的網站以及第三方 SAAS 或是 CMP 軟體服務等都必須要先取得使用者同意才可以蒐集與使用者相關的資訊,甚至連最基本的 IP 位置也都包含在其中,身為網路行銷人員的我們,不得不多加注意這方面的規範

不過,這也延伸了一個很弔詭的情況。

當網站為了獲得使用者同意,因此安裝了第三方「使用者同意聲明管理平台(CMP)」,提供彈出的同意聲明視窗供使用者選擇,但在網站載入第三方「使用者同意聲明管理平台」之前,其實已經傳送的該使用者的 IP 位置到該同意聲明工具服務商。

雖然這麼做的原因是為了載入使用者同意聲明的工具,並要求使用者的同意,但事實上你尚未獲得使用者的同意就已經傳送了他們的 IP。

(很饒口對吧,但國外確實有這樣的案例出現過。)

在 2023 年 11 月時, Google 升級了同意聲明模式到第二版(V2),新增了兩個跟廣告相關的參數分別是 ad_user_data 以及 ad_personalization(原本只有 ad_storageanalytics_storage),而自 2024 年 3 月開始,如果有需要在歐盟地區使用 Google Ad,你都必須要傳送 Google 同意聲明模式,讓 Google 知道你是有在使用者的同意之下,進行資料的蒐集和數據追蹤。

如果沒有給予廣告相關的同意聲明,你會在 GA4 後台的「資料串流」介面中,看到相關提醒(如下圖)

因此這篇文章,我們將告訴你如何透過 GTM 搭配第三方同意聲明管理平台來設定 Google 同意聲明模式,並讓你了解到 Google 基本進階(V2)同意聲明模式的差異。

如果你只想知道如何完成設定,那可以直接跳到這邊

另外,本文只是教學設定安裝的方式,不構成任何相關法律建議,任何裝與不裝以及你的網站是否該取得使用者同意等建議,請諮詢貴司的法務部門或相關法務專業人士。



當使用者首次來到網站時,在使用者尚未同意我們追蹤以及放置 Cookie 之前,我們必須要先禁止所有追蹤相關代碼的啟動,直到使用者選擇全部接受時,我們才可以讓相關追蹤代碼啟動(例如 GA4、Google Ad 轉換碼或是 Meta Pixel 等)。

如果使用者選擇全部接受,那沒有問題,所有追蹤代碼都可以正常啟動,但如果使用者選擇拒絕,「Google 基本同意聲明模式」中的參數值為 denied 時,所有 Google 追蹤代碼都不會傳送任何資料,也不會儲存 Cookie,同意聲明模式本身也不會載入。

但如果是使用「進階同意聲明模式」且在 denied 狀態下,依然會傳送無法辨識個人身分的匿名資料(連線偵測 pings)。

這也是目前爭議所在,僅管使用者拒絕,但還是傳送了所謂的「匿名資料」,因此在使用 「Google 進階同意聲明模式」之前,請先行與法務相關人士確認,確認這樣的方式對於公司的網站運作是否可行。


容易搞混的地方

Google 同意聲明模式」歸「Google 同意聲明模式」,而「同意聲明管理平台(也就是供使用者選擇接受或拒絕的彈窗或是橫幅 Banner)」歸「同意聲明管理平台」,這是兩個不一樣的東西。

來自 Google 官方文件的說明

可能因為名稱接近,讓很多人因此搞混,以為只要安裝好第三方的「同意聲明管理平台(CMP)」,就也一同設定好「Google 同意聲明模式」了(不過也可以算對一半,因為大部分的第三方 CMP 都會內建連動 Google 同意聲明模式)

基本上,我們要做的是透過使用者在「同意聲明管理平台(CMP)」提供的「同意聲明視窗」上的選擇以及設定,來調整「Google 同意聲明模式」內的參數,將其值從預設的 denied 更新為 granted 或保持為 denied


Google 基本與進階同意聲明模式的差異?

Google 的同意聲明模式目前分成兩種,分別是「基本版」與「進階版」,在 「 基本同意聲明模式」中,你只需要傳送 ad_storageanalytics_storage 這兩個參數給 Google,讓 Google 知道使用者同意儲存廣告以及分析相關的資料(如 Cookie)。

而「 進階同意聲明模式(V2)」則是新增了兩個參數 ad_user_data 以及 ad_personalization,用於允許將與 廣告相關的使用者資料傳給 Google 以及 允許放送個人化廣告( 將這些資料用於再行銷的部分,詳情可參考官方文件

除了參數傳送上的差異,還有哪些差別呢?我們直接看 Google 給的表格。

因此, 兩者的差別就在於那些透過機器學習模擬出來的資料, 「進階版」的 Google 同意聲明轉換模擬的能力較佳(當然,因為儘管使用者拒絕,但仍然會傳送些匿名資料,相對也收集了較多分析用的數據)。

而「基本版」的除了在 GA4 中無法透過行為模擬來補足那些拒絕的使用者資料以外,其在轉換事件上所使用的模擬模型也與 進階版 不同(因為當狀態為 denied 時,所有 Google 代碼跟同意聲明都是處於被封鎖的狀態)。

同時,在使用同意聲明工具之後,基本上大部分的使用者都會選擇拒絕,因此可以預見的是 Google Analytics 收集到的資料肯定會大幅減少,但如果網站使用的是「進階版同意聲明模式」,透過其行為模擬的功能之後,GA4 的報表可能會像是下圖:

此為示意圖,網路上有很多 GA4 實際畫面截圖,請自行搜尋

也就是說,我們可能會有一小段時間會失去使用者的資料,但最後會透過 Google 演算法模擬,補足那些失去的使用者資料。


還是要再強調一次,你的網站該不該設定「Google 同意聲明模式」以及「安裝同意聲明工具」,請詢問相關法務人士

到這邊,我們來整理一下幾個情況:

Google 會視所有傳送給它的資料都是經過使用者同意的,也就是都處於 granted 狀態,所以資料收集將正常運作,唯一的問題就是,目前在歐盟地區以及英國只要有用到 Google 廣告服務,網站一定要用「進階同意聲明模式」,傳送 ad_user_data 以及 ad_personalization 給 Google,才可以繼續使用廣告服務 。(如果你沒回傳這兩項參數,2024 年 3 月之後都會先預設為 denied)

如果你只在歐盟和英國地區的流量上使用 Google Analytics 4,並且沒有進行廣告投放,那麼只要安裝了「基本同意聲明模式」就可以了。

而在基本同意聲明的模式下,由於我們未傳遞允許使用使用者資料的參數( ad_user_data),即使在 GA4 中啟用了「Google 信號」,該功能也會自動關閉。

儘管如此,我們建議可以自行關閉這項功能,或是針對特定區域進行關閉,以確保符合使用者的隱私設定和適用法規。

更多的細節資訊,都可以在這份官方文件找到。

如果使用者拒絕全部的追蹤,Google 將只能在 GA4 以及 Google Ad 中進行有限度的「轉換模擬」,且無法在 GA4 中進行「行為模擬」,那些拒絕追蹤的使用者資料將無法透過機器學習的方式補回到 GA4 報表當中。

且在使用者同意之前,所有 Google 代碼都不會啟動,不會傳送任何資料給 Google(包含所謂的「連線偵測匿名資料」),且同意聲明的狀態也不會載入。且在使用者同意之前,不會傳送任何資料給 Google,包含同意聲明的狀態也不會載入。

所有的 GA4/Google Ad 行為以及模擬轉換功能都會由 Google 自行運作,協助補足那些選擇拒絕的使用者資料,且歐盟地區的 Google 廣告服務都可以正常使用。

(注意:不管使用者同意與否,Google 同意聲明依然會以預設為 denied 的狀態載入,且儘管狀態為 denied,Google 依然會傳送無法辨別使用者的匿名資料作為模擬演算使用)


接下來,我們將使用 Google 認證的第三方「同意聲明管理平台」來進行設定,這些經過認證的第三方管理平台,其「同意聲明設定工具(同意聲明彈窗)」都已經跟「Google 同意聲明模式」整合得相當完整,且都有在 GTM 代碼範本庫中提供範本,因此使用上相當方便,只是…需要費用,但相較於 GDPR 驚人的罰金,可謂只是九牛一毛,更重要的是,其方便性可以讓身為行銷人員的我們省去許多時間。

我們要來安裝這個視窗

至於有哪些是官方認證的「同意聲明工具」,可以參考這份文件,接下來,我們將使用認證的第三方平台之一 CookieYes 來作為設定範例。(免費版有 25,000 頁的流量可以使用,我們只是要練習安裝,所以相當夠用)

取得 CookieYes 橫幅代碼

註冊流程我們就不細說了,跟一般註冊流程差不多,這個步驟的目的是要取得同意聲明工具的安裝代碼,接著我們會透過 CookieYes 在 GTM 中提供的範本,將同意聲明視窗安裝在網站上。

在填入網站資訊並選擇免費方案之後,你應該會看到以下畫面,要求你將這段代碼放入到網站上,但由於我們是將透過 GTM 的範本安裝,所以只要需要紅框內的那段代碼即可,你可以先複製或是將頁面保留在瀏覽器上,稍後我們會再回到這畫面。

新增 CookieYes 代碼範本

GTM 左側面板選擇代碼 > 右上角「新增」> 點擊中間「選擇代碼類型開始設定」 > 點擊探索「社群範本庫」> 搜尋「CookieYes」後選擇該範本 > 「新增至工作區」 > 點擊「新增」確定

安裝 CookieYes 同意聲明視窗

1. 將前面取得的 CookieYes 安裝代碼中的 Key 值填入「Website Key」欄位(如下圖)。

2. 觸發條件選擇「同意聲明初始化」,設定完成的畫面會如下圖,命名之後儲存即可。

如果對於觸發條件「同意聲明初始化」尚不熟悉的朋友,可以參考這篇文章:認識 GTM 網頁觸發條件:同意聲明初始化

到 CookieYes 後台打開支援同意聲明

回到 CookieYes 後台 > 選擇「進階設定」 > 將「支援 GCM」的選項打開

此舉可以讓我們的「CookieYes 同意聲明工具」直接與「Google 同意聲明模式」互動,當使用者在彈出的同意聲明視窗上選擇「允許」或是「接受」時,「Google 同意聲明模式」內的值也會同步更新。

看到這邊的你,如果忘記前面我們所說的,可以看下圖回憶一下,整個互動過程會像是圖片中這樣。(如果沒打開這個選項,我們必須要另外手動寫入「Google 同意聲明模式」的代碼,並將其與「同意聲明管理平台」連結,進而更新使用者的選擇。)

來到「GTM 預覽模式」測試我們的代碼是否有安裝成功,如果你是依照上述的步驟設定,接下來預期會看到的畫面以及結果應該會如下:

1. 使用者來到網站時,「同意聲明工具」視窗出現在網站上,此時「Google 同意聲明」狀態應該都是預設的 denied 狀態。

2. 在使用者選擇「接受全部」之後,「Google 同意聲明」狀態更改為 granted

網站是否出現同意聲明工具視窗?

很好,如預期的,網站上出現「同意聲明工具」視窗,接著到 GTM Tag Assistant 中確認 「Google 同意聲明模式」狀態。

在 Tag Assistant 中,點選左側面板的 Consent 事件,可以在右側介面中看到「Google 同意聲明模式」的狀態,如預期的全部都是 denied

(此時我們都沒有對「同意聲明工具視窗」進行任何動作,因此這樣的結果是正確的)

也可以確認其它事件的同意聲明狀態是否也為 Denied,例如載入 GTM 容器的 Container Loaded 事件,多了一個欄位 Current State(當前狀態) 顯示 Denied,這也是我們要的結果。

同樣的,我們也可以切到 GA4 中觀察發送出去的事件,是否也是 Denied 狀態。

確定在使用者未同意之前,網站上所有 Google 追蹤事件的「同意聲明」狀態皆為 Denied 後,我們就可以回到網站上與「同意聲明工具」互動,觀察接下來的變化是否如預期。

使用者點選「接受全部」後,狀態是否更改為 granted?

接著回到網站點選「接受全部」,再回到 Tag Assistant 中我們看看會發生什麼事。

在使用者點選「接受全部」按鈕之後,CookieYes 會自動發送 Google 同意聲明更新代碼(update),讓 Google 知道使用者已同意我們使用這些資訊,GA4 以及 Google Ad 等服務就可以開始搜集使用者資料進行優化。

讓我們來看一下,CookieYes 在使用者同意之後,在 Cookie 中儲存了什麼?

網頁上點選右鍵點擊「檢查」> 選擇「Application」頁籤 > 搜尋 cookieyes > 點擊 cookieyes-consent > 確認在點擊「接受全部」按鈕之後是否如下圖所示(如果沒同意,圖中 yes 的部分則會是 no)

當上述這些項目都檢查完畢且運作正確之後,我們還有最後一個動作要做,也就是利用 Cookie 中的資訊設定一個「第一方 Cookie 」變數搭配「規則運算式表格」變數作為「Google 同意聲明」的預設值使用。(至於為什麼我們要這麼做,後面會再解釋。)


GTM 左側面板選擇「變數」 > 下方「使用者定義的變數」區塊右上角點擊「新增」 > 選擇「第一方 Cookie 」> 「Cookie 名稱」欄位輸入 cookieyes-consent > 命名後儲存

如果對於「第一方 Cookie 變數」尚不熟悉的朋友,可以參考文章:GTM 變數介紹:第一方 Cookie

#2 設定「規則運算式表格」變數

在 CookieYes 儲存在瀏覽器的 Cookie 中,可以看到值為:

consentid:N01FUVZKZDBZUTNKNGxoNGJCaDJHSEVPOXdJT1FURTM,consent:yes,action:yes,necessary:yes,functional:yes,analytics:yes,performance:yes,advertisement:yes,other:yes

其中 analytics:yes 代表的是使用者同意網站運用其資料做分析應用,對應的是「Google 同意聲明模式」中的參數 analytics_stroage ,而 advertisement:yes 代表的是使用者同意網站將其資料用於廣告相關應用,對應的是「Google 同意聲明模式」中的參數 ad_storagead_user_data 以及 ad_personalization

接下來,我們將以 advertisement:yes 作為範例,運用 Cookie 中的這個值來設定「Google 同意聲明模式」中的參數值,指定其值為 denied 或是 granted,怎麼做呢?

深呼吸,喘口氣,讓我們繼續看下去。

GTM 左側面板選擇「變數」 > 下方「使用者定義的變數」區塊右上角點擊「新增」 > 選擇「規則運算式表格」變數 > 設定完畢之後命名儲存。

上面這段設定翻譯成中文的話,就是指:「當 Cookie 的值有出現 advertisement:yes 時(使用者點選了接受廣告追蹤的選項),輸出 granted,如果沒有,則輸出 denied

另一個 analytics:yes 也是一樣的設定方式,這邊就不再重複展示,你可以嘗試自己設定一遍。

回到我們設定的 CookieYes 同意聲明工具代碼中,在「Default Consent Setting」區塊中「新增設定」,於右側各欄位下拉選單中選擇剛剛設定的「規則運算式表格」變數,完成之後按下儲存,我們就可以到 GTM 預覽模式中進行測試。

在上述的設定中,各欄位名稱與「Google 同意聲明模式」的參數對照如下:

Analytics Cookies 對應 ad_storage
Advertisement Cookies 對應 analytics_storage
Share user data with 對應 ad_user_data
Use data for ads personalization 對應 ad_personalization

#4 搞定!測試一下

預期要在 GTM 預覽模式下看到跟之前一樣的結果,在使用者沒點擊「接受全部」按鈕之前,同意聲明預設狀態應該皆為 denied

使用者點擊「接受全部」按鈕之後,CookieYes 同意聲明工具會送出 update 指令,所有參數會更新為 granted

如果你的測試結果跟上述一樣,那你的「Google 同意聲明模式」設定就完成了,只要使用者沒有同意,所有參數都會是 denied,GA4 以及 Google Ad 不會接收到任何事件,也不會儲存任何 Cookie,將只會傳送部分匿名連線偵測的資料(Pings),供行為以及轉換模擬使用。

只有當使用者按下「接受全部」的同意按鈕後後,所有轉換追蹤以及 Cookie 的儲存才會恢復正常運作。


為什麼要另外再設定一次同意聲明預設狀態?

看到這邊的你,心裡應該會有個疑惑:

CookieYes 不是都已經幫我設定好 Google 同意聲明預設狀態了嗎?我們在這個步驟時就已經確認有更新成 granted 了,為什麼我們還要用「第一方 Cookie」以及「規則運算式表格」變數再設定一次?

這是因為,如果我們沒有用「第一方 Cookie」以及「規則運算式表格」變數另外設定同意聲明預設狀態,在同意聲明參數值更新為 granted這個步驟)之後前往瀏覽下一頁,你會發現預設的同意聲明狀態依然是 denied

看出問題所在了嗎?(好,圖很亂,但費點心理解一下)

當在使用者選擇同意之後,前往下一頁時,會發現有些事件依然是在 denied 的狀態下啟動(例如:page_view)。

儘管在上一頁使用者已經同意我們將「Google 同意聲明模式」參數更新為 granted,但到了下一頁,該參數的預設狀態依然是 denied,直到同意聲明工具自動更新之後,該頁的「Google 同意聲明模式」便會再度更新成 granted,而之後產生的事件才會繼續在 granted 的狀態下被收集。

這樣的結果,就是你會遺失了 page_view 事件(因為在「初始化 Initilization」位置載入 GA4 設定時,預設依然是 denied,但其實在前一頁已經獲得使用者,同意更新為 granted 了),最後 GA4 報表中可能會出現(not set)且沒收集到本應收集到的事件,如果照著 CookieYes 官方的設定方式,就會出現這樣的情況,這是需要注意的地方。

雖然 GTM 大神 Simo Ahava 在這篇文章中有提到,如果使用者在同一頁瀏覽到一半時給予了 granted,之前 denied 狀態下的事件都會被更新為 granted 狀態然後發送出去(注意!只能在同一頁)。

但我們透過幾個方式檢查之後發現沒這麼穩定,有時 page_view 是在 granted 狀態下,有時則不是,且 Simo Ahava 自己也在文末說到,如果會重新發送之前的事件,那 session_start 應該也會被送出去,但他也不知道為什麼 session_start 沒有被更新到然後發送出去,有想要更進一步了解的朋友可以去看看他的這篇文章

Simo Ahava 於文末所提到的

所以保險一點,我們還是自己透過「第一方 Cookie」以及「規則運算式表格」變數另外設定同意聲明預設狀態。

(不過 Cookiebot 在同樣的情況下就做得比較好,到了下一頁儘管預設同意聲明依然是 denied,但馬上就在 「初始化 initialization」之前更新成 granted 了 )

此為 Cookiebot 在預覽模式中的畫面

補充一下

這些是針對 Google 服務的設定

本篇文章是用於設定 Google 同意聲明模式,其 denied 狀態下,只會阻擋像是 GA4、Google Ad 以及 Floodlight 等服務,如果你的網站上有其它如 Meta Pixel 等廣告分析追蹤代碼,你會需要用到 GTM 內建的「同意聲明總覽」來控制其他非 Google 服務相關的代碼。

相關設定方式可以參考這篇文章:如何用 GTM 的「同意聲明總覽」控制代碼的啟動?

GA4 廣告同意聲明信號確認

不管使用者對「Google 同意聲明模式」中的廣告相關參數是給予 granted 或是 denied,只要有傳送同意聲明給 Google,這邊皆會呈現綠勾,你才能在歐盟以及英國地區使用 Google 廣告服務。

在安裝的過程中,你會要不斷反覆測試,如果需要同意聲明視窗再度出現,只要刪除瀏覽器中的 Cookie 就可以了,刪除的方式很簡單,既然剛剛我們找得到 Cookie,就也有辦法刪除它

網頁上點選右鍵點擊「檢查」> 選擇「Application」頁籤 > 搜尋 cookieyes > 選擇 cookieyes-consent > 點擊上方 X 就可以刪除


總結一下

在這篇文章中,我們講述了 Google 同意聲明模式基本版進階版(V2)的差異,並解釋了「同意聲明管理工具」是如何與「Google 同意聲明模式」互動,強調這兩者是獨立不同的工具,最後告訴你該如何透過 GTM 進行設定,以確保 Google 相關服務可以順利運作,並遵循 Google 在隱私方面的規範要求。

上述這些,雖然對初入門 GTM 的使用者來說,這些內容可能有點複雜且難以理解,但這是在正式啟用追蹤代碼前必須了解且不可忽略的重要事項

因此,我們建議花點時間好好了解這一部分,儘管台灣目前的法規沒有像 GDPR 那樣嚴格的規定,但隨著人們對網路隱私意識的提高,相關法規未來可能會逐步跟進,先行了解並未雨綢繆,總是一個明智之舉。


延伸閱讀

如果你很喜歡這篇文章並且覺得內容有幫助,又剛有些多餘時間,歡迎看看其它文章,繼續探索(這坑?這地獄?這片樂土?)

同時,如果對於內容有疑問或是建議,也歡迎你留言告訴我們:)