0

GTM 経由で挿入された Facebook ピクセルを含む単一ページの Angular アプリがあります。最初のインジェクションでは、以下を渡します。

<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', '<OUR ID>'); // Insert your pixel ID here. 
</script>

ページビュー イベントはありません。次に、カスタムの「仮想ページビュー」イベントを GTM データレイヤーにプッシュします。このイベントは、ページビューを Google アナリティクスに送信するタグにつながり (正常に動作)、次のコードの挿入もトリガーします。

<script>
fbq('track', 'PageView', {
    dim1:{{dim 1 macro}},
    dim2:{{dim 2 macro}},
    dim3:{{dim 2 macro}} 
});
</script>

各ページビューで、上記の fbq が DOM に追加され、(ページのソースを表示することによって) 適切なサイズが入力されます。

Facebook への最初のページビュー ヒットでは、(ネットワーク タブを表示することにより) 呼び出しにディメンションが存在しますが、その後のページビューでは、ヒットが Facebook に送信されますが、ディメンションはコードに存在しますが送信されません。 DOM に追加されます。

ほとんどの場合、これらのディメンションはヒットごとに変化しませんが、ユーザーがセッション全体で行うアクションに基づいて変化する可能性があります。

後続のヒットにカスタム ディメンションが含まれない理由について何か考えはありますか?

4

2 に答える 2

0

Angular アプリで履歴の変更が発生するたびにペイロードを更新し、更新されたペイロードで fb コードを再度実行しようとしますか?

フロントエンドにデータレイヤーを実装します。

<script>
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
  event: 'virtualPageView',
  pagePath: '/newPath', //update this path from your angular route,
                        //or use GTMs built in history-change trigger
                        //and a variable that gets the URL fragment
                        //to update your pageview's path variable.
  customDimenson1: 'value1',
  customDimenson2: 'value2',
  customDimenson3: 'value3'
});
</script>

virtualPageViewという名前のCustom Eventタイプのトリガーを作成します。pagePathcustomDimension1-3に対して、タイプデータレイヤー変数の 4 つの変数を作成します。fbq イベントを含むカスタム HTML タグを作成します。

<script>
fbq('track', 'PageView', {
    dim1:{{customDimenson1}},
    dim2:{{customDimenson2}},
    dim3:{{customDimenson3}} 
});
</script>

ビルトイン トリガーAll Pagesで起動する別のカスタム HTMLタグを作成します。これは、ベース コードを使用して、シングル ページ アプリケーションに対して 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', '<OUR ID>'); // Insert your pixel ID here. 
</script>

更新された変数の SPA に問題がありました。競合状態の場合もあれば、GTM またはコードのバグの場合もあります。100 ミリ秒のタイマーを使用して実行を遅らせることもできます (悪いアドバイス)。

于 2017-12-28T04:14:04.503 に答える