本頁適用於在網站上維護自有同意聲明解決方案,且想整合同意聲明模式的開發人員。如要瞭解同意聲明模式,請參閱「同意聲明模式簡介」。如果您使用同意聲明管理平台 (CMP) 取得使用者同意聲明,請進一步瞭解如何使用 CMP 設定同意聲明模式。
您可以以基本或進階方式導入同意聲明模式。請查看貴公司的規範,選擇導入方法和要設定的預設值。進一步瞭解基本與進階同意聲明模式。
事前準備
導入同意聲明模式前,請注意以下事項:
如果您使用代碼管理工具,且想要自行維護橫幅,建議您透過代碼管理工具容器載入橫幅。如要這樣做,您需要建立同意聲明模式範本。或者,您也可以使用社群範本庫中的同意模式範本。
如果您使用 gtag.js,請務必在網站的每個網頁上安裝 Google 代碼。同意聲明模式程式碼會加到網站的每個網頁。
設定同意聲明模式
如要設定同意聲明模式,您需要完成下列事項:- 在使用者授予同意聲明前:設定預設同意聲明狀態。
- 根據使用者與同意聲明設定的互動情形更新同意聲明狀態。
設定預設同意聲明狀態
為您使用的每個同意聲明類型設定預設值。系統預設不會設定同意聲明模式值。
建議將預設的同意聲明設定限制在向訪客顯示同意橫幅的區域。這樣在需要使用同意橫幅的區域,就能保存成效評估資料,Google 代碼也會據此調整行為。而且,即使沒有同意橫幅資料或同意橫幅不適用,評估結果也不會因此受到影響。請參閱「特定區域的行為」。
如要調整預設的評估功能,請在網站的每個網頁上呼叫 gtag('consent',
'default', ...)
指令,再呼叫任何傳送評估資料的指令 (例如 config
或 event
)。
舉例來說,如要預設拒絕所有參數的同意聲明,請按照下列步驟操作:
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 管理同意聲明狀態 setDefaultConsentState
和 updateConsentState
。gtagSet
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 來管理同意聲明狀態 setDefaultConsentState
和 updateConsentState
。gtagSet
API 可用於視需要設定 ads_data_redaction
和網址傳送設定。
導入範例
以下範例會將多個同意聲明模式參數預設為 denied
。使用者選擇同意聲明後,相關參數會更新為 granted
。
程式碼的順序非常重要。如果同意聲明程式碼的呼叫順序不正確,同意聲明預設值就不會生效。具體情況可能因業務需求而異,但一般來說,程式碼應依下列順序執行:
載入 Google 代碼。這是預設程式碼片段。您應更新預設程式碼片段 (請見下方),加入對
gtag('consent', 'default', ...)
的呼叫。載入同意聲明解決方案。如果同意聲明解決方案是以非同步方式載入,請參閱「與非同步同意聲明管理平台整合」,瞭解如何確保這項操作以正確順序進行。
如果不是由同意聲明解決方案處理,請在使用者表示同意後呼叫
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>
升級至同意聲明模式第 2 版
為持續維護以隱私權為重的數位廣告生態,Google 將加強落實歐盟地區使用者同意授權政策。
進一步瞭解 Google 的歐洲經濟區流量同意聲明模式更新。
除了 ad_storage
和 analytics_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_storage
為 denied
時的廣告點擊評估品質,您可以選擇透過網址傳送機制,透過網址參數傳送各頁的廣告點擊資訊。
同樣地,如果 analytics_storage
設為 denied
,您就可以使用網址傳送功能,在各個網頁中傳送事件和工作階段 (包括重要事件) 的數據分析,而不需要使用 Cookie。
如要使用網址轉送功能,必須符合下列條件:
- Google 代碼會偵測同意聲明,並顯示在網頁上。
- 廣告主已啟用網址穿透功能。
- 網頁已導入同意聲明模式。
- 出站連結會連往與目前網頁網域相同的網域。
網址中包含 Google 點擊 ID 或 DCLID (僅限 Google Ads 和 Floodlight 代碼)
如要啟用這項功能,請將 url_passthrough
參數設為 true
。在預設程式碼片段中,在任何 config
指令之前加入下列指令:
gtag('set', 'url_passthrough', true);
如果您使用範本建立代碼,範本可能會提供控制項,讓您設定網址傳送。如果您自行建構範本代碼,請參閱「建立同意聲明模式範本」,進一步瞭解如何使用 gtagSet
自訂範本 API 設定網址轉送。
或者,您也可以使用下列選項在轉換連接器和/或 Analytics 代碼中設定
Google Ads 和 Floodlight 代碼:
如要啟用這項功能,請建立 (或使用現有的) 轉換連結器代碼,並確認已勾選「啟用所有網頁網址的連結」。如要瞭解如何建立轉換連接器代碼,請參閱基本設定。
針對 Google Analytics 代碼:
- 在代碼管理工具中,前往「要設定的欄位」,然後依序選取「代碼設定」>「要設定的欄位」。
- 展開「要設定的欄位」部分後,按一下「新增列」。
- 在「欄位名稱」中輸入
url_passthrough
。 - 在「Value」 中輸入「true」。
- 儲存代碼並發布。
或者,您也可以在網站的每個網頁上,將 url_passthrough
參數設為 GTM 安裝程式碼片段前的 true
。
window.dataLayer = window.dataLayer || [];
function gtag(){window.dataLayer.push(arguments);}
gtag('set', 'url_passthrough', true);
使用網址傳輸功能時,系統會在使用者瀏覽網站上的網頁時,將一些查詢參數附加到連結中:
gclid
dclid
gclsrc
_gl
wbraid
為獲得最佳成效,請確保:
- 網站上的重新導向會傳遞上述所有查詢參數。
- 您的數據分析工具會忽略網頁網址中的這些參數。
- 這些參數不會影響網站行為。
遮蓋廣告資料
如果 ad_storage
為 denied
,系統就不會為廣告目的設定新的 Cookie。此外,除非用於防範垃圾郵件和詐欺,否則不會使用先前在 google.com 和 doubleclick.net 上設定的第三方 Cookie。傳送給 Google 的資料仍會包含完整網頁網址,包括網址參數中的任何廣告點擊資訊。
如要進一步在 ad_storage
為 denied
時遮蓋廣告資料,請將 ads_data_redaction
設為 true
。
gtag('set', 'ads_data_redaction', true);
當 ads_data_redaction
為 true
,而 ad_storage
為 denied
時,Google Ads 和 Floodlight 代碼在網路要求中傳送的廣告點擊 ID 會遭到遮蓋。網路要求也會透過無 Cookie 的網域傳送。
如果您使用範本建立代碼,該範本可能會提供控制選項,進一步遮蓋廣告資料。如果您要自行建構範本代碼,請參閱「建立同意模式範本」,進一步瞭解如何刪除廣告資料。
常見問題
轉換頁面未更新同意聲明狀態
導入進階同意聲明模式時,請在使用者同意的頁面上呼叫更新指令。
如果網頁在同意聲明變更後,以拒絕同意聲明的狀態載入,然後重新載入已授予同意聲明的狀態,Google 代碼可能會遺失原始網頁中的關鍵資料點。後續的報表可能會不完整。
舉例來說,在 Google Analytics 中,許多已徵得同意聲明的工作階段都可能缺少 session_start 事件。
為避免這個問題,請在使用者的同意聲明狀態變更時呼叫更新指令。
同意聲明在網頁重新載入前立即更新
在某些情況下,當同意類型從拒絕更新為同意時,Google 代碼可能會根據這項更新傳送評估資料。如果在頁面卸載時呼叫更新指令,瀏覽器可能會在網路流量完成前取消該流量。後續的報表可能會不完整。
盡可能在頁面卸載前,確保更新指令已正確記錄。
後續步驟
舊版代碼控制項
如果您使用舊版代碼 (例如 ga.js、analytics.js 或 conversion.js),請更新為 gtag.js 或 Google 代碼管理工具。
如要進一步瞭解其他舊版代碼的隱私權控制項,請參閱下列說明文件: