Tổng quan Consent Mode v2
Consent Mode là cơ chế Google cho phép website truyền tín hiệu consent đến Google tags (Ads, GA4, Floodlight). Version 2 (ra mắt tháng 3/2024) thêm 2 signal mới: ad_user_data và ad_personalization — bắt buộc để dùng Enhanced Conversions for Leads và Audience targeting.
| Signal | Mục đích | Bắt buộc cho |
|---|---|---|
ad_storage | Lưu cookie cho ads (GCLID, conversion ID) | Tất cả Google Ads |
ad_user_data | Gửi user data (email/phone hash) cho Google | Enhanced Conversions |
ad_personalization | Cho phép cá nhân hóa quảng cáo | Remarketing, similar audience |
analytics_storage | Lưu cookie GA4 (_ga, _ga_*) | GA4 analytics |
Code mẫu setup đúng cho website Việt Nam
Đặt code này trước tag Google Ads/GA4 trong <head>:
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
// 1. Default: denied (chưa xin consent → coi như từ chối)
gtag('consent', 'default', {
'ad_storage': 'denied',
'ad_user_data': 'denied',
'ad_personalization': 'denied',
'analytics_storage': 'denied',
'wait_for_update': 500 // đợi 500ms để CMP load
});
// 2. URL passthrough giúp truyền GCLID khi cookie bị deny
gtag('set', 'url_passthrough', true);
// 3. Conversion modeling khi user denied
gtag('set', 'ads_data_redaction', true);
</script>Sau khi user click "Đồng ý" trên CMP banner, gọi:
gtag('consent', 'update', {
'ad_storage': 'granted',
'ad_user_data': 'granted',
'ad_personalization': 'granted',
'analytics_storage': 'granted'
});Test bằng Google Tag Assistant
- Cài Chrome extension "Tag Assistant Companion"
- Mở website, F12 → Tab "Tag Assistant"
- Kiểm tra Consent State của từng tag:
ad_storage: deniedtrước consent,grantedsau khi click "Đồng ý" - Vào Google Ads → Tools → Conversions → chọn conversion → "Diagnostics" → phải hiển thị "Consent Mode signal received"
6 lỗi phổ biến TyphanAds gặp khi audit Consent Mode
Nguyên nhân: code consent default đặt sau tag Google Ads. Hậu quả: tag chạy với consent mặc định "granted" của Google, không có modeled conversion. Sửa: di chuyển consent default lên TRƯỚC mọi tag, kể cả GTM container.
Nếu CMP banner load chậm (1-2s), Google tag đã fire với "denied" trước khi user kịp consent. Sửa: thêm wait_for_update: 500 hoặc 2000 nếu CMP chậm.
Khi ad_storage = denied, Google Ads không lưu GCLID vào cookie. Phải bật url_passthrough = true để truyền GCLID qua URL (?gad_source=1&gclid=...) tới conversion page.
Nhiều CMP chỉ set cookie riêng nhưng không gọi gtag('consent','update',...). Phải config CMP trigger gtag consent update — đa số CMP có integration sẵn cho Google Consent Mode v2.
Theo Nghị định 13/2023, xử lý dữ liệu cá nhân yêu cầu consent rõ ràng. Default "granted" = vi phạm. Luôn default "denied" và update sau khi user click đồng ý.
Mobile Safari có cách xử lý cookie khác desktop Chrome. 31% khách hàng TyphanAds audit có Consent Mode hoạt động đúng desktop nhưng broken trên mobile — luôn test cả 2.