跳转到内容
Telemetry
浏览文档
指南更新于 2026年7月27日由 Telemetry 编辑团队和产品团队审核阅读约需 3 分钟

让编程智能体使用这篇文档

打开 Claude Code、Codex、Cursor 或其他编码代理的集中提示包,然后将其适应此处介绍的工作流程。

本页内容
  1. 1. 定义实验
  2. 2、初始化Telemetry
  3. 3. 日志分配和暴露
  4. 4. 记录已完成的收入
  5. 5. 比较实验结果
  6. 6. 评估不确定性
  7. 后续步骤

收入 A/B 测试

仅收入总额就可以有利于获得更多流量的变体。记录分配、曝光和已完成的收入,以便您可以比较每个曝光访客的收入并评估不确定性。

控制和处理每个访客的收入条以及估计的提升和置信区间

在决定治疗是否产生有意义的提升之前,通过暴露来标准化收入。

1. 定义实验

发货前,写下:

  • 稳定的实验标识符;
  • 对照和治疗方案;
  • 分配单位,例如访客、用户或团队;
  • 主要指标和护栏指标;
  • 最小样本量、测试持续时间和停止规则。

一名受试者必须在整个实验期间保持一种变体。

2、初始化Telemetry

npm install telemetry-sh
import telemetry from "telemetry-sh";

telemetry.init(process.env.TELEMETRY_API_KEY);

3. 日志分配和暴露

仅当受试者能够实际体验治疗时才记录暴露情况。

const logExperimentExposure = ({ visitorId, variant }) => {
  telemetry.log("experiment_events", {
    event_name: "experiment_exposed",
    experiment_id: "checkout_copy_v2",
    visitor_id: visitorId,
    variant, // "control" or "treatment"
  });
};

使用内部标识符而不是电子邮件、cookie 值或其他个人数据。

4. 记录已完成的收入

将已完成的非测试购买记录到同一张表中。保留原始分配,而不是从以后可能更改的字段中查找它。

const logPurchase = ({ visitorId, variant, orderId, revenueUsd }) => {
  telemetry.log("experiment_events", {
    event_name: "purchase_completed",
    experiment_id: "checkout_copy_v2",
    visitor_id: visitorId,
    variant,
    order_id: orderId,
    revenue_usd: revenueUsd,
  });
};

提前确定退款、退款、订阅、货币和重复订单对指标的影响。

5. 比较实验结果

每个曝光访客的收入使不平等的流量无法决定结果。此查询在聚合每个变体之前为每个访问者创建一行:

WITH per_visitor AS (
  SELECT
    visitor_id,
    variant,
    MAX(CASE WHEN event_name = 'experiment_exposed' THEN 1 ELSE 0 END)
      AS was_exposed,
    SUM(CASE WHEN event_name = 'purchase_completed' THEN revenue_usd ELSE 0 END)
      AS visitor_revenue_usd
  FROM experiment_events
  WHERE experiment_id = 'checkout_copy_v2'
    AND timestamp_utc >= now() - INTERVAL '30 days'
  GROUP BY visitor_id, variant
)
SELECT
  variant,
  SUM(CASE WHEN was_exposed = 1 THEN 1 ELSE 0 END) AS exposed_visitors,
  SUM(CASE
    WHEN was_exposed = 1 AND visitor_revenue_usd > 0 THEN 1 ELSE 0
  END) AS buyers,
  ROUND(SUM(visitor_revenue_usd), 2) AS total_revenue_usd,
  ROUND(
    SUM(visitor_revenue_usd) /
    NULLIF(SUM(CASE WHEN was_exposed = 1 THEN 1 ELSE 0 END), 0),
    2
  ) AS revenue_per_exposed_visitor_usd,
  ROUND(
    100.0 * SUM(CASE
      WHEN was_exposed = 1 AND visitor_revenue_usd > 0 THEN 1 ELSE 0
    END) /
    NULLIF(SUM(CASE WHEN was_exposed = 1 THEN 1 ELSE 0 END), 0),
    2
  ) AS purchase_conversion_pct
FROM per_visitor
WHERE was_exposed = 1
GROUP BY variant
ORDER BY variant;

6. 评估不确定性

不要仅根据分数估计来宣布获胜者。收入分布通常是倾斜的,因此导出访客级别的结果以获得适当的置信区间或统计模型。在分析中保留预先指定的决策规则。

在相信结果之前,请检查:

  • 样本比例不匹配;
  • 分配给多个变体的访客;
  • 重复订单事件;
  • 测试交易、退款和混合货币;
  • 两种变体的转换时间是否相同;
  • 错误率或延迟等护栏指标的变化。

后续步骤

将审阅的查询和实验定义保存在一起,以便图表不会偏离其分母。使用 注册激活漏斗配方 来了解早期产品里程碑,使用 升级前的功能采用 来了解非实验性扩展视图。

相关功能

记录稳定的事件名称、类型明确的字段,以及经过隐私审核的上下文。

页面作者和参考资料

Telemetry 编辑团队负责维护本文;产品团队审核功能行为、示例和适用范围。

我们如何审核文档