📉 用户转化率下降归因报告

日期:2026-05-16 · 调查对象:注册→首单转化率(dashboard 显示昨日下降) · 数据源:production DB + SigNoz + 浏览器实测
⚠️ 结论摘要:是 真实下降(不只是数据成熟度偏差),主因有 3 个:① 5/15 注册流量下降 13.7% / -20% vs 上周同期 / 前一天;② 5/15 ISP priority pricing 上线后 ISP 拿到默认流量,但池容量不够 + 接码率仅 19.5%,拖低成功率;③ OpenAI 服务(最大单品)成功率从 55.9% 跌到 41.0%,因 durianrcs 服务质量退化 + 分流到 ISP。
目录
  1. TL;DR · 关键发现
  2. 漏斗分解:是真实下降,不是数据成熟度
  3. 三大归因:流量 / ISP 上线 / OpenAI 服务
  4. 关键变更时间线
  5. SigNoz 错误日志验证
  6. 浏览器实测:UX 流程验证
  7. 行动建议(按优先级)
  8. 方法论 / 局限

1. TL;DR · 关键发现

5/15 注册量
340
-13.7% vs 上周同期(5/8: 394)
-20% vs 前一天(5/14: 424)
5/15 注册→首单率
36.5%
-7.4 pt vs 上周同期(5/8: 43.9%)
-5.7 pt vs 前一天(5/14: 42.2%)
5/15 ISP 取号 sms_per_alloc
19.5%
vs durianrcs 34.6%(聚合器)
ISP 自营池接码率远低于聚合器
OpenAI 服务成功率
41.0%
-14.9 pt vs 前一天(5/14: 55.9%)
OpenAI 是日单量第一大服务

🔥 一句话归因(按贡献度排序)

  1. 注册流量本身下降 -13.7%(上周同期对比)—— 这是占主导的因素,约贡献 50% 的转化数下降。可能与营销渠道投放节奏 / SEO 流量波动有关。
  2. ISP Priority Pricing 在 5/15 上线(PR #342)让 ISP 拿到默认流量,但 ISP 池 99 idle + 1900 warmup 容量不够,且接码率仅 19.5%,导致 5/15 走 ISP 的订单大量失败。
  3. OpenAI 服务通过 durianrcs 的成功率从 71.2% 跌到 63.8%,且部分流量被分流到 ISP(成功率 19.6%),整体 openai 成功率从 55.9% → 41.0%。

📊 关于 dashboard "7d 转化率" 虚线段下降

Dashboard 截图里 7d 转化率最后 7 天的虚线段(25%)主要是数据成熟度偏差(用户刚注册 1-7 天,还没经过完整 7d 窗口)。但是 5/15 same-day 24h 转化率(已成熟)从 41.5% → 36.5%,这是真实下降,不能用数据成熟度解释。

2. 漏斗分解

过去 16 天:注册 → 验证 → 首充 → 首单

日期星期注册验证首充首单验证率充值率首单率
2026-05-01113110373997.3%32.7%34.5%
2026-05-02156149717095.5%45.5%44.9%
2026-05-03129126575797.7%44.2%44.2%
2026-05-04205198878596.6%42.4%41.5%
2026-05-0523722810610696.2%44.7%44.7%
2026-05-0644743121321896.4%47.7%48.8%
2026-05-0738237316016097.6%41.9%41.9%
2026-05-0839438717117198.2%43.4%43.4%
2026-05-0935334114014196.6%39.7%39.9%
2026-05-1026225712012398.1%45.8%46.9%
2026-05-1141239519418895.9%47.1%45.6%
2026-05-1244243320020098.0%45.2%45.2%
2026-05-1345643720520695.8%45.0%45.2%
2026-05-1442441319119097.4%45.0%44.8%
2026-05-1534032113413494.4%39.4%39.4%
2026-05-16 (今天 UTC 02h)252598
数据成熟度:5/16 数据未完整(当前 UTC 02:43),仅供参考。

5/8 vs 5/15 同为周五的精准对比

日期注册验证首充首单验证率充值率首单率
2026-05-08(周五)39438717317398.2%43.9%43.9%
2026-05-15(周五)34032112712494.4%37.4%36.5%
差值-13.7%-17.1%-26.6%-28.3%-3.8 pt-6.5 pt-7.4 pt
这不是数据成熟度问题。5/15 是当天注册当天下单的 same-day(24h)口径,是已成熟数据。与上周五同口径对比,注册总量、各漏斗段比率都在跌。

充值后的下单转化保持健康

日期注册充值率充值→下单率
5/1244245.5%99.0%
5/1345645.8%99.0%
5/1442442.5%98.3%
5/1534037.4%97.6%
关键 insight:充值后下单的转化率保持 97-99%,说明瓶颈在「注册→第一次充值」环节,不在产品体验本身。

3. 三大归因

🔴 归因 #1(贡献度最高):注册流量本身下降

5/15 vs 5/8 同期注册量 -13.7%(394 → 340),是单日波动里偏大的下跌。可能来源:

数据没法直接证伪:因为 analytics_events 表只埋了 topup_success / purchase / refund 三类事件,注册来源(utm_source / referrer / GA client_id)没有埋点入库。建议加埋点(行动建议见 §7)。

🟠 归因 #2:ISP Priority Pricing 上线 + 池容量不足

关键时间点

ISP 池流量增长

日期isptelecom attemptsalloc_ratesms_per_alloc实际拿到 SMS
5/1320%0
5/14714.2%0%0
5/1521436.0%19.5%15

5/15 ISP 池吃了 214 个分配请求,但接码率(sms_per_alloc)只有 19.5%,远低于聚合器(durianrcs 34.6%、sms-bus 20.3%、grizzlysms 13.8%)。

池容量当前快照(2026-05-16 UTC 02:43):

状态数量说明
warmup1,900预热中,不能用
idle(可分配)99仅 99 个号可用,处理 200+/天 订单严重不够
cooldown1
诊断:B4/B5/C2 系列改动把 ISP 推到默认流量入口,但池容量并未跟上:实际可用号码只有 99 个,日处理 200+ 订单意味着同号高频复用、cooldown 频繁切换、风控触发,最终接码率显著低于聚合器。这是一个明显的 "上线节奏" 问题 — 路由先开了,但库存还没准备好。

🟡 归因 #3:OpenAI 服务(最大单品)成功率塌方

OpenAI 是日单量第一大服务(450-550 单/天)。5/14 → 5/15 成功率从 55.9% → 41.0%:

日期Supplier订单成功成功率
5/14durianrcs.com41329471.2%
5/14grizzlysms.com911011.0%
5/14sms-bus.com4748.5%
5/14 合计55130855.9%
5/15durianrcs.com27117363.8%
5/15isptelecom (新分流)561119.6%
5/15grizzlysms.com7422.7%
5/15sms-bus.com5511.8%
5/15 合计45618741.0%

解读

  1. durianrcs 主力通道成功率 71.2% → 63.8%(-7.4 pt),可能是 durianrcs 自身服务质量波动。
  2. 56 单 OpenAI 被 ISP 分走,但 ISP 池 OpenAI 接码率只有 19.6%(11 / 56),把整体成功率拖低 ~2.7 pt。
  3. grizzlysms 和 sms-bus 在 OpenAI 上几乎全军覆没(< 3%),但占比小所以影响有限。

🟢 其他维度:未发现明显异常

维度5/145/15结论
Desktop vs Mobile350 / 95277 / 72移动占比一致(21%),无端侧偏移
充值后下单率98.3%97.6%无下降
nihaopay paid201 / 310 (35.2% expired)138 / 216 (36.1% expired)支付通道转化无异常
Stripe paid78无异常
SigNoz error 总量~1900 条 / 51h(约 37 条/h)在历史正常区间

4. 关键变更时间线(5/14 - 5/16)

时间(北京时间)Commit / PR影响域风险评估
5/14 09:48-22:08PR #340:ISP webhook dropped 路径加 OTP 提取ISPLOW 后台改动,不影响线上分配
5/15 04:16blog 三语内容(Codex 系列)SEON/A
5/15 12:402fddcf2d feat(isp): priority pricing — ISP 拿默认流量路由HIGH 改变默认 supplier 分配权重
5/15 15:21-15:35B4/B5/C2 — channel modal + warmup 加速ISPMED UI + 池预热加速
5/15 16:15-16:593 个 channel/allocate variant pricing 边界修复计价MED Codex P1 修复
5/15 23:18PR #342 合并到 main
5/16 02:09 起PR #347(ISP pool 微调)+ PR #346 / #348LOW
关键观察:ISP priority pricing 改动早在 5/15 12:40 就 commit 了,到 23:18 才合并 PR。意味着这天有可能在分阶段灰度,或者某个 worktree 部署提前生效,让 5/15 全天的 ISP 流量大幅放大(71 → 214)。

5. SigNoz 错误日志验证

5/14-5/16 期间错误日志 top messages(共 1908 条,绝大多数来自 tuna-worker):

数量消息影响
663sweep address orders failed钱包扫描,已有 PR #344 修 1h 冷却
634严重告警:链上余额不足同上,已修
321allocate number failed核心 — 取号失败
193failed to save supplier audit log审计落库失败(非业务路径)
29get sms failed

"allocate number failed" 错误抽样(50 条最新)

44 条: all suppliers failed, last error: allocate number with sms-bus.com:
       code mapping failed: unknown country / unknown service
 2 条: all suppliers failed, last error: allocate number with sms-bus.com:
       No number available
 1 条: all suppliers failed, last error: allocate number with isptelecom:
       country "USV" not supported

分析

6. 浏览器实测:UX 流程验证

用提供的两个测试账号实测全流程:

测试 1:未充值用户 peterstone324@gmail.com → 首单流程

login result
登录后落地 Receive SMS 页,$0.00 余额,无明显引导充值的 CTA
cart added
选服务 (Telegram) → 选国家 (Canada) → Add to Cart 成功
insufficient balance toast
⚠️ 点击 "Receive SMS" 后才弹出 "Insufficient wallet balance. Please top up and try again."
topup page
Top Up 页:USDT / 150+ Crypto / Alipay / Stripe Card 四个选项清晰

测试 2:已充值用户 yeerkunth@gmail.com → 余额 $41.56

paid user dashboard
登录顺畅,余额展示清晰,dashboard 渲染快

UX 观察 · 一个 friction 点

未充值用户走到 "余额不足" 提示需要 5 个步骤

  1. 登录 → 落地 Receive SMS
  2. 选服务(Telegram)
  3. 选国家(Canada)
  4. Add to Cart
  5. 点击 Receive SMS → 这时才弹错

建议:余额检查可以提前到 step 2 / 3:

这能减少 "选了半天发现没钱不想充" 的流失。结合数据:5/15 注册 340 但充值仅 127,213 个人(62.6%)注册后未充值 — 这是最大的漏斗段

7. 行动建议(按优先级)

优先级问题建议动作负责
P0 ISP pool 容量不足(99 idle 处理 200+ 订单/天) ① 立即降低 ISP priority weight(恢复 5/14 之前的分配,把流量先回滚给 durianrcs);② 等待 warmup worker 把 1900 号转为 idle 后再开放;③ 在 admin dashboard 加上 "可用号码数 / 当日订单数" 的水位告警阈值 后端 / 运营
P1 durianrcs OpenAI 成功率下降 (71.2% → 63.8%) ① 拉 durianrcs 健康度日报,看是不是同期他们 API 也有抖动;② 必要时和 durianrcs 商务联系;③ 检查 supplier_health_worker 的告警是否触发 后端
P1 注册流量下降但无埋点追踪来源 埋点:在 user 注册时记录 utm_source / referrer / landing_page,可以是单独一张 user_acquisition 表或 users.signup_meta_json 字段。否则下次再问 "为什么注册量掉了" 还是抓瞎 前端 + DBA
P2 注册→充值 friction (62.6% 注册用户从不充值) ① "Insufficient balance" 错误改为前置 — 选好服务+国家后就 inline 提示;② 头部余额徽章 $0 时高亮红色;③ Top Up 按钮加微信 / 支付宝 的最低 $3 试用引导;④ 考虑送 $0.1 试用券给新用户体验完整流程 前端 / 增长
P2 sms-bus.com country/service mapping 缺失 已知问题:根据 SigNoz 抓的 "USV" 等异常 country code,补全 supplier_catalog_service_mappings / supplier_catalog_country_mappings 后端
P3 Dashboard "7d 转化率" 虚线段下降会被误读为业务下滑 不需要改 — UI 上已经用虚线 + "数据未成熟" 注释处理得很清楚。但运营看 dashboard 时仍然容易先注意到下降,需要在团队内沟通这条规则。 数据 / 运营

8. 方法论 / 局限

使用的工具与数据源

主要查询(可复用)

-- 漏斗按日
WITH d AS (...)
SELECT day, reg, ver, paid, ord,
       100.0 * ver / reg AS ver_rate,
       100.0 * paid / reg AS pay_rate,
       100.0 * ord / reg AS ord_rate
FROM d ORDER BY day;

-- Supplier 维度
SELECT day, supplier_slug, attempts, alloc_rate, sms_per_alloc, got_sms
FROM supplier_execution_attempts WHERE ...

-- Service × Supplier 服务质量矩阵
SELECT day, service_code, supplier_slug, orders, completed, success_rate
FROM orders WHERE ...

局限

本报告由 Claude Opus 4.7 (1M context) 自主调研生成 · 2026-05-16 · 数据快照时间:UTC 2026-05-16 02:43