用其他信息初始化 FB Pixel 后如何更改高级匹配个人信息?

问题描述 投票:0回答:3

使用高级匹配的个人信息初始化Facebook Pixel后,您是否可以更改高级匹配的个人信息?这是针对单页应用程序的。我尝试使用新的个人信息再次初始化 Facebook Pixel,但 Pixel 仍然报告我初始化时使用的原始高级匹配信息。

例如,我们会运行:

window.fbq('init', <FACEBOOK_ID>, { em: <email> });

在后面的页面上,我们获得有关它们的更多信息,因此我们将运行:

window.fbq('init', <FACEBOOK_ID>, { em: <email>, st: <state> })

未报告新信息(在此示例中为状态信息)。

javascript facebook analytics single-page-application facebook-pixel
3个回答
1
投票

由于您使用的是单页应用程序,因此您必须再次进行初始化,这是不可能附加高级参数的。

window.fbq('init', <FACEBOOK_ID>, { em: <email>, st: <state> })

Facebook 总是在初始化像素后触发该事件,因此在您的第一行代码中,调用已经发送到 faecbook,这就是火灾。现在,如果您想发送另一个参数,那么您必须使用 init 再次将调用发送到 facebook。


0
投票

我在使用单页应用程序(SPA)时解决了这个问题,方法是在使用

init
事件初始化 Javascript 像素后,使用基于图像的像素发送信息。

我使用了以下代码:

var fbtag = document.createElement('img');
var user_email = 'USER_HASHED_EMAIL_IN_SHA256';
var pixel_id = 'XXXXXXXXX';
fbtag.src = 'https://www.facebook.com/tr/?id=' + pixel_id + '&ev=PageView&ud[em]=' + user_email;
document.body.appendChild(fbtag);

您也可以对 Lead 标准事件执行相同的操作:

var fbtag = document.createElement('img');
var user_email = 'USER_HASHED_EMAIL_IN_SHA256';
var pixel_id = 'XXXXXXXXX';
fbtag.src = 'https://www.facebook.com/tr/?id=' + pixel_id + '&ev=Lead&ud[em]=' + user_email;
document.body.appendChild(fbtag);

或者,当然,对于在 URL 中添加额外数据的购买通风口:

var fbtag = document.createElement('img');
var user_email = 'USER_HASHED_EMAIL_IN_SHA256';
var pixel_id = 'XXXXXXXXX';
var purchase_value = '999';
var purchase_currency = 'EUR';
var content_ids = '123,456,789'; // content identifiers separated by commas

fbtag.src = 'https://www.facebook.com/tr/?id=' + pixel_id + '&ev=Purchase&ud[em]=' + user_email + '&cd[value]=' + purchase_value + '&cd[content_ids]=' + content_ids + '&cd[currency]=' + purchase_currency;
document.body.appendChild(fbtag);

我知道这并不完美,但我已经开始在 Facebook 中看到高级匹配信息,所以我想它工作正常:)。

请记住,在将用户的电子邮件地址发送到 Facebook 之前,您应该对用户的电子邮件地址使用 SHA256,以避免出现 GDPR 法律问题:)。


0
投票

我对 fbevents.js 代码进行了逆向工程,您可以在这里找到高级匹配信息:

Object.values(window.fbq.instance.pixelsByID)[0].userData

所以你可以这样更新:

Object.entries(pixelsById).forEach(([pixelId, pixelObj]) => {
  if (!pixelObj.userData) pixelObj.userData = {};
  const pixelUserData = pixelObj.userData;
  pixelUserData.em = email;
  pixelUserData.fn = firstName;
  pixelUserData.ln = lastName;
  pixelUserData.st = street;
  pixelUserData.ct = city;
  pixelUserData.zp = postal_code;
  pixelUserData.country = addressCountry;
  pixelUserData.external_id = userId;
});

这会更新页面中的所有像素。如果您只想定位一个,请使用其 ID。

下次您调用“track”时,它会发送此信息。

© www.soinside.com 2019 - 2024. All rights reserved.