开始之前
你需要一个 TapCub 账号,并在控制台里创建好站点。还没创建的话先看添加站点,大约两分钟,拿到下面要用的站点 Key。
你还需要能编辑网站每个页面共用的模板,或者建站平台的「自定义代码」区域。服务器上不用装任何东西。
添加代码
打开 网站统计配置SDK 代码,复制页面上的代码,里面已经带了你的站点 Key。它长这样:
index.html
<script async src="https://app.tapcub.com/w.js" data-site="YOUR_SITE_KEY"></script>把它贴到每个页面的 </head> 之前。脚本压缩后约 2 KB,异步加载,不会阻塞渲染。首次加载发送一次页面浏览,之后站内 URL 变化时再发。
- 登记主机名。 在同一个 SDK 代码页添加访客实际使用的域名,不带
https://和路径。子域名自动允许。未登记主机名的数据会被静默丢弃。 - 贴上代码。 每个页面一份。如果一个页面出现两份,只有第一份会运行。
- 部署并打开网站。 在普通浏览器标签里打开已登记域名下的页面。用
file://打开本地文件不会发送。
建站平台与 CMS
不需要安装插件。每个建站平台都有「全站头部代码」的位置,把代码放进去一次即可:
| 平台 | 贴在哪里 |
|---|---|
| WordPress | 主题的 header.php,或主题 / 头部代码插件提供的「头部脚本」框。放全局模板,不要逐篇文章贴。 |
| Shopify | theme.liquid 的 <head> 里。平台托管的结账页不运行主题脚本,所以这段代码统计不到结账页。 |
| Webflow / Wix / Squarespace | 站点设置 → 自定义代码 → head。用全站字段,不要用单页字段。 |
| Hugo、Hexo、Jekyll、Ghost、Typecho | 主题共用的 head 片段。 |
| Next.js、Nuxt、Vue、React | 根布局或应用外壳。单页应用已经覆盖——脚本会监听路由变化。路由用 # 的话,给标签加 data-hash="true"。 |
如果主题缓存了渲染后的 HTML,改完头部后要清一次缓存,否则旧页面会继续不带代码地输出。
确认第一条访问
一个标签打开 网站统计实时,另一个标签打开你的网站。几秒内应该看到这次页面浏览,路径和标题一致。
如果没有,打开浏览器的网络面板,按顺序查两条请求:
w.js已加载。 没有的话,说明代码不在页面里,或者被浏览器扩展拦了。- 一条到
/api/v1/pulse的 POST。 脚本加载了但没有 POST,说明浏览器拦住了请求(见下文)。有 POST 但实时为空,说明被我们这边丢弃了——最常见的原因是主机名没登记。
202。202 只证明请求到了,不证明被计数。实时报表是唯一的凭据。常见安装问题
| 现象 | 可能原因与处理 |
|---|---|
| 脚本加载了,没有 POST | 浏览器开了 Do Not Track 或 Global Privacy Control。TapCub 默认尊重两者,脚本会直接返回。换一个没开这些开关的浏览器测。 |
| 没有 POST,控制台报 CSP 错误 | 你的 Content-Security-Policy 需要在 script-src 和 connect-src 里放行 TapCub 的源。客服、身份识别和全埋点都从同一目录加载。 |
| 有 POST,实时为空 | 主机名未登记、站点已暂停、当月额度用完,或命中了排除规则。查 SDK 代码页和套餐用量。 |
| 线上正常,本地没数据 | localhost 默认不发送。只在测试期间登记它。 |
| 单页应用只记一次浏览 | Hash 路由需要 data-hash="true"。较晚替换 history.pushState 的框架可能需要把标签放到 head 更靠前的位置。 |
查完还是空的?通过联系页把页面地址和网络面板截图发给我们,通常一次回复就能定位。
接下来可以开什么
- 在同一段代码上启用在线客服——一个开关,不是第二段脚本。
- 让现有统计工具再跑一周,按迁移指南对照。
- 在真实流量进来之前,决定无 Cookie 还是识别用户。
- 有 App 或小程序的话安装对应 SDK,各自有独立的站点 Key。