在Javascript Web App中与新的Facebook像素进行高级匹配

我有一个单页JavaScript应用程序,其中我尝试使用新Facebook像素实现高级匹配,以便为我们的广告提供更好的归因。

我们目前在应用程序第一次加载时初始化FB像素,然后根据用户在应用程序中的行为触发标准跟踪事件,例如,在用户完成订单时购买。

下面是一个简化的视图

// App loads
// URL: xxxx.com/[client]/
!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');

// Pixel Initialised
// we don't know any user details at this stage

fbq('init', '[PIXELID]');
fbq('track', 'PageView');


// User selects the event they want to purchase tickets from
// URL: xxxx.com/[client]/event/[productid]/

fbq('track', 'PageView');
fbq('track', 'ViewContent', { 
    content_name: 'Store',
    content_ids: '[productid]',
    content_type: 'product_group'
});

// User goes through rest of purchase process
// More Standard Events sent, e.g. Add To Cart

// User completes purchase
// URL: xxxx.com/[client]/order/completed/
// At this point we now know email address, name & phone, but pixel is already initialised. How do we do Advanced Matching?

fbq('track', 'PageView');
fbq('track', 'Purchase', { 
    content_type: 'Store',
    value: 75.00,
    currency: 'USD',
    num_items: 4,
    order_id: '20160710090000',
});    

高级匹配建议在像素初始化时设置字段。 然而,因为我们只在应用程序加载时初始化像素(当我们不知道任何用户细节时),我不确定如何实现高级匹配。 再次初始化同一像素会引发错误,并且似乎没有办法在轨道事件中传递高级匹配字段或重新初始化像素。

有没有人在单个页面js应用程序中使用高级匹配成功?


您可以在PII之后第二次调用fbq('init', '<pixel_id>', '<PII>') ,并且所有后续的Pixel火焰都会启动。 您提到的错误可能是由于短暂的错误。


直接加载像素网址对我来说效果最佳。 在下面的示例中, form_data是仅在用户完成其订单后才可用的数据。

 // reinitialize with parameters
    var split_name = form_data.name.split(" ");
    var split_dob = form_data.date_of_birth.split("T")[0].split("-")

    // https://stackoverflow.com/questions/39610897/how-to-initialize-facebook-pixel-with-data-that-will-be-populated-after-the-init
    sha256(form_data.email).then(function(em) {
      sha256(split_name[0].toLowerCase()).then(function(fn) {
        sha256(split_name[split_name.length-1].toLowerCase()).then(function(ln) {
          sha256(((form_data.phone).replace(")", "").replace("(","").split(" ").join("-")).split("-").join("")).then(function(pn) {
            sha256(split_dob[0]+split_dob[1]+split_dob[2]).then(function(db) {
              sha256(form_data.city.toLowerCase().split(" ").join("")).then(function(ct) {
                sha256(form_data.region.toLowerCase()).then(function(st) {
                  sha256(form_data.postal_code).then(function(zp) {
                    var pixel = document.createElement('img');
                    pixel.src = "https://www.facebook.com/tr/?id="+my_fb_pixel_id+"&ev=Purchase&ud[em]="+em+"&ud[fn]="+fn+
                      "&ud[ln]="+ln+"&ud[pn]="+pn+"&ud[db]="+db+"&ud[ct]="+ct+"&ud[st]="+st+"&ud[zp]="+zp+"&cd[value]="+
                      form_data.amount+"&cd[currency]=USD&cd[investment_object]="+JSON.stringify(res_ok);
                    document.body.appendChild(pixel)
                  });
                });
              });
            });
          });
        });
      });
    });

(SHA256来自:https://www.google.com/search?q=sha256+mozilla&oq=sha256+mozilla&aqs=chrome..69i57j69i60.3197j0j7&sourceid=chrome&ie=UTF-8)

另请参阅:如何使用初始化后将填充的数据初始化Facebook Pixel?

我尝试过K.Lei在用户提交订单(通过表单,在我的情况下)后再次调用fbq('init','','')的方法。 但是,当我注意到在刷新页面并再次提交表单(并因此再次调用init)时使用不同的Name / Birthdate / Gender /等,旧的PII参数(从页面刷新之前)仍然被发送。 虽然这是通过段使用FB像素。

链接地址: http://www.djcxy.com/p/36231.html

上一篇: Advanced Matching with New Facebook Pixel in Javascript Web App

下一篇: Task to rename a file?