如何使用初始化后填充的数据初始化Facebook Pixel?

Jar*_*nen 8 javascript facebook conversion-tracking

我有一个单页活动网站应当收集PageView,并LEAD为Facebook以"先进的匹配"目标事件的数据.

因为PageView,我需要在页面加载时初始化Pixel.对于高级匹配,我需要为初始化脚本提供用户数据 - 但是,在用户提交数据之后,我只有用户数据可用,即LEAD应该发送事件的时间.

是否可以为初始化脚本提供发送LEAD事件时使用的javascript变量的"指针" ?帮助页面提示,但所有示例都有例如以纯文本或sha256哈希提供的电子邮件参数; 不是JS变量,也不是文本指针.

"与像素高级匹配"帮助页面:

要启用此功能,请修改默认FB像素代码以将数据传递到像素init调用.

fbq('init', '<FB_PIXEL_ID>', { 
    em: '{{_email_}}', 
    // Data will be hashed automatically via a dedicated function in FB pixel
    ph: '{{_phone_number_}}',
    fn: '{{_first_name_}}'
    ....
})
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,您需要将email,phone_number,first_name替换为网站上捕获此数据的变量名称.

假设我的user_email变量范围与fbq-init:

var user_email = '';
Run Code Online (Sandbox Code Playgroud)

之后,在提交表单后,将填充此变量

user_email = "john@example.com";
Run Code Online (Sandbox Code Playgroud)

我应该如何引用变量fbq?(1)像这样?

fbq('init', 123456, { em: '{{_user_email_}}' });
Run Code Online (Sandbox Code Playgroud)

(2) 或者像这样?

fbq('init', 123456, { em: 'user_email' });
Run Code Online (Sandbox Code Playgroud)

(3) 或者我应该只使用变量提供它:

fbq('init', 123456, { em: user_email }); // nb: user_email === false when this is run
Run Code Online (Sandbox Code Playgroud)

(4)或者我应该在没有任何匹配数据的情况下初始化像素,然后再丰富它?(怎么样?)

一个声誉良好的广告代理商向我发送了提交变量名称的说明,如我的示例2所示,但帮助页面提示为1而没有实际提供任何真实世界的示例.


我尝试了所有选项1-3,似乎变量fbq('track', …);在初始化后的后续调用中不会被重新评估.如果user_email以空白开头,则所有事件都不会包含散列用户数据.

此外,即使我开始使用有效的电子邮件user_email = "john@example.com";(也尝试过真实域名而不是example.com),方法3也可以使用 - 但是,正如预期的那样,这不是动态的,即.如果user_email改变哈希不会.

就好像没有字符串变量替换开头.

更合适的问题是:如何在像素初始化后提交高级匹配的用户数据?而不是试图使初始化延迟/动态.

Jar*_*nen 2

作为解决方法,可以Lead通过 javascript 加载像素(图像)来生成包含电子邮件用户数据的事件:

\n\n
// here the user email is unknown, so PageView is generated without email\nfbq('init', 123456, {});\nfbq('track', 'PageView');\n\n// Later the form is submitted via ajax, so the user email is known\n$.ajax(\xe2\x80\xa6).done(function(data) {\n    // I decided to sha256 hash the email address in the backend and return it for the javascript handler\n    var pixel = document.createElement('img');\n    pixel.src = 'https://www.facebook.com/tr/?id=123456&ev=Lead&ud[em]=' + data;\n    document.body.appendChild(pixel);\n    // confirmed by the Pixel helper Chrome extension, this does generate a valid tracking event\n    // (ironically, we're loading the noscript version via javascript)\n});\n
Run Code Online (Sandbox Code Playgroud)\n\n

当然,纯fbq版本会更可取。另外,我还不知道可能存在的缺点。

\n