在網站上設定同意聲明模式

本頁適用於在網站上維護自有同意聲明解決方案,且想整合同意聲明模式的開發人員。如要瞭解同意聲明模式,請參閱「同意聲明模式簡介」。如果您使用同意聲明管理平台 (CMP) 取得使用者同意聲明,請進一步瞭解如何使用 CMP 設定同意聲明模式

您可以以基本或進階方式導入同意聲明模式。請查看貴公司的規範,選擇導入方法和要設定的預設值。進一步瞭解基本與進階同意聲明模式

事前準備

導入同意聲明模式前,請注意以下事項:

  • 如果您使用代碼管理工具,且想要自行維護橫幅,建議您透過代碼管理工具容器載入橫幅。如要這樣做,您需要建立同意聲明模式範本。或者,您也可以使用社群範本庫中的同意模式範本。

  • 如果您使用 gtag.js,請務必在網站的每個網頁上安裝 Google 代碼。同意聲明模式程式碼會加到網站的每個網頁。

如要設定同意聲明模式,您需要完成下列事項:
  1. 在使用者授予同意聲明前:設定預設同意聲明狀態
  2. 根據使用者與同意聲明設定的互動情形更新同意聲明狀態

為您使用的每個同意聲明類型設定預設值。系統預設不會設定同意聲明模式值。

建議將預設的同意聲明設定限制在向訪客顯示同意橫幅的區域。這樣在需要使用同意橫幅的區域,就能保存成效評估資料,Google 代碼也會據此調整行為。而且,即使沒有同意橫幅資料或同意橫幅不適用,評估結果也不會因此受到影響。請參閱「特定區域的行為」。

如要調整預設的評估功能,請在網站的每個網頁上呼叫 gtag('consent', 'default', ...) 指令,再呼叫任何傳送評估資料的指令 (例如 configevent)。

舉例來說,如要預設拒絕所有參數的同意聲明,請按照下列步驟操作:

gtag('consent', 'default', {
 
'ad_storage': 'denied',
 
'ad_user_data': 'denied',
 
'ad_personalization': 'denied',
 
'analytics_storage': 'denied'
});

選用:整合非同步同意聲明管理平台

如果橫幅是以非同步方式載入,則有時可能無法在 Google 代碼之前執行。為處理這類情況,請指定 wait_for_update 和毫秒值,以便控制資料傳送前等待的時間長度。

舉例來說,如要預設拒絕特定網頁的 ad_storage,但允許 CMP 更新同意聲明狀態,請使用 wait_for_update。在下列程式碼中,ad_storage 預設為 denied,同意聲明工具在標記觸發前有 500 毫秒的時間呼叫 gtag('consent', 'update', ...)

  gtag('consent', 'default', {
   
'ad_storage': 'denied',
   
'wait_for_update': 500
 
});

使用 Google 代碼管理工具時,請使用代碼管理工具同意聲明 API 自行建立範本。以下範例可做為起點的參考。

使用代碼管理工具專屬 API 管理同意聲明狀態 setDefaultConsentStateupdateConsentStategtagSet API 可用於視需要設定 ads_data_redaction 和網址傳送設定。

如要傳送使用者的同意狀態,請使用 update 指令。由於同意聲明模式不會儲存同意聲明選項,因此請在使用者與同意聲明管理工具互動後立即更新同意聲明狀態。使用者同意後,請保留其選擇,並據此在後續網頁中呼叫更新指令。

請務必為所有同意聲明類型設定正確的值。如需支援類型的完整詳細資料,請參閱 API 參考資料

以下程式碼範例說明如何在使用者同意所有選項時,將同意聲明狀態更新為 granted

<script>
function allConsentGranted() {
  gtag
('consent', 'update', {
   
'ad_user_data': 'granted',
   
'ad_personalization': 'granted',
   
'ad_storage': 'granted',
   
'analytics_storage': 'granted'
 
});
}
</script>
<!-- Invoke your consent function when a user interacts with your banner -->
<body>
  ...
 
<button onclick="allConsentGranted()">Yes</button>
  ...
</body>

使用同意聲明模式範本時,使用者與橫幅互動時,系統應會自動更新使用者同意聲明。

如果您自行建立同意聲明模式範本,請使用代碼管理工具專屬的 API 來管理同意聲明狀態 setDefaultConsentStateupdateConsentStategtagSet API 可用於視需要設定 ads_data_redaction 和網址傳送設定。

導入範例

以下範例會將多個同意聲明模式參數預設為 denied。使用者選擇同意聲明後,相關參數會更新為 granted

程式碼的順序非常重要。如果同意聲明程式碼的呼叫順序不正確,同意聲明預設值就不會生效。具體情況可能因業務需求而異,但一般來說,程式碼應依下列順序執行:

  1. 載入 Google 代碼。這是預設程式碼片段。您應更新預設程式碼片段 (請見下方),加入對 gtag('consent', 'default', ...) 的呼叫。

  2. 載入同意聲明解決方案。如果同意聲明解決方案是以非同步方式載入,請參閱「與非同步同意聲明管理平台整合」,瞭解如何確保這項操作以正確順序進行。

  3. 如果不是由同意聲明解決方案處理,請在使用者表示同意後呼叫 gtag('consent', 'update', ...)

