数据采集与 SDK 一行代码开始,
所有端都能接上。
网站贴一段异步脚本。事件发生在别处时,再加 SDK 或服务端 API。数据已经在流了,再给事件起名字;所有端的事件名和字段通用。
- 约 2 KB,异步加载
- 先采集,名字由你确认
- 网页、App、小程序
- 服务端 API 补发后端事件
- 压缩后体积
- ≈ 2 KB
- 压缩后体积
- 异步加载,不阻塞
- async
- 异步加载,不阻塞
- 看到第一批访客
- < 1 分钟
- 看到第一批访客
实时事件流
最近 60 秒事件 / 分钟
1,284
▲ 6%
在线访客
312
▲ 2%
待确认候选
3
- pageviewWeb · Chromepath=/pricing · ref=google自动2 秒
- click · button.ctaWeb · Safaritext="开始免费试用"待确认5 秒
- order_paidiOS · 4.2.1amount=199 · currency=USD已命名9 秒
- share微信小程序page=pages/goods/detail · scene=1007已命名14 秒
- refund服务端 APIorder_id=A8841 · amount=49已命名21 秒
- scroll · /pricing · 75%Web · Edgedepth=75自动30 秒
一段脚本、一个 SDK、服务端,或一行日志
真人浏览来自浏览器或 SDK。服务端用来补页面上看不见的事件。日志导入只用于识别爬虫。
网页脚本
页面里一段异步脚本。统计和在线客服都用它。
各端 SDK
iOS、Android、鸿蒙、Flutter、React Native、uni-app 和小程序。
服务端 API
付款、退款或任何后端任务,都可以补发一个命名事件。
访问日志
提交 combined 格式的日志行,用来识别爬虫。真人浏览仍走脚本。
先采集。想统计时,再给事件起名字。
脚本一上线,点击、提交和滚动就开始记。AI 把它们归成一组并建议名字。你在收件箱确认之前,它还不是报表指标。
自动采集
脚本上线当天,点击、表单提交和滚动就开始记。
AI 建议名字
相近的操作被归到一起,并给一个可读的名字。
你来确认
在收件箱点一下,候选项才变成可以画图的事件。
补上业务字段
订单和套餐需要一段短代码,带上你关心的字段。
今天采到的
- click · button.cta186×
- submit · form#signup74×
- click · a[href="/pricing"]210×
- scroll · /pricing · 75%96×
建议的名字
- trial_started96%
主按钮上的点击
- signup_submitted94%
注册表单已提交
- pricing_viewed81%
定价页滚动到 75%
埋点收件箱
- trial_started已确认
- signup_submitted已确认
- pricing_viewed确认
待粘贴的代码
// 付款成功后粘贴
tapcub.track('order_paid', {
order_id: order.id,
amount: order.total,
currency: 'USD',
});事先把名字写死
数周
先写方案,等一次发布,然后发现名字不对。
TapCub
几分钟
先采集。确认你要的名字,就可以拿去画图。
7 端 SDK 加服务端 API,
送进同一个项目
每个来源有自己的站点 Key,事件名和字段在所有端通用。身份识别可以把它们认成同一个人。
<!-- 放在 </head> 之前,统计与客服共用 -->
<script async src="https://app.tapcub.com/w.js" data-site="SITE_KEY"></script>// 启动时初始化一次;业务事件用 track
TapCub.start(siteKey: "SITE_KEY")
TapCub.track("order_paid", ["amount": 199, "currency": "USD"])// 启动时初始化一次;业务事件用 track
TapCub.start(this, "SITE_KEY")
TapCub.track("order_paid", mapOf("amount" to 199, "currency" to "USD"))// 在 app.js 初始化一次,三端小程序通用
const tapcub = require('tapcub-mp')
tapcub.init({ siteKey: 'SITE_KEY' })
tapcub.track('order_paid', { amount: 199 })# 服务端用项目的 Server Key 补发事件
curl -X POST https://api.tapcub.com/v1/events \
-H "Authorization: Bearer SERVER_KEY" \
-d '{"event":"order_paid","user_id":"u_8841","props":{"amount":199,"currency":"USD"}}'进来就校验,
名字由你确认
每条事件入库前都会检查:意料之外的事件名、缺失的属性、类型不对的值都会被标出,免得悄悄带偏报表。候选项变成正式事件,发生在收件箱里。
- 实时校验:事件名、属性、类型
- 数据质量警告推送到项目首页
- 事件与属性管理:合并、重命名、停用
数据质量 · acme-web
最近 7 天通过校验
99.2%
▲ 0.3 个百分点
警告
14
▼ 6
待处理属性
3
| 事件 | 问题 | 次数 | 状态 |
|---|---|---|---|
| order_paid | amount 出现字符串值 | 38 | 待处理 |
| signup_submitted | 缺少属性 plan | 12 | 待处理 |
| Order_Paid | 与 order_paid 大小写冲突 | 6 | 已合并 |
| pricing_viewed | 新事件,等待确认 | 96 | 收件箱 |
约 2 KB,异步加载,
不挡住页面
脚本压缩后约 2 KB,用 async 加载,页面渲染不等它。统计和在线客服共用它;客服窗口按需再加载。
- 1创建一个项目免费,无需信用卡。每个网站、App 或小程序有自己的 Key。
- 2贴上脚本放在 head 结束标签之前,或建站平台的自定义代码里。
- 3看第一批访客第一次打开页面后,大约一分钟内应能看到实时访客。
<!-- 放在 </head> 之前 · 统计 + 客服 -->
<script async src="https://app.tapcub.com/w.js" data-site="SITE_KEY"></script>
- 压缩后体积
- ≈ 2 KB
- 压缩后体积
- 异步加载,不阻塞
- async
- 异步加载,不阻塞
- 看到第一批访客
- < 1 分钟
- 看到第一批访客
其他端用对应 SDK
压缩后约 2 KB,异步加载,不会挡住页面渲染。
示例场景: 一个内容站周五下午贴上脚本,周一就能看到周末的来源与热门页;两周后再从收件箱确认订阅按钮的事件名,不用等开发排期。
脚本有多大?
压缩后约 2 KB。用 async 加载,不会挡住页面渲染。客服窗口在访客需要时才加载。
要先写埋点方案吗?
不用。全埋点会立刻记下点击、提交和滚动。AI 建议名字,你在收件箱里确认要的那些。
有哪些 SDK?
网页、iOS、Android、鸿蒙、小程序(微信、支付宝、抖音)、Flutter、React Native、uni-app,以及服务端 API。
会把网站拖慢吗?
脚本很小,而且异步加载,不是挡住解析的那种标签。
服务端能发事件吗?
能。付款、退款和浏览器里不会发生的事,走服务端 API。访问日志导入只用来识别爬虫。
数据校验失败会怎样?
事件仍会入库,但会带上警告并出现在数据质量面板里。你可以修正属性、合并重名事件或停用它。