代码埋好了,但后台测试就是抓不到转化数据,这种情况在百度竞价里太常见了,十个账户里有八个都遇到过,而且大部分时候翻来覆去看代码,一行都没写错,就是找不到问题在哪。
很多人拿到百度推广给的转化代码,直接复制粘贴到页面底部就完事,觉得只要代码出现在页面源码里就一定能生效。百度统计和百度推广的转化代码有严格的加载顺序要求,统计基础代码必须在转化事件代码之前完全加载初始化,否则转化触发时统计实例还不存在,上报请求直接发不出去,数据就凭空消失了。 尤其是很多人喜欢把转化代码放在body标签的最末尾,或者用async/defer属性异步加载,这两种写法都会导致加载顺序混乱,数据丢失率能达到30%以上。
单页应用的坑是最近几年最多人踩的,而且大部分人根本意识不到问题出在这。现在90%以上的企业官网都是用Vue、React做的单页应用,整个网站其实只有一个HTML页面,所有的页面跳转都是前端路由切换,不会重新加载整个页面。传统的页面到达式转化代码,只有在整个页面刷新的时候才会执行一次,单页应用里点击咨询、表单提交这些操作都不会触发页面刷新,埋在目标路由页面的代码永远不会运行。 很多人测试的时候,从首页点到咨询页,看源码里有转化代码,就觉得没问题,实际上那个代码在首页加载的时候就已经执行过了,后面路由切换的时候根本不会再跑一遍。
跨域问题是转化数据丢失的重灾区,而且隐蔽性特别强。落地页是一个域名,在线客服是另一个域名,表单提交到第三个域名,这种情况太普遍了。浏览器的同源策略会阻止跨域的Cookie写入,百度推广用来追踪点击来源的clickid参数,无法从落地页域名传递到跨域的转化页面,即使转化真实发生了,也无法关联到对应的推广账户,后台自然看不到任何数据。 尤其是用iframe嵌套第三方客服页面的情况,Chrome 80版本之后SameSite Cookie默认策略改成了Lax,几乎所有主流浏览器都会默认拦截第三方iframe的Cookie,这种写法现在基本已经废了,能抓到的数据不到原来的20%。
很多人测试转化的方式从一开始就是错的,这是最容易被忽略的点。直接在浏览器地址栏输入落地页地址,点击转化按钮,这种测试方式永远不会在百度推广后台产生转化数据。 百度推广的转化统计逻辑,是必须携带有效的clickid参数才能上报,只有通过百度广告的正式链接进入落地页,系统才会生成并在URL后面附加clickid,直接访问、本地打开、从收藏夹进入都没有这个参数,即使转化代码正常触发,后台也会直接丢弃这条数据。很多人测了几十遍,浏览器控制台里上报请求都是200正常,后台就是一个转化都没有,全都是因为测试方法不对。
广告拦截插件导致的数据丢失,是行业内公开的秘密,但几乎没有人会主动提。现在普通互联网用户的广告拦截插件安装率在20%-30%左右,科技、互联网、教育这些行业的用户群体,安装率能达到50%以上。 所有主流的广告拦截插件,都会默认拦截百度统计、百度推广的转化上报请求,这部分转化是真实发生了,但永远不会出现在后台数据里,而且没有任何办法可以完全规避。很多人觉得自己的转化数据不准,其实有一半的原因是这个。
转化目标设置的小错误,能浪费掉半个月的推广预算。很多人在后台设置转化目标的时候,选了页面到达,填了咨询页的地址,然后就不管了。如果后台设置的是精确匹配,而实际页面URL后面带了任何参数,比如from=baidu、keyword=xxx、时间戳之类的,精确匹配就会完全失效,所有转化都不会被统计。 还有的人把转化目标设置成了点击咨询按钮,但实际埋的是表单提交的代码,或者反过来,两边对不上,自然抓不到数据。
CDN缓存的坑,很多人踩过之后才会记住。更新了服务器上的转化代码,立刻去测试,结果发现页面里还是旧的代码,就是因为CDN还在返回缓存的静态页面。大部分CDN的默认缓存时间是24小时,即使更新了服务器文件,用户访问到的还是旧页面,必须手动刷新CDN的对应资源缓存之后,代码更新才会生效。 还有的公司用了多层CDN,或者浏览器本地缓存没清,测试的时候一直用的是旧页面,改多少遍代码都没用。
服务器端的拦截,是最隐蔽的问题。很多公司的服务器都装了WAF Web应用防火墙,或者安全组规则,会默认拦截一些看起来像恶意请求的接口调用。百度统计和转化上报的接口,有时候会被WAF误判为爬虫或者攻击请求,直接被拦截返回403或者502错误,这种情况在浏览器控制台里能看到上报请求失败,但大部分人不会去看Network面板。 遇到这种情况,只能把百度的所有上报接口域名加到WAF和安全组的白名单里。
移动端的转化数据丢失率,普遍比PC端高20%以上。移动端的网络环境差,页面加载速度慢,很多用户在转化代码还没加载完成的时候,就已经点击了咨询按钮。尤其是把转化代码放在页面底部的写法,移动端页面首屏加载可能需要2-3秒,但用户1秒就能看到顶部的咨询悬浮按钮,点击之后直接跳转到客服页面,转化代码根本来不及加载执行。 还有微信内置浏览器,有自己独立的缓存机制和安全策略,会随机拦截第三方Cookie和上报请求,微信内打开的广告落地页,转化数据丢失率能达到40%以上。
排查问题的时候,不要上来就改代码,先打开浏览器的开发者工具,切到Network面板,过滤hm.gif或者event.gif,然后触发转化动作,看有没有对应的上报请求发出去。如果没有请求,就是代码没触发或者加载顺序错了;如果有请求但状态码不是200,就是被拦截了;如果请求正常,就看请求参数里有没有clickid字段,没有的话就是clickid传递失败,有的话就是后台转化目标设置错了。
百度推广的转化数据有天然的延迟,正常情况下是15分钟到2小时,凌晨的转化数据有时候会延迟到第二天上午才能同步完成。 很多人测试完转化,等了5分钟没看到数据,就开始改代码,改完再测,越改越乱,其实只是数据还没同步过来。遇到这种情况,先等两个小时再看,不要急着动代码。
还有一种很少见但确实存在的情况,就是百度推广账户本身的转化数据同步故障。同一个转化代码,埋在A账户的落地页里能正常统计,埋在B账户里就完全没数据,所有地方都检查过了没有问题,最后只能联系百度客服重置账户的转化统计服务,一般24小时之内就能恢复正常。这种情况虽然不多,但遇到的时候能把人逼疯,因为所有的排查逻辑都失效了。
行业里没有100%准确的转化数据统计,能做到80%以上的准确率,就已经是非常优秀的水平了。剩下的20%,是广告拦截插件、浏览器安全策略、用户网络环境、设备差异导致的天然丢失,没有任何技术手段可以完全解决。很多人追求100%的数据准确率,花了大量的时间和精力去优化,最后发现能提升的空间不到5%,反而耽误了账户本身的优化。
有没有人遇到过所有地方都检查过了,代码、测试、设置全都是对的,但就是有一部分转化数据抓不到的情况?其实大部分时候,不是哪里出了错,只是行业本身就有这样的局限性,接受数据的不完美,把精力放在能提升转化的地方,比纠结那几个丢失的数据更有意义。