使用高级匹配的个人信息初始化Facebook Pixel后,您是否可以更改高级匹配的个人信息?这是针对单页应用程序的。我尝试使用新的个人信息再次初始化 Facebook Pixel,但 Pixel 仍然报告我初始化时使用的原始高级匹配信息。
例如,我们会运行:
window.fbq('init', <FACEBOOK_ID>, { em: <email> });
在后面的页面上,我们获得有关它们的更多信息,因此我们将运行:
window.fbq('init', <FACEBOOK_ID>, { em: <email>, st: <state> })
未报告新信息(在此示例中为状态信息)。
由于您使用的是单页应用程序,因此您必须再次进行初始化,这是不可能附加高级参数的。
window.fbq('init', <FACEBOOK_ID>, { em: <email>, st: <state> })
Facebook 总是在初始化像素后触发该事件,因此在您的第一行代码中,调用已经发送到 faecbook,这就是火灾。现在,如果您想发送另一个参数,那么您必须使用 init 再次将调用发送到 facebook。
我在使用单页应用程序(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 法律问题:)。
我对 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”时,它会发送此信息。