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

如果您是網站的開發人員,並維護自己的同意聲明解決方案,請參閱本頁內容,瞭解如何整合同意聲明模式。如要瞭解同意聲明模式,請參閱「同意聲明模式簡介」。如果您使用同意聲明管理平台 (CMP) 取得使用者同意聲明,請參閱這篇文章,進一步瞭解如何透過 CMP 設定同意聲明模式。

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

事前準備

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

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

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

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

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

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

gtag.js

如要調整預設評估功能,請在網站上每個網頁的任何指令之前,呼叫 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 管理同意聲明狀態 setDefaultConsentStateupdateConsentState。您可以視需要使用 gtagSet API 設定 ads_data_redaction 和網址傳遞設定。

gtag.js

如要傳送使用者的同意聲明狀態,請使用 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 管理同意聲明狀態 setDefaultConsentStateupdateConsentState。您可以視需要使用 gtagSet API,適當設定 ads_data_redaction 和網址傳遞設定。

導入範例

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

gtag.js

這裡的程式碼順序非常重要。如果同意聲明程式碼的呼叫順序有誤,同意聲明預設值將無法運作。視業務需求而定,具體做法可能有所不同,但一般來說,程式碼應依下列順序執行:

  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 代碼使用者介面設定要與哪些 Google 服務共用資料
  • 設定地理區域的行為。
  • 如果使用者未同意使用 Cookie,請在網址中傳遞廣告點擊、用戶端 ID 和工作階段 ID 資訊。
  • 在使用者拒絕接受廣告 Cookie 時,完全遮蓋 (移除) 廣告資訊。

特定地區的行為

如要為特定區域的訪客設定預設同意聲明狀態,請在 gtag 同意聲明預設指令中指定區域 (根據 ISO 3166-2)。使用區域值可協助您遵守區域法規。

您可以為特定區域設定預設值,然後為所有其他區域設定不同的預設值。如果沒有區域參數,gtag 同意聲明預設指令會為所有未納入其他區域專屬指令的訪客設定預設值。

gtag.js

以下範例會針對西班牙和阿拉斯加的使用者,將 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,則來自加州的訪客會套用更具體的美國加州設定。以這個範例來說,這表示來自美國加州 (US-CA) 的訪客會將 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 代碼)

gtag.js

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

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

代碼管理工具

如果您使用範本建立代碼,範本可能會有設定網址傳遞的控制項。如果您要自行建立範本代碼,請參閱「建立同意聲明模式範本」,進一步瞭解如何使用 gtagSet 自訂範本 API 設定網址直通

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

Google AdsFloodlight 代碼:

如要啟用這項功能,請建立 (或使用現有的) 轉換連結器代碼,並確保已勾選「啟用所有頁面網址上的連結」。如需建立轉換連接器代碼的操作說明,請參閱基本設定

Google Analytics 代碼:

  1. 在代碼管理工具中,前往「要設定的欄位」,然後選取「代碼設定」

    要設定的欄位**。

    1. 展開「要設定的欄位」部分後,按一下「新增列」
    2. 在「欄位名稱」部分,輸入 url_passthrough
    3. 在「Value」部分輸入「true」。
    4. 儲存代碼並發布。

    或者,您也可以在網站的每個網頁上,將 url_passthrough 參數設為 true,然後再安裝 Google 代碼管理工具程式碼片段。

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

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

    • gclid
    • dclid
    • gclsrc
    • _gl
    • wbraid

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

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

遮蓋廣告資料

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

gtag.js

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

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

如果 ads_data_redactiontruead_storagedenied,Google Ads 和 Floodlight 代碼在網路要求中傳送的廣告點擊 ID 將會經過修訂。網路要求也會透過不含 Cookie 的網域傳送。

代碼管理工具

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

常見問題

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

如果網頁載入時使用者拒絕提供同意聲明,但同意聲明變更後重新載入網頁,Google 代碼可能會遺失原始網頁的重要資料點。後續報表可能不完整。

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

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

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

如有可能,請確保更新指令在網頁卸載前已妥善記錄。

後續步驟

舊版代碼控制項

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

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