2016-04-18 5 views
3

私は2つの(新しい)Facebookピクセルを実装する必要があります:1つはサイト全体、もう1つは特定のページのみです。リクエスタは、各ピクセルがそれ自身の関連する標準事象のみを追跡することを要求した。Facebook Pixels:ピクセル単位で標準イベントを区切りますID:

画素1:

<script> 
!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'); 

fbq('init', '111'); 
fbq('track', 'PageView'); 
fbq('track', 'ViewContent'); 
</script> 

画素2:

<script> 
!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'); 

fbq('init', '222'); 
fbq('track', 'PageView'); 
fbq('track', 'Lead'); 
</script> 

画素1は、任意のリード追跡データを受信して​​はならない、画素2は、任意ViewContent追跡データを受け取るべきではありません。これをどのように達成するのですか?

+0

との両方の追跡イベントを置きます。 LeadまたはViewContentのようなカスタムイベントを両方のピクセルに追加すると、Facebook Pixelヘルパーで複数回呼び出されるとエラーが発生します。 – Snowball

+0

fbqオブジェクトはウィンドウオブジェクト上でグローバル名前空間を共有するので、これは可能ではありません。私が知る限り、Facebookのピクセルは1つのインスタンスで動作するように設計されています。私はここに同様の質問を掲示した:http://stackoverflow.com/questions/39902063/is-it-possible-to-push-tracking-events-to-two-separate-facebook-pixels –

答えて

0

私はこの同じ問題で自分自身を苦労しました。Facebookはこの種の機能を公にサポートしていないようです。それは多くのシナリオでは不可欠かもしれません。

ポストとしてJason FBが示しているように、fbq関数を書き換えてピクセルIDをパラメータとして使用することができます。しかし、私が提供FBQを書き換えることなく、これを達成するために望んでいた:

function customFacebookTrack(id, eventName, object){ 


    // If i get an ID i Simply delete the remanent IDs from de FBQ object. 
    if(typeof id != 'undefined' && id != 'ALL'){ 

     var placePixels = []; 
     var currentPixels = fbq.getState().pixels; 

     //console.log(currentPixels); 
     for(i = 0; i < currentPixels.length; i++){ 
      if(currentPixels[i].id != id){ 
       placePixels.push(currentPixels[i]); 
       currentPixels.splice(i, i + 1); 
      } 
     }  
    } 

    //console.log(currentPixels); 
    // I send my event only with the pixel(s) I want 
    fbq('trackCustom', eventName, object); 

    // After sending the event I set back the deleted IDs for regular use. 
    if(typeof id != 'undefined' && id != 'ALL'){ 
     for(i = 0; i < placePixels.length; i++){ 
      if(placePixels[i].id != id){ 
       currentPixels.push(placePixels[i]); 
       placePixels.splice(i, i + 1); 
      } 
     } 
    } 
} 

このことに注意してください:ここ

は、私がこれを解くことによって来たかの(異例)コードがありますいかなる手段によっても推奨される方法ではありません。これは、Facebookのイベント追跡JavaScriptの既知の制限を回避する方法です。

例スニペット:

<script> 
    customFacebookTrack(XXXXXXXXXXXXXXX, 'Lead Form', {content_name:'Newsletter Subscriber'}); 
</script> 
0

はちょうど私がほぼ同じ問題を抱えているすべてのinitピクセルID

<script> 
!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'); 

fbq('init', '111'); 
fbq('init', '222'); 
fbq('track', 'PageView'); 
fbq('track', 'ViewContent'); 
fbq('track', 'Lead'); 
</script>