<script>
// Define dataLayer and the gtag function.
window
.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}

// Set default consent to 'denied' as a placeholder
// Determine actual values based on your own requirements
gtag
('consent', 'default', {
 
'ad_storage': 'denied',
 
'ad_user_data': 'denied',
 
'ad_personalization': 'denied',
 
'analytics_storage': 'denied'
});
</script>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=TAG_ID">
</script>
<script>
  window
.dataLayer = window.dataLayer || [];
 
function gtag(){dataLayer.push(arguments);}

  gtag
('js', new Date());
  gtag
('config', 'TAG_ID');
</script>

<!-- Create one update function for each consent parameter -->
<script>
 
function consentGrantedAdStorage() {
    gtag
('consent', 'update', {
     
'ad_storage': 'granted'
   
});
 
}
</script>
<!-- Invoke your consent functions when a user interacts with your banner -->
<body>
  ...
 
<button onclick="consentGrantedAdStorage">Yes</button>
  ...
</body>

如果網站使用代碼管理工具,建議您使用 CMP 處理訪客同意聲明選項的更新作業。CMP 會在社群範本庫中提供範本,方便您建立用於管理同意聲明模式的代碼。

如果無法使用範本,您可以改為更新網頁上的程式碼,如下所示。程式碼的順序非常重要。如果同意聲明程式碼的呼叫順序不正確,同意聲明預設值就無法運作。

<script>
 
// Define dataLayer and the gtag function.
  window
.dataLayer = window.dataLayer || [];
 
function gtag(){dataLayer.push(arguments);}

 
// Set default consent to 'denied' as a placeholder
 
// Determine actual values based on your own requirements
  gtag
('consent', 'default', {
   
'ad_storage': 'denied',
   
'ad_user_data': 'denied',
   
'ad_personalization': 'denied',
   
'analytics_storage': 'denied'
 
});
</script>

<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j
=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-XXXXXX');</script>
<!-- End Google Tag Manager -->

<!-- Create one update function for each consent parameter -->
<script>
 
function consentGrantedAdStorage() {
    gtag
('consent', 'update', {
     
'ad_storage': 'granted'
   
});
 
}
</script>
<!-- Invoke your consent functions when a user interacts with your banner -->
<body>
  ...
 
<button onclick="consentGrantedAdStorage()">Yes</button>
  ...
</body>

為持續維護以隱私權為重的數位廣告生態,Google 將加強落實歐盟地區使用者同意授權政策

進一步瞭解 Google 的歐洲經濟區流量同意聲明模式更新

除了 ad_storageanalytics_storage 之外,同意聲明模式使用者還需要傳送兩個新參數:

欄位名稱 接受的值 說明
ad_user_data 'granted' | 'denied' 設定同意聲明,指明可否將廣告相關使用者資料傳送給 Google。
ad_personalization 'granted' | 'denied' 設定個人化廣告的同意聲明。

進階同意聲明功能包括:

  • 使用 Google 代碼 UI 設定要與哪些 Google 服務共用資料
  • 設定地理區域的行為。
  • 在使用者未授權使用 Cookie 時,透過網址傳遞廣告點擊、用戶端 ID 和工作階段 ID 資訊。
  • 在使用者拒絕接受廣告 Cookie 時,完全遮蓋 (移除) 廣告資訊。

特定地區的行為

如要變更代碼針對特定地區使用者的預設行為,請在同意聲明指令中指定地區。提供區域值後,您就能根據使用者的地理位置微調預設值。如要進一步瞭解如何識別地區,請參閱「地理 ID」。

以下範例會將 analytics_storage 設為 denied,適用於西班牙和阿拉斯加州的使用者,並將 ad_storage 設為 denied,適用於所有使用者。

  gtag('consent', 'default', {
   
'analytics_storage': 'denied',
   
'region': ['ES', 'US-AK']
 
});

  gtag
('consent', 'default', {
   
'ad_storage': 'denied'
 
});

如果您使用範本建立代碼,範本可能會提供控制項,讓您設定特定區域的行為。如果您要自行建構範本代碼,請參閱「建立同意聲明模式範本」,進一步瞭解如何設定特定區域的行為

系統會優先採用最精確的參數

如果同一個網頁上有兩個預設同意聲明指令,且分別提供區域和子區域的值,則會套用更明確區域的指令。舉例來說,如果您將美國區域的 ad_storage 設為 granted,而美國加州區域的 ad_storage 設為 denied,來自加州的訪客就會套用更精確的美國加州區域設定。在本例中,這表示來自美國加州的訪客會將 ad_storage 設為 denied

區域 ad_storage 行為
美國 'granted' 適用於美國境內「非」加州的使用者
US-CA 'denied' 適用於美國-加州使用者
未指定 'granted' 使用預設值 'granted'。在這個範例中,適用於不在美國或美國-加拿大的訪客

透過網址傳送廣告點擊、用戶端 ID 和工作階段 ID 資訊

