Facebook Pixel自定义尺寸仅出现在首页浏览量上

时间:2017-12-21 16:13:40

标签: analytics google-tag-manager facebook-pixel

我们有一个单页Angular应用程序,其中包含通过GTM注入的Facebook像素。在第一次注射中,我们通过以下内容:

<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 Analytics(正常工作)的标记,并触发以下代码的注入:

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

在每个网页浏览中,上面的fbq会附加到DOM,并填充适当的尺寸(通过查看页面的来源)。

在第一页浏览HIT到Facebook时,维度中存在维度(通过查看网络标签),但在SUBSEQUENT网页浏览中,点击会发送到Facebook,但不会发送任何维度,即使它们存在在附加到DOM的代码中。

在大多数情况下,这些维度不会更改命中,但可能会根据用户在整个会话期间执行的操作而更改。

关于为什么随后的点击不包括自定义尺寸的任何想法?

2 个答案:

答案 0 :(得分: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 创建自定义事件类型的触发器。 为 pagePath customDimension1-3 创建数据层变量类型的4个变量。 创建包含fbq事件的自定义HTML标记:

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

创建另一个自定义HTML 标记,该标记在内置触发器所有页面上触发,因为它只需要为您的单页应用程序执行一次,与您的基础代码:

<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或您的代码中的错误。您还可以尝试使用100ms计时器延迟执行(不良建议)。

答案 1 :(得分:0)

收到官方Facebook团队的反馈,似乎这是设计的。在使用Pageview事件的任何后续调用中,将不会在有效内容中发送自定义数据。