4 分钟数据分析案例复盘

网站统计不工作:一个从未记录到访问的计数器

统计工具装了,代码也在,控制台没有报错。可统计后台里一次访问都没有。原因是一行代码——它让浏览器用脚本标签顶替了统计函数。

一家设计工作室的网站已经运行了一年多。统计工具接好了,后台里也能看到这个计数器,页面源码里代码也在。但统计数据一直是空的,所有人都以为只是流量太少。

流量是有的。不工作的是统计代码——而且从第一天起就没工作过。

网站统计为什么不工作

标准的统计代码片段会创建一个名为 ym 的函数,并调用它完成初始化。而当时这段脚本标签是这样写的:

<Script id="ym"> ... ym(12345678, "init", { webvisor: true }) ... </Script>

浏览器会为每个带 id 属性的元素创建一个同名全局变量。于是在代码片段还来不及声明函数之前,window.ym 就已经指向了这个脚本标签本身。

接着代码片段检查「函数是不是已经存在」,发现这个变量被占用了,就保持原样。初始化调用于是打到了一个 DOM 元素上,在 try 块里失败,并且什么都不往控制台输出。

这种故障的特征是:typeof window.ym 返回的是 "object" 而不是 "function"。如果这个对象上还带着 l 之类的属性,那你看到的是脚本标签,而不是统计代码。

为什么一直没被发现

控制台里没有报错——它被吞掉了。统计脚本文件在网络请求里能看到,因为它确实加载了。后台里计数器显示为启用状态。一切看起来都正常,唯独一点:没有任何数据被发送,统计始终是空的。

要检查的不是代码在不在,而是数据有没有真的发出去。在浏览器里查看发往统计服务的网络请求:如果没有任何带你计数器编号的请求,那就没有在采集数据——不管后台怎么显示。

修复方法,以及一条通用规则

只需把标签的标识符改掉:用 ym-init 代替 ym。之后统计代码就能正常初始化,数据正常发送,会话录制也开始工作。

这条规则不止适用于一种统计工具:永远不要给元素设置与库的全局变量同名的 id。危险的名字包括 ym、dataLayer、gtag、fbq。浏览器会毫不犹豫地用你的标签把它们顶替掉。

整整一年的广告决策都是盲投的,起因只是一个属性里的两个字符。而验证它只需要十五秒。

现在就检查一下

打开你的网站,调出浏览器控制台,输入 typeof window.ym。如果返回 "function",一切正常;如果是 "object" 或 "undefined",那么数据并没有进入你的统计系统,你据以做决策的那些数字是不完整的。

业务流程自动化:先做哪一块,哪一块回本最快企业做自动化,常常从错的一端开始:先花钱做了好看的数据看板,而钱其实一直漏在接单环节。本文给出选择第一个环节的判断标准,以及几乎在任何公司都划算的三个方向。31% 的通话没进报表:销售管理是怎么失效的负责人每天晚上都会收到销售团队的工作汇总。这份汇总在说谎:三分之一的通话没被统计进去,其中一个业务板块还被虚高了近三倍。原因出在一行代码上。