是否可以将跟踪事件推送到两个单独的Facebook像素?

是否可以将跟踪事件推送到两个单独的Facebook像素?,facebook,Facebook,参见Facebook Pixel文档(2016年新增): 有可能同时将相同的事件推送到两个不同的Facebook像素上吗?据我所知,有一个由像素代码创建的fbq实例,它接受一个init调用(指定一个FB pixel init),所有后续事件都与单个对象的正确初始化相关联 如果对不同的像素ID多次使用“init”事件,所有初始化的像素将接收所有未来事件 多像素代码 为了能够对不同的Facebook像素触发不同的事件,而不需要调用它来调用之前初始化的所有Facebook像素,您可以覆盖fbq函数(通

参见Facebook Pixel文档(2016年新增):

有可能同时将相同的事件推送到两个不同的Facebook像素上吗?据我所知,有一个由像素代码创建的
fbq
实例,它接受一个init调用(指定一个FB pixel init),所有后续事件都与单个对象的正确初始化相关联

如果对不同的像素ID多次使用“init”事件,所有初始化的像素将接收所有未来事件

多像素代码 为了能够对不同的Facebook像素触发不同的事件,而不需要调用它来调用之前初始化的所有Facebook像素,您可以覆盖fbq函数(通过将下面的代码段复制并粘贴到您的代码库中),然后调用跟踪事件,如下面的用法部分所述

<script type="text/javascript">
(function() {
  var fbq = (function() {
    function fbq()
    {
      if(arguments.length > 0) {
        var action, pixel_id, type_track, content_obj;

        if( typeof arguments[0] == "string") action = arguments[0];
        if( typeof arguments[1] == "string") pixel_id = arguments[1];
        if( typeof arguments[2] == "string") type_track = arguments[2];
        if( typeof arguments[3] == "object") content_obj = arguments[3];

        var params = [];
        if(typeof action == "string" && action.replace(/\s+/gi, "") != "" &&
        typeof pixel_id == "string" && pixel_id.replace(/\s+/gi, "") != "" &&
        typeof type_track == "string" && type_track.replace(/\s+/gi, "")) {

          params.push("id=" + encodeURIComponent(pixel_id));
          switch(type_track) {
            case "PageView":
            case "ViewContent":
            case "Search":
            case "AddToCart":
            case "InitiateCheckout":
            case "AddPaymentInfo":
            case "Lead":
            case "CompleteRegistration":
            case "Purchase":
            case "AddToWishlist":
            params.push("ev=" + encodeURIComponent(type_track));
            break;
            default:
            return;
          }

          params.push("dl=" + encodeURIComponent(document.location.href));
          params.push("rl=" + encodeURIComponent(document.referrer));
          params.push("if=false");
          params.push("ts=" + new Date().getTime());

          if(typeof content_obj == "object") {
            for(var u in content_obj) {
              if(typeof content_obj[u] == "object" && content_obj[u] instanceof Array) {
                if(content_obj[u].length > 0) {
                  for(var y=0; y<content_obj[u].length; y++) { content_obj[u][y] = (content_obj[u][y]+"").replace(/^\s+|\s+$/gi, "").replace(/\s+/gi," ").replace(/,/gi, "§"); }
                  params.push("cd[" + u + "]=" + encodeURIComponent(content_obj[u].join(",").replace(/^/gi, "[\"").replace(/$/gi, "\"]").replace(/,/gi, "\",\"").replace(/§/gi, "\,")));
                }
              }
              else if(typeof content_obj[u] == "string")
              params.push("cd[" + u + "]=" + encodeURIComponent(content_obj[u]));
            }
          }

          params.push("v=" + encodeURIComponent("2.5.0"));

          if(typeof window.jQuery == "function") {
            var iframe_id = new Date().getTime();
            jQuery("body").append("<img height='1' width='1' style='display:none;width:1px;height:1px;' id='fb_" + iframe_id + "' src='https://www.facebook.com/tr/?" + params.join("&") + "' />");
            setTimeout(function() { jQuery("#fb_" + iframe_id).remove(); }, 1000);
          }
        }
      }
    }

    return fbq;
  });

  window.fbq = new fbq();
})();
</script>

(功能(){
var fbq=(函数(){
函数fbq()
{
如果(arguments.length>0){
变量动作、像素id、类型轨迹、内容对象;
如果(参数类型[0]=“字符串”)操作=参数[0];
如果(参数类型[1]=“字符串”)像素_id=参数[1];
if(typeof arguments[2]=“string”)type_track=arguments[2];
if(参数类型[3]=“对象”)content_obj=参数[3];
var参数=[];
if(typeof action==“string”&&action.replace(/\s+/gi,”)!=“&&
像素id的类型==“字符串”和像素id。替换(/\s+/gi,”)=“”&&
typeof type_track==“string”&&type_track.replace(/\s+/gi,”)){
参数push(“id=“+encodeURIComponent(pixel_id));
道岔(U型轨道){
案例“页面视图”:
案例“ViewContent”:
案例“搜索”:
案例“AddToCart”:
案例“InitiateCheckout”:
案例“AddPaymentInfo”:
案例“线索”:
“完整注册”案例:
案例“购买”:
案例“AddToWishlist”:
参数推送(“ev=“+encodeURIComponent(type_track));
打破
违约:
返回;
}
params.push(“dl=“+encodeURIComponent(document.location.href));
参数push(“rl=“+encodeURIComponent(document.referer));
参数推送(“if=false”);
参数push(“ts=“+newdate().getTime());
if(内容类型\对象==“对象”){
用于(内容中的变量u_obj){
if(内容类型=对象和数组的内容实例){
if(内容对象[u]。长度>0){

对于(var y=0;yHey Bryan,欢迎使用Stack Overflow。不幸的是,如果没有Facebook at Work帐户,您共享的链接似乎无法访问。请确保在您的答案中直接包含所有相关详细信息,而不是链接到外部资源。回答愉快!我已删除了非公开链接。这似乎有效。注意t您还需要在NOSCRIPT图像标记上循环(除了本答案中的建议之外),并重复几次。按回答接受。我认为在一个HTML文档中不可能这样做。您可以使用iFrame加载不同的HTML文档,每个文档都使用不同的id嵌入像素脚本,然后从“外部”指示他们跟踪哪些事件。感谢您的演示和“使用”示例。我相信另一个示例(在标记为“多个Facebook像素代码”的部分)来自您的代码库中与此问题无关的部分。事实上,@bryan karas的回答(已被接受)更简洁(尽管您在“用法”方面提供了一个很好的代码示例)我对你的答案投了更高的票,但我留下了他的答案作为这个问题的公认答案。嗨,Jason,“多重Facebook像素代码”中的代码实际上,正是这一点使得在同一页的不同像素上触发具有不同数据的事件成为可能。在Bryan的回答中,他指出事件将被触发到所有初始化像素。该代码是实际的解决方案。我将更新我的回答以使其更清晰。无论如何,感谢您的反馈!关于您的ans,我不了解什么我们的答案是,
fbq
是由Facebook的Javascript定义的。因此,基本上你的答案是覆盖Facebook自己的Javascript,这听起来很危险。(尽管如此,使用API中未记录的部分——推送超过1个像素的能力——也是危险的。)但是,如果它内置于FB Javascript中,为什么还要重新编写它们的Javascript呢?我理解您的担忧,但这是我发现的将不同事件跟踪到同一页面上不同像素的唯一方法。如果您找到其他解决方法,请告诉我:)
<script>
  fbq('track', '<FIRST_PIXEL_ID>', 'PageView');
  fbq('track', '<FIRST_PIXEL_ID>', 'Purchase', {value: 79.9, currency: 'BRL'});
  fbq('track', '<SECOND_PIXEL_ID>', 'Purchase', {value: 89.9, currency: 'BRL'});
</script>