Tại sao client-side tracking 2026 không còn đủ
Google Ads tối ưu bằng smart bidding cần ít nhất 30 conversion/30 ngày ở cấp campaign và 50 conversion/30 ngày cho Performance Max. Khi data conversion mất 25-35%, smart bidding không học được, dẫn đến: CPA tăng, ROAS giảm, ngân sách bị tiêu hao vào audience sai.
| Nguồn mất data | Tác động | Server-side khắc phục? |
|---|---|---|
| iOS 18 Private Relay | −12% conversion từ iPhone | ✅ Có |
| Chrome 3PC removal (Q4/2025) | −8% remarketing audience | ✅ Có (first-party cookie) |
| uBlock Origin / adblock | −15-25% pageview tracked | ✅ Có (custom domain) |
| Browser cookie 7-day cap (ITP) | −10% delayed conversion | ✅ Có (server-stored) |
| Network blocking (firewall corp) | −3-8% B2B traffic | ✅ Có |
Kiến trúc GTM Server Container trên Google Cloud Run
Đây là kiến trúc TyphanAds dùng cho 9 dự án từ 9/2025:
- Frontend gửi event qua GTM Web Container (như cũ)
- GTM Web chuyển event đến GTM Server endpoint (ví dụ:
https://gtm.typhanads.com) — custom domain để bypass adblock - GTM Server (Cloud Run) xử lý, hash dữ liệu PII, thêm UTM, GCLID
- GTM Server gửi đồng thời đến Google Ads, GA4, Meta CAPI, TikTok
- Nếu user mua hàng thật, backend gửi webhook đến GTM Server với GCLID lưu sẵn → fire conversion "thật"
GTM Server mặc định có URL https://....appspot.com bị adblock chặn 60%. Cấu hình custom subdomain (vd: gtm.typhanads.com) chỉ tới Cloud Run giúp tăng tỷ lệ event capture từ 65% lên 94%.
Mapping Enhanced Conversions for Leads
Enhanced Conversions for Leads (ECL) cho phép gửi email/phone hash của user về Google để match với Google account, từ đó báo cáo conversion offline (deal closed) ngược về Google Ads. Yêu cầu:
- Hash SHA-256 bắt buộc — không gửi plain text
- Email lowercase + trim space trước khi hash
- Phone format E.164 (+84xxxxxxxxx)
- Truyền qua biến
user_datatrong tag Google Ads Conversion Tracking - Gửi cùng GCLID để Google match
Debug khi data discrepancy giữa server-side và Google Ads UI
Khi mới setup, bạn sẽ thấy Google Ads UI hiển thị conversion ít hơn GTM Server ghi nhận. Trình tự debug:
- Vào GTM Server Preview Mode → xác nhận event "purchase" fire có user_data đầy đủ
- Vào Google Ads → Tools → Conversions → chọn conversion action → kiểm tra "Status" phải là "Recording conversions"
- Đợi 24-48h — Google Ads attribution không realtime cho server-side
- Nếu sau 48h vẫn lệch > 15%, kiểm tra GCLID có đúng được lưu trong cookie và truyền lên server
- Kiểm tra Consent Mode v2 status: nếu user denied "ad_storage", conversion bị "modeled" — vẫn được tính nhưng không attribute exact
"Năm 2026, ai không có server-side tracking đang ngầm trả 25-40% ngân sách Google Ads cho việc Google AI không có data để học. Đó là tax ẩn lớn nhất trong digital marketing hiện đại."