Nếu bạn đang chạy quảng cáo Facebook và chỉ dựa vào một dataset duy nhất để tracking toàn bộ dữ liệu chuyển đổi trên website, bạn đang đặt cược toàn bộ hiệu suất quảng cáo vào một điểm lỗi duy nhất. Chỉ cần dataset đó bị vô hiệu hóa — dù vì vi phạm chính sách, bị report, hay đơn giản là lỗi kỹ thuật — toàn bộ dữ liệu học máy (machine learning) mà Facebook đã tích lũy sẽ mất trắng, và bạn phải bắt đầu lại từ đầu với một pixel “non” chưa có data.
Mục lục
ToggleTrong bài viết này, mình sẽ hướng dẫn bạn cách gắn thêm nhiều Facebook Dataset backup song song thông qua Google Tag Manager (GTM) — hoàn toàn miễn phí, chỉ bắn dữ liệu từ trình duyệt (browser-side), không cần server riêng. Các dataset backup này sẽ âm thầm thu thập data song song với dataset chính, để khi dataset chính gặp sự cố, bạn có ngay dataset thay thế đã được “nuôi” sẵn data — chuyển sang dùng ngay mà không mất một ngày dữ liệu nào. Quan trọng hơn là làm thế nào để nhiều dataset gắn lên web mà không bị giảm tốc độ của web, cùng theo dõi hướng dẫn nhé.
Bài viết này phù hợp với bạn nếu:
- Đang dùng PixelYourSite (bản Free hoặc Pro) để gắn dataset chính + Conversions API
- Muốn thêm dataset backup mà không ảnh hưởng đến dataset đang chạy
- Không muốn tốn thêm chi phí hosting hay server
- Website chạy WordPress/WooCommerce
Cấu trúc hiện tại & mục tiêu