使用者點按廣告後前往網站時,系統可能會將廣告相關資訊當做查詢參數,附加到到達網頁網址。為了提高重要事件的準確度,這項資訊通常會儲存在網域的第一方 Cookie 中。

不過,如果 ad_storage 設為 denied,系統就不會在本機儲存這項資訊。如要改善 ad_storagedenied 時的廣告點擊評估品質,您可以選擇透過網址傳送機制,透過網址參數傳送各頁的廣告點擊資訊。

同樣地,如果 analytics_storage 設為 denied,您就可以使用網址傳送功能,在各個網頁中傳送事件和工作階段 (包括重要事件) 的數據分析,而不需要使用 Cookie。

如要使用網址轉送功能,必須符合下列條件:

  • Google 代碼會偵測同意聲明,並顯示在網頁上。
  • 廣告主已啟用網址穿透功能。
  • 網頁已導入同意聲明模式。
  • 出站連結會連往與目前網頁網域相同的網域。
  • 網址中包含 Google 點擊 ID 或 DCLID (僅限 Google Ads 和 Floodlight 代碼)

如要啟用這項功能,請將 url_passthrough 參數設為 true。在預設程式碼片段中,在任何 config 指令之前加入下列指令:

gtag('set', 'url_passthrough', true);

如果您使用範本建立代碼,範本可能會提供控制項,讓您設定網址傳送。如果您自行建構範本代碼,請參閱「建立同意聲明模式範本」,進一步瞭解如何使用 gtagSet 自訂範本 API 設定網址轉送

或者,您也可以使用下列選項在轉換連接器和/或 Analytics 代碼中設定

Google AdsFloodlight 代碼:

如要啟用這項功能,請建立 (或使用現有的) 轉換連結器代碼,並確認已勾選「啟用所有網頁網址的連結」。如要瞭解如何建立轉換連接器代碼,請參閱基本設定

針對 Google Analytics 代碼:

  1. 在代碼管理工具中,前往「要設定的欄位」,然後依序選取「代碼設定」>「要設定的欄位」
  2. 展開「要設定的欄位」部分後,按一下「新增列」
  3. 在「欄位名稱」中輸入 url_passthrough
  4. 在「Value」 中輸入「true」。
  5. 儲存代碼並發布。

或者,您也可以在網站的每個網頁上,將 url_passthrough 參數設為 GTM 安裝程式碼片段前的 true

window.dataLayer = window.dataLayer || [];
function gtag(){window.dataLayer.push(arguments);}
gtag('set', 'url_passthrough', true);

使用網址傳輸功能時,系統會在使用者瀏覽網站上的網頁時,將一些查詢參數附加到連結中:

  • gclid
  • dclid
  • gclsrc
  • _gl
  • wbraid

為獲得最佳成效,請確保:

  1. 網站上的重新導向會傳遞上述所有查詢參數。
  2. 您的數據分析工具會忽略網頁網址中的這些參數。
  3. 這些參數不會影響網站行為。

遮蓋廣告資料

如果 ad_storagedenied,系統就不會為廣告目的設定新的 Cookie。此外,除非用於防範垃圾郵件和詐欺,否則不會使用先前在 google.com 和 doubleclick.net 上設定的第三方 Cookie。傳送給 Google 的資料仍會包含完整網頁網址,包括網址參數中的任何廣告點擊資訊。

如要進一步在 ad_storagedenied 時遮蓋廣告資料,請將 ads_data_redaction 設為 true

gtag('set', 'ads_data_redaction', true);

ads_data_redactiontrue,而 ad_storagedenied 時,Google Ads 和 Floodlight 代碼在網路要求中傳送的廣告點擊 ID 會遭到遮蓋。網路要求也會透過無 Cookie 的網域傳送。

如果您使用範本建立代碼,該範本可能會提供控制選項,進一步遮蓋廣告資料。如果您要自行建構範本代碼,請參閱「建立同意模式範本」,進一步瞭解如何刪除廣告資料

常見問題

導入進階同意聲明模式時,請在使用者同意的頁面上呼叫更新指令。

如果網頁在同意聲明變更後,以拒絕同意聲明的狀態載入,然後重新載入已授予同意聲明的狀態,Google 代碼可能會遺失原始網頁中的關鍵資料點。後續的報表可能會不完整。

舉例來說,在 Google Analytics 中,許多已徵得同意聲明的工作階段都可能缺少 session_start 事件。

為避免這個問題,請在使用者的同意聲明狀態變更時呼叫更新指令。

在某些情況下,當同意類型從拒絕更新為同意時,Google 代碼可能會根據這項更新傳送評估資料。如果在頁面卸載時呼叫更新指令,瀏覽器可能會在網路流量完成前取消該流量。後續的報表可能會不完整。

盡可能在頁面卸載前,確保更新指令已正確記錄。

後續步驟

舊版代碼控制項

如果您使用舊版代碼 (例如 ga.js、analytics.js 或 conversion.js),請更新為 gtag.js 或 Google 代碼管理工具。

如要進一步瞭解其他舊版代碼的隱私權控制項,請參閱下列說明文件: