# 新用户承接链路优化 产品需求文档 (PRD)

## 1. 需求背景

### 1.1 需求说明

当前新用户首次进入APP后，缺乏有效的引导转化机制，导致新用户流失率偏高。本次需求旨在通过以下三个方向优化新用户承接链路，提升新用户注册转化率和首单付费率：

1. **塔罗新手引导玩法**：针对 APP投放 来源的新用户，在其首次进入APP时触发塔罗新手引导链路，以低门槛、强趣味性的方式引导新用户完成首次体验并转化为付费用户
2. **支付页优惠引导强化**：在A/B链路的支付页面增加强烈的优惠减免感知，参考拼多多优惠展示形式，提升新用户首单付费转化
3. **A链路归因失败兜底**：A链路在APP首次启动页后若未归因成功，自动回退到原有链路（对照组），先展示登录页，保证用户体验闭环

### 1.2 需求目标

| 目标指标 | 当前基线 | 目标值 | 衡量周期 |
|---------|---------|-------|---------|
| 新用户注册转化率 | — | 提升30% | 上线后14天 |
| 新用户首单付费率 | — | 提升20% | 上线后14天 |
| A链路归因成功率 | — | ≥85% | 持续监控 |
| 新用户次日留存 | — | 提升15% | 上线后30天 |

### 1.3 目标用户

| 用户类型 | 用户画像 | 核心诉求 |
|---------|---------|---------|
| **新用户（未注册）** | 24-30岁女性为主，新一线/二线城市，通过 **APP投放** 首次打开APP | 低门槛体验核心玩法，快速了解产品价值 |
| **新用户（已注册未付费）** | 已完成注册但尚未产生付费行为的新用户 | 感知优惠价值，降低首次付费决策门槛 |

### 1.4 投放来源判定规则 ⭐

| 投放来源 | 是否触发新链路 | 说明 |
|---------|-------------|------|
| **APP投放** | ✅ 触发 | 通过APP广告渠道（如巨量引擎、腾讯广告等）投放带来的新用户，进入本次需求的新链路逻辑 |
| **H5** | ❌ 不触发 | 通过H5链接/页面进入的用户，不触发本次新链路，走原有逻辑 |
| **商店** | ❌ 不触发 | 通过应用商店自然下载的用户，不触发本次新链路，走原有逻辑 |

> **判定逻辑**：在归因成功后，需进一步判断"投放来源"字段，仅当来源 = "APP投放" 时才分配实验组（A/B链路）。来源 = H5 或 商店 的用户，无论归因是否成功，均走对照组原有链路。

### 1.5 核心价值主张

"以塔罗为引，以优惠为桥，让新用户在3分钟内完成从陌生人到付费用户的转化"

---

## 2. 整体链路设计

### 2.1 链路总览

本次需求涉及三条链路并行运行，通过AB实验对比效果：

| 链路 | 说明 | 流量占比 |
|-----|------|---------|
| **A链路（实验组1）** | 新用户引导 → 塔罗新手玩法 → 优惠支付页 → 转化 | 40% |
| **B链路（实验组2）** | 新用户引导 → 塔罗新手玩法 → 优惠支付页（优惠样式差异）→ 转化 | 40% |
| **对照组（原有链路）** | 启动页 → 登录页 → 首页 | 20% |

### 2.2 核心业务流程图

```mermaid
flowchart TD
    A[用户首次打开APP] --> B[展示品牌启动页/Splash]
    B --> C{归因判定}
    
    C -->|归因成功| D{判断投放来源}
    C -->|归因失败| Z[回退到对照组逻辑]
    
    D -->|来源=APP投放| E{分配实验组}
    D -->|来源=H5| Z
    D -->|来源=商店| Z
    
    E -->|A链路| F1[新用户引导页]
    E -->|B链路| F2[新用户引导页]
    
    Z --> G[登录/注册页]
    
    F1 --> H1[塔罗新手专属玩法页面]
    F2 --> H2[塔罗新手专属玩法页面]
    
    H1 --> I1[抽牌结果 + 达人解答卡片]
    H2 --> I2[抽牌结果 + 达人解答卡片]
    
    I1 --> J1[A链路支付页 - 优惠样式A]
    I2 --> J2[B链路支付页 - 优惠样式B]
    
    J1 --> K1{用户决策}
    J2 --> K2{用户决策}
    
    K1 -->|支付| L1[连麦/文字咨询]
    K1 -->|放弃| M1[引导回首页]
    K2 -->|支付| L2[连麦/文字咨询]
    K2 -->|放弃| M2[引导回首页]
    
    G --> N[正常首页流程]
```

### 2.3 链路详细步骤

#### 步骤1：APP启动 & 归因判定

| 环节 | 说明 |
|-----|------|
| **启动页展示** | 品牌Splash页 |
| **归因请求** | 启动后立即发起归因请求（检测渠道来源、广告点击、邀请码等） |
| **归因成功判定** | 成功获取渠道归因信息（如广告渠道ID、邀请人ID等） |
| **归因失败判定** | 超时或未获取到有效归因信息 |
| **归因失败处理** | 走对照组逻辑：跳转到原有登录/注册页 |
| **投放来源判定** | 归因成功后，判断投放来源字段：仅"APP投放"触发新链路，"H5"和"商店"走对照组 |

#### 步骤2：新用户引导页（仅A/B链路）

| 元素 | 说明 |
|-----|------|
| 欢迎标题 | 新用户欢迎文案 |
| 引导副标题 | 引导用户开始塔罗体验 |
| 开始按钮 | 进入塔罗新手玩法 |
| 跳过按钮 | 跳过引导，跳转首页 |

#### 步骤3：塔罗新手专属玩法页面 ⭐

页面交互流程与内容沿用现有塔罗抽卡功能，不新增页面细节设计。

#### 步骤4：支付页（A/B链路差异化）

A/B链路在此处产生差异，主要体现在优惠展示样式上（详见第4节）。

---

## 3. 塔罗新手引导玩法

### 3.1 功能定位

| 属性 | 说明 |
|-----|------|
| **功能名称** | 塔罗新手引导（内部代号：新手塔罗 / Tarot Onboarding） |
| **与原有塔罗的关系** | 页面交互流程与内容沿用现有塔罗抽卡功能 |
| **触发条件** | 仅在A/B链路的新用户首次启动时展示（且投放来源 = APP投放） |
| **使用次数** | 每个用户仅可体验1次 |
| **后续入口** | 体验完成后不再展示，用户后续使用原有塔罗抽卡功能 |

### 3.2 页面内容说明

抽卡选择和输入问题的页面逻辑均沿用现有塔罗抽卡功能，不做新增页面细节定义。本次需求关注的是链路跳转逻辑和支付页优惠引导的差异。

### 3.3 与原塔罗抽卡的功能差异对照

| 功能点 | 塔罗新手引导 | 原有塔罗抽卡 |
|-------|------------|------------|
| 入口位置 | 新用户承接链路专用（仅APP投放来源） | 首页金刚位 / 聊天页工具栏 |
| 使用限制 | 仅新用户首次1次 | 无限制 |
| 付费引导 | 强引导，直接跳转支付页 | 弱引导，用户自主决定 |

> 其余功能（问题选择、抽牌流程、牌面解读等）均沿用现有塔罗抽卡。

---

## 4. 支付页优惠引导设计（A/B差异化）

### 4.1 设计目标

在A、B链路的支付页面增加**强烈的优惠减免感知**，参考拼多多的优惠展示形式，让用户产生"不用就亏了"的心理感受，从而提升首单付费转化。

### 4.2 A链路支付页 - "限时立减"样式

参考拼多多"限时秒杀"风格，核心展示元素：

| 元素 | 说明 |
|-----|------|
| **倒计时横幅** | "新用户专属优惠，仅剩 XX:XX"，营造紧迫感 |
| **原价删除线** | 展示原价并加删除线 |
| **优惠金额标签** | 醒目展示立减金额（如"立减 ¥30"） |
| **现价大字** | 优惠后价格，大字号突出展示 |
| **优惠进度条** | "已有 XXXX 位新用户领取"，显示剩余名额 |
| **优惠券提示** | "恭喜获得新人专属优惠券"提示文案 |
| **限时标签** | "限时 · 今日有效" |
| **支付按钮** | 显示优惠后价格，引导立即支付 |
| **优惠说明** | "首单优惠仅限新用户首次使用" |

### 4.3 B链路支付页 - "优惠券翻牌"样式

参考拼多多"天天领现金"翻牌风格，核心展示元素：

| 元素 | 说明 |
|-----|------|
| **翻牌动画** | "点击拆开你的新人优惠"，3D翻转效果 |
| **翻出优惠金额** | 动画展示优惠金额（如"¥30优惠券"） |
| **优惠券样式** | 模拟实体优惠券形态 |
| **倒计时** | "优惠券将在 XX:XX 后过期" |
| **原价对比** | "日常价 → 券后价"对比展示 |
| **使用条件** | "新用户首单可用 · 限1次" |
| **名额提醒** | "仅剩 XXX 个名额，手慢无！" |
| **支付按钮** | "使用优惠券支付 ¥X.X" |
| **放弃挽留弹窗** | 用户放弃时弹出"确定要放弃¥XX优惠吗？" |

### 4.4 A/B链路优惠样式差异对照

| 维度 | A链路（限时立减） | B链路（优惠券翻牌） |
|-----|----------------|-------------------|
| **核心心理** | 紧迫感（限时倒计时） | 获得感（翻牌拆开） |
| **优惠展示** | 直接展示立减金额 | 翻牌动画后展示优惠券 |
| **倒计时位置** | 顶部通栏 | 优惠券内部 |
| **紧迫感元素** | 红色倒计时通栏 + 名额进度条 | 名额警告条 + 过期倒计时 |
| **优惠券形态** | 信息卡片式 | 仿真优惠券 |
| **放弃挽留** | 无 | 放弃时弹出挽留弹窗 |
| **预期效果** | 强紧迫感驱动冲动消费 | 强获得感驱动占便宜心理 |

---

## 5. A链路归因失败兜底逻辑

### 5.1 归因判定流程

```mermaid
flowchart TD
    A[APP首次启动] --> B[展示启动页]
    B --> C[发起归因请求]
    C --> D{3秒内是否收到有效归因信息?}
    
    D -->|是 - 归因成功| E{判断投放来源}
    D -->|否 - 归因失败| F[标记为归因失败]
    
    E -->|来源=APP投放| G{判断实验组}
    E -->|来源=H5| H[走对照组]
    E -->|来源=商店| H
    
    G -->|A链路| I[进入新用户引导页 → 塔罗新手玩法]
    G -->|B链路| J[进入新用户引导页 → 塔罗新手玩法]
    G -->|对照组| K[进入登录/注册页]
    
    F --> K
    H --> K
```

### 5.2 归因成功判定标准

| 条件 | 判定结果 |
|-----|---------|
| 获取到渠道归因ID（如巨量、腾讯广告等） | ✅ 归因成功 |
| 获取到有效邀请码/邀请人ID | ✅ 归因成功 |
| 获取到深度链接（Deep Link）中的来源参数 | ✅ 归因成功 |
| 未收到任何归因信息 | ❌ 归因失败 |
| 收到归因信息但校验失败（签名不匹配等） | ❌ 归因失败 |

### 5.3 投放来源判定逻辑

归因成功后，需进一步读取投放来源字段进行二次判定：

| 投放来源值 | 处理逻辑 |
|-----------|---------|
| APP投放 | 进入实验分组逻辑（A链路/B链路/对照组） |
| H5 | 直接走对照组原有链路 |
| 商店 | 直接走对照组原有链路 |

### 5.4 归因失败后的回退逻辑

当A链路用户归因失败时，按以下逻辑处理：

| 环节 | 处理方式 |
|-----|---------|
| **跳转目标** | 原有链路的登录/注册页（对照组首屏） |
| **页面内容** | 与对照组完全一致的登录页 |
| **后续流程** | 登录/注册后进入正常首页流程 |
| **数据记录** | 记录归因失败原因、回退事件、后续行为 |
| **实验标记** | 该用户标记为"归因失败-回退对照组"，不计入A链路实验数据 |

### 5.5 数据埋点要求

| 埋点名称 | 触发时机 | 上报参数 | 说明 |
|---------|---------|---------|------|
| Attribution_Start | 发起归因请求 | zz_request_id, zz_timestamp | 归因请求发起 |
| Attribution_Success | 归因成功 | zz_channel, zz_source, zz_traffic_source, zz_experiment_group | 归因成功及分组（新增 zz_traffic_source 投放来源字段） |
| Attribution_Fail | 归因失败 | zz_fail_reason, zz_timeout | 归因失败原因 |
| Traffic_Source_Check | 投放来源判定 | zz_traffic_source, zz_action | 记录投放来源判定结果 |
| Fallback_Trigger | 触发回退对照组 | zz_original_group, zz_fallback_reason | 回退事件 |
| Tarot_NewUser_Entry | 进入塔罗新手页 | zz_experiment_group, zz_question_type | 新手塔罗入口 |
| Tarot_NewUser_CardSelect | 选择塔罗牌 | zz_card_id, zz_position | 抽牌选择 |
| Tarot_NewUser_ResultView | 查看牌面结果 | zz_card_id, zz_view_duration | 结果页停留 |
| Payment_Page_Show | 支付页展示 | zz_experiment_group, zz_original_price, zz_discount_price | 支付页曝光 |
| Payment_Page_CTA_Click | 点击支付按钮 | zz_experiment_group, zz_final_price | CTA点击 |
| Payment_Success | 支付成功 | zz_order_id, zz_amount, zz_experiment_group | 支付转化 |
| Coupon_Reject_Show | 展示放弃挽留弹窗 | zz_experiment_group | B链路挽留弹窗 |

---

## 6. 实验设计

### 6.1 实验分组

| 分组 | 链路 | 流量占比 | 核心变量 | 触发条件 |
|-----|------|---------|---------|---------|
| 实验组A | A链路 | 40% | 塔罗新手引导 + 限时立减支付页 | 投放来源 = APP投放 |
| 实验组B | B链路 | 40% | 塔罗新手引导 + 优惠券翻牌支付页 | 投放来源 = APP投放 |
| 对照组 | 原有链路 | 20% | 启动页 → 登录页 → 首页 | 投放来源 = APP投放 或 归因失败 |
| 非APP投放用户 | 原有链路 | — | 不走实验逻辑 | 投放来源 = H5 或 商店 |

### 6.2 实验指标

| 指标类型 | 指标名称 | 计算方式 |
|---------|---------|---------|
| **核心指标** | 新用户注册转化率 | 完成注册的新用户数 / 进入链路的新用户数 |
| **核心指标** | 新用户首单付费率 | 完成首单付费的新用户数 / 完成注册的新用户数 |
| **过程指标** | 塔罗新手页完成率 | 完成抽牌的新用户数 / 进入塔罗新手页的新用户数 |
| **过程指标** | 支付页到达率 | 到达支付页的新用户数 / 查看牌面结果的新用户数 |
| **过程指标** | 支付页转化率 | 点击支付按钮的用户数 / 到达支付页的用户数 |
| **过程指标** | 归因成功率 | 归因成功的用户数 / 发起归因请求的用户数 |
| **护栏指标** | 新用户次日留存 | 次日再次打开APP的新用户数 / 当日新用户数 |
| **护栏指标** | 用户投诉率 | 提交投诉的新用户数 / 总新用户数 |

### 6.3 实验周期

| 阶段 | 时间 | 说明 |
|-----|------|------|
| 灰度期 | 上线后第1-3天 | 5%流量，验证链路稳定性 |
| 观察期 | 上线后第4-7天 | 50%流量，观察核心指标趋势 |
| 全量期 | 上线后第8-14天 | 100%流量（按实验分组），得出实验结论 |

---

## 7. 技术规格

### 7.1 客户端要求

| 要求 | 说明 |
|-----|------|
| **归因SDK** | 集成渠道归因SDK，支持主流广告平台 |
| **归因超时** | 超时即判定为归因失败 |
| **投放来源判定** | 归因成功后读取投放来源字段，仅"APP投放"触发新链路 |
| **实验分组** | 通过服务端下发实验分组，客户端不自行分组 |
| **塔罗新手页** | 沿用现有塔罗抽卡功能 |
| **支付页** | 根据实验分组渲染不同优惠样式 |
| **缓存策略** | 用户分组结果本地缓存，避免每次启动重新请求 |

### 7.2 服务端要求

| 要求 | 说明 |
|-----|------|
| **归因服务** | 提供归因查询接口，返回渠道来源、投放来源及实验分组 |
| **投放来源字段** | 归因接口需返回 traffic_source 字段（APP投放/H5/商店） |
| **实验配置** | 支持动态调整实验分组流量占比 |
| **优惠配置** | 支持运营配置优惠金额、有效期、名额等 |
| **数据上报** | 接收客户端埋点数据，写入分析系统 |

### 7.3 接口设计

#### 7.3.1 归因查询接口

```
POST /api/v1/attribution/query
Request:
{
  "device_id": "设备唯一标识",
  "install_timestamp": "安装时间戳",
  "channel_params": "渠道参数（如有）"
}

Response:
{
  "success": true,
  "attributed": true,           // 是否归因成功
  "channel": "巨量引擎",         // 归因渠道
  "traffic_source": "APP投放",  // 投放来源: APP投放/H5/商店
  "experiment_group": "A",      // 实验分组: A/B/control
  "new_user": true              // 是否新用户
}
```

#### 7.3.2 优惠配置接口

```
GET /api/v1/promotion/config
Response:
{
  "experiment_group": "A",
  "original_price": 39.9,
  "discount_amount": 30,
  "final_price": 9.9,
  "expire_at": "2026-04-20T23:59:59+08:00",
  "total_quota": 3000,
  "remaining_quota": 614
}
```

---

## 8. 风险与预案

| 风险 | 影响 | 预案 |
|-----|------|------|
| 归因SDK异常导致大面积归因失败 | 大量用户走对照组，实验效果无法验证 | 降级方案：快速回退对照组 |
| 优惠配置错误（如价格为0） | 资损 | 服务端增加价格校验，最低价限制为1元 |
| 塔罗新手页加载慢 | 新用户流失 | 静态资源预加载 |
| 实验组注册转化率低于对照组 | 新功能可能负面影响体验 | 实时监控，低于对照组时触发告警 |

---

*文档版本：v1.1*
*创建时间：2026-04-20*
*更新时间：2026-04-21*
*文档状态：待评审*