- Dataset chính (qua PixelYourSite): có cả Pixel browser + CAPI server → chất lượng tracking cao nhất
- Dataset backup (qua GTM): chỉ có Pixel browser → vẫn nhận đủ events, chỉ thiếu CAPI
- Nếu dataset chính bị die → bạn chuyển sang dùng dataset backup ngay, không mất data khoảng trống
Bước 1: Tạo Dataset Backup
- Vào Facebook Events Manager
- Chọn dataset backup bạn muốn gắn
- Vào Settings (Cài đặt) → kéo xuống mục Set up manually
- Copy Pixel ID (dạng số, ví dụ:
987654321098765)
[TIP]
Bạn chỉ cần Pixel ID thôi, không cần Access Token vì ta chỉ bắn browser-side.
Bước 2: Cài GTM Web Container lên WordPress
2.1. Tạo GTM Web Container (nếu chưa có)
- Vào tagmanager.google.com
- Bấm Create Account → điền tên
- Container name: điền tên website
- Target platform: chọn Web
- Bấm Create → đồng ý điều khoản
- Copy đoạn code GTM (2 đoạn: 1 cho
<head>, 1 cho<body>)
2.2. Gắn GTM vào WordPress
Cách dễ nhất: Dùng plugin GTM4WP (miễn phí):
- Vào WordPress Admin → Plugins → Add New → tìm “GTM4WP”
- Cài và kích hoạt plugin GTM4WP (tác giả: Thomas Geiger)
- Vào Settings → Google Tag Manager
- Dán GTM Container ID (dạng
GTM-XXXXXXX) vào ô - Mục Container code placement: chọn Codeless injection
- Tab Integration → bật WooCommerce → tick các events bạn muốn track:
- ✅ Track enhanced e-commerce
- ✅ Product impression (view_item_list)
- ✅ Product click
- ✅ Product detail view (view_item)
- ✅ Add to cart
- ✅ Remove from cart
- ✅ Checkout steps (begin_checkout)
- ✅ Purchases (purchase)
- Bấm Save Changes
Nếu bạn đã có GTM Container từ trước (đã gắn vào web rồi) thì bỏ qua bước 2 này, nhảy thẳng sang bước 3.
Bước 3: Tạo Facebook Pixel Tag trong GTM (cho từng Dataset Backup)
3.1. Tạo Custom HTML Tag cho Dataset Backup 1
- Trong GTM Web Container, vào Tags → New
- Đặt tên:
FB Pixel - Dataset Backup 1 - Tag Type: chọn Custom HTML
- Dán đoạn code sau vào:
<script>
// === DATASET BACKUP 1 ===
// Thay PIXEL_ID_1 bằng Pixel ID thật của bạn
!function(f,b,e,v,n,t,s)
{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};
if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(t,s)}(window, document,'script',
'https://connect.facebook.net/en_US/fbevents.js');
fbq('init', 'PIXEL_ID_1'); // ← THAY PIXEL ID CỦA BẠN VÀO ĐÂY
fbq('track', 'PageView');
</script>
- Triggering: chọn All Pages
- Bấm Save
3.2. Lặp lại cho Dataset Backup 2, 3… (nếu cần)
Tạo thêm tag tương tự nhưng đổi PIXEL_ID_1 thành Pixel ID khác.
[WARNING]
QUAN TRỌNG: Nếu bạn gắn nhiều pixel bằng cách trên, mỗi tag sẽ load lại thư viện fbevents.js → gây chậm trang. Nếu bạn có từ 2 pixel backup trở lên, hãy dùng cách tối ưu ở mục 3.3 bên dưới.
3.3. Cách tối ưu: Gộp nhiều Pixel vào 1 Tag (KHUYÊN DÙNG)
Tạo 1 Custom HTML Tag duy nhất chứa tất cả pixel backup:
<script>
// === MULTI-PIXEL BACKUP (Tối ưu - chỉ load fbevents.js 1 lần) ===
!function(f,b,e,v,n,t,s)
{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};
if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(t,s)}(window, document,'script',
'https://connect.facebook.net/en_US/fbevents.js');
// Thêm bao nhiêu pixel tùy thích
fbq('init', 'PIXEL_ID_BACKUP_1');
fbq('init', 'PIXEL_ID_BACKUP_2');
// fbq('init', 'PIXEL_ID_BACKUP_3'); // thêm tiếp nếu cần
fbq('track', 'PageView');
</script>
Triggering: chọn All Pages → Save
Cách này chỉ load fbevents.js 1 lần nhưng gửi PageView đến tất cả pixel → trang web nhanh hơn nhiều.
Bước 4: Track các Event E-commerce (ViewContent, AddToCart, Purchase…)
4.1. Tạo DataLayer Variables trong GTM
Vào Variables → User-Defined Variables → New, tạo các biến sau:
| Tên biến | Loại biến | Data Layer Variable Name |
|---|---|---|
DLV - ecommerce.items | Data Layer Variable | ecommerce.items |
DLV - ecommerce.value | Data Layer Variable | ecommerce.value |
DLV - ecommerce.currency | Data Layer Variable | ecommerce.currency |
DLV - ecommerce.transaction_id | Data Layer Variable | ecommerce.transaction_id |
4.2. Tạo Triggers cho từng event
Vào Triggers → New, tạo các trigger:
| Tên trigger | Loại | Event Name |
|---|---|---|
CE - view_item | Custom Event | view_item |
CE - add_to_cart | Custom Event | add_to_cart |
CE - begin_checkout | Custom Event | begin_checkout |
CE - purchase | Custom Event | purchase |
4.3. Tạo Custom HTML Tags cho Events
Tag: FB Backup – ViewContent
<script>
fbq('track', 'ViewContent', {
content_ids: {{DLV - ecommerce.items}}.map(function(item) { return item.item_id; }),
content_type: 'product',
value: {{DLV - ecommerce.value}},
currency: {{DLV - ecommerce.currency}} || 'VND'
});
</script>
Trigger: CE - view_item
Tag: FB Backup – AddToCart
<script>
fbq('track', 'AddToCart', {
content_ids: {{DLV - ecommerce.items}}.map(function(item) { return item.item_id; }),
content_type: 'product',
value: {{DLV - ecommerce.value}},
currency: {{DLV - ecommerce.currency}} || 'VND'
});
</script>
Trigger: CE - add_to_cart
Tag: FB Backup – InitiateCheckout
<script>
fbq('track', 'InitiateCheckout', {
content_ids: {{DLV - ecommerce.items}}.map(function(item) { return item.item_id; }),
content_type: 'product',
value: {{DLV - ecommerce.value}},
currency: {{DLV - ecommerce.currency}} || 'VND',
num_items: {{DLV - ecommerce.items}}.length
});
</script>
Trigger: CE - begin_checkout
Tag: FB Backup – Purchase ⭐ (Quan trọng nhất)
<script>
fbq('track', 'Purchase', {
content_ids: {{DLV - ecommerce.items}}.map(function(item) { return item.item_id; }),
content_type: 'product',
value: {{DLV - ecommerce.value}},
currency: {{DLV - ecommerce.currency}} || 'VND',
num_items: {{DLV - ecommerce.items}}.length
});
</script>
Trigger: CE - purchase
Bước 5: Xử lý Deduplication (Chống trùng Event)
Vì PixelYourSite cũng đang bắn pixel browser-side cho dataset chính, nếu bạn cũng init pixel ID chính trong GTM thì sẽ bị trùng event.
Giải pháp: Trong GTM, bạn KHÔNG init Pixel ID của dataset đang dùng trong PixelYourSite. Chỉ init các Pixel ID backup mới.
Nếu muốn chắc chắn hơn, thêm eventID vào mỗi event để Facebook tự dedup:
<script>
var eventId = 'evt_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9);
fbq('track', 'Purchase', {
content_ids: {{DLV - ecommerce.items}}.map(function(item) { return item.item_id; }),
content_type: 'product',
value: {{DLV - ecommerce.value}},
currency: {{DLV - ecommerce.currency}} || 'VND'
}, {eventID: eventId});
</script>
Bước 6: Test & Publish
6.1. Test trong GTM Preview Mode
- Trong GTM, bấm Preview (góc phải trên)
- Nhập URL website của bạn → bấm Connect
- Duyệt web bình thường: xem sản phẩm, thêm giỏ hàng, thanh toán
- Kiểm tra trong Tag Assistant: các tag FB Backup phải fire đúng event
6.2. Test bằng Facebook Pixel Helper (Chrome Extension)
- Cài Facebook Pixel Helper trên Chrome
- Duyệt website → bấm icon Pixel Helper
- Phải thấy nhiều Pixel ID cùng fire:
- Pixel ID chính (từ PixelYourSite)
- Pixel ID backup 1, 2… (từ GTM)
6.3. Test trong Facebook Events Manager
- Vào Events Manager → chọn dataset backup
- Bấm Test Events → nhập URL web
- Mở web trong tab khác, thực hiện các hành động
- Quay lại Events Manager → kiểm tra events có xuất hiện không
6.4. Publish
Khi mọi thứ OK → quay lại GTM → bấm Submit → Publish
Tóm tắt những gì cần làm
✅ Bước 1: Lấy Pixel ID của các dataset backup
✅ Bước 2: Cài GTM + GTM4WP (nếu chưa có)
✅ Bước 3: Tạo 1 Custom HTML tag chứa tất cả pixel backup (init + PageView)
✅ Bước 4: Tạo 4 Custom HTML tags cho events (ViewContent, AddToCart, InitiateCheckout, Purchase)
✅ Bước 5: KHÔNG gắn pixel ID chính vào GTM (tránh trùng với PixelYourSite)
✅ Bước 6: Test bằng Preview + Pixel Helper + Events Manager → Publish
Lưu ý quan trọng: Các dataset backup qua GTM chỉ nhận data browser-side (không có CAPI). Khi dataset chính die và bạn chuyển sang dùng backup, hãy cân nhắc gắn CAPI cho dataset mới qua PixelYourSite (thay thế Pixel ID cũ bằng Pixel ID backup).