Website đang ở chế độ demo, hẹn gặp lại bạn sớm…

Hướng Dẫn Gắn Thêm Facebook Dataset Backup Qua Google Tag Manager (GTM)

Trong 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í.
Hướng Dẫn Gắn Thêm Facebook Dataset Backup Qua Google Tag Manager (GTM)

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.

Trong 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

  1. Vào Facebook Events Manager
  2. Chọn dataset backup bạn muốn gắn
  3. Vào Settings (Cài đặt) → kéo xuống mục Set up manually
  4. 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ó)

  1. Vào tagmanager.google.com
  2. Bấm Create Account → điền tên
  3. Container name: điền tên website
  4. Target platform: chọn Web
  5. Bấm Create → đồng ý điều khoản
  6. 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í):

  1. Vào WordPress Admin → PluginsAdd New → tìm “GTM4WP”
  2. Cài và kích hoạt plugin GTM4WP (tác giả: Thomas Geiger)
  3. Vào SettingsGoogle Tag Manager
  4. Dán GTM Container ID (dạng GTM-XXXXXXX) vào ô
  5. Mục Container code placement: chọn Codeless injection
  6. 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)
  1. 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

  1. Trong GTM Web Container, vào TagsNew
  2. Đặt tên: FB Pixel - Dataset Backup 1
  3. Tag Type: chọn Custom HTML
  4. 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>
  1. Triggering: chọn All Pages
  2. 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 VariablesUser-Defined VariablesNew, tạo các biến sau:

Tên biếnLoại biếnData Layer Variable Name
DLV - ecommerce.itemsData Layer Variableecommerce.items
DLV - ecommerce.valueData Layer Variableecommerce.value
DLV - ecommerce.currencyData Layer Variableecommerce.currency
DLV - ecommerce.transaction_idData Layer Variableecommerce.transaction_id

4.2. Tạo Triggers cho từng event

Vào TriggersNew, tạo các trigger:

Tên triggerLoạiEvent Name
CE - view_itemCustom Eventview_item
CE - add_to_cartCustom Eventadd_to_cart
CE - begin_checkoutCustom Eventbegin_checkout
CE - purchaseCustom Eventpurchase

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)

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

  1. Trong GTM, bấm Preview (góc phải trên)
  2. Nhập URL website của bạn → bấm Connect
  3. Duyệt web bình thường: xem sản phẩm, thêm giỏ hàng, thanh toán
  4. 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)

  1. Cài Facebook Pixel Helper trên Chrome
  2. Duyệt website → bấm icon Pixel Helper
  3. 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

  1. Vào Events Manager → chọn dataset backup
  2. Bấm Test Events → nhập URL web
  3. Mở web trong tab khác, thực hiện các hành động
  4. 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 SubmitPublish

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).

Có Thể Bạn Quan Tâm

Mục lục