Facebook Pixel能否跟踪通过target="_blank"跳转至新标签页的用户?
结论
你当前的实现逻辑无法保证Facebook Pixel可以正常跟踪到购买转化行为,核心问题出在两个地方:
问题原因
- Pixel上报请求容易被中断
Facebook Pixel是异步加载执行的,你把触发window.open的逻辑绑在了window.onload事件上,执行时机过早。大概率页脚的Pixel代码还没完成初始化、也没来得及将购买事件上报到Facebook服务器,请求就会因为用户主动关闭原页面、或者浏览器进程资源分配的问题被中断,导致事件丢失。 - 新标签页上下文断裂风险
用_blank打开的新标签页属于独立的浏览上下文,如果你的感谢页和主站跨域名,在Safari智能防跟踪、Chrome第三方cookie限制策略的影响下,Pixel无法读取到原站的用户标识cookie,会导致感谢页上报的事件无法匹配到用户之前的广告点击行为,转化无法正确归因。就算是同域名站点,也有小概率出现用户标识丢失的问题。
修复方案
根据你的业务场景选任意一种即可,优先选方案1兼容性最高:
- 方案1:取消新标签页打开逻辑,直接在当前页面跳转至感谢页,将Purchase购买事件埋在感谢页的Pixel逻辑中。这种方式上下文完全连续,没有事件丢失和归因失败的风险。
- 方案2:如果必须保留新标签页打开的逻辑,先等待Purchase事件上报完成再触发跳转,调用Pixel的
eventCallback回调处理即可,示例代码如下:
if(true){ ?> <script> // 假设你已经在页脚引入了Pixel基础代码 window.onload = function(){ // 先上报购买事件,上报完成后再打开感谢页 fbq('track', 'Purchase', { value: 你的订单金额, currency: 'CNY' // 换成你的实际货币单位 }, { eventCallback: function () { window.open('https://thankYouPage', '_blank'); } }); } </script> <?php } ?>
- 方案3:如果你的购买事件本身就是放在感谢页上报,那可以在跳转链接后拼接原页面的
fbclid参数透传到感谢页,帮助Pixel匹配用户身份,降低归因失败的概率。
你原有的问题代码:
if(true){ ?> <script> window.onload = function(){ window.open( 'https://thankYouPage', '_blank' ); } </script> <?php
内容的提问来源于stack exchange,提问作者Chafik
相关产品推荐
相关产品推荐

