Verify

如何测量 OTP 的送达耗时?

比较 Verify 的 sent 和 delivered 时间戳获取报告送达时间,比较 created 和 verified 时间戳获取完整验证体验时间。

等待验证码的用户会将排队、送达、阅读和输入体验为一个整体延迟。在判断注册缓慢是消息送达问题还是更广泛的验证流程问题之前,先将这些区间分开。

应该收集哪些时间戳?

通过 webhook 订阅收集 Verify 生命周期事件,存储其载荷中的时间戳。

事件载荷 标识了以下阶段:

事件时间戳记录内容
verify.verification.createdcreated_at验证已创建
verify.attempt.sentsent_atBird 将验证码交给了一个渠道
verify.attempt.delivereddelivered_at渠道报告已送达
verify.attempt.undeliveredfailed_at该验证码尝试失败
verify.verification.verifiedverified_at接收方提交了正确的验证码
verify.verification.failedfailed_at投递计划未能送达验证码

将事件类型与每个时间戳一起保存。两个 failed_at 字段描述不同的范围:一个是单次尝试,另一个是验证的投递计划。

使用 webhook-id 对送达事件去重,它标识一个事件并在重试中保持不变。排序事件时使用载荷的 timestamp,因为送达顺序可能变化。

哪个时间区间能回答我的问题?

使用 sent 到 delivered 获取报告送达时间。使用 created 到 verified 获取完成验证时间。

区间包含内容
created_atsent_at渠道接受验证码之前的时间,可能包含更早的渠道失败
sent_atdelivered_at渠道接受后的处理时间以及报告的送达区间
created_atverified_at完整的等待时间,包括阅读和输入验证码

sent 时间戳并不总是表示运营商提交。对于 SMS,Bird 的渠道在下游 SMS 管道将其提交给运营商之前就已接受该尝试。

送达报告是参考性的。运营商和邮箱服务商在确认内容和报告速度上各有不同。

在相同渠道和市场上做纵向比较。国家之间的差异可能反映的是报告惯例,而非送达速度。

verified 事件确认验证码已被接收和使用。其时间区间衡量的是完成过程,而非仅消息送达。

验证码重发时如何配对事件?

verification_id、渠道和接收方地址对事件分组。排除仍然不明确的配对。

Verify 的公共事件不包含尝试标识符。重新发送或渠道切换会在同一验证标识符下创建另一次尝试。

sent 事件和对应的 delivered 事件具有不同的 webhook-id 值。该请求头用于事件去重,不能将一次尝试的各阶段关联起来。

时间戳顺序可以区分简单序列。向同一地址同一渠道的重复发送可能重叠。仅凭排序无法证明哪个送达对应哪次发送。

将这些样本标记为不明确,而非为其指定精确的尝试延迟。验证的 created 到 verified 区间仍是一个独立的度量。

不可用或受限的渠道可能在没有 sent 事件的情况下失败。计算 sent 到 delivered 区间前,要求存在 sent_at

为什么我的数据与仪表盘不同?

仪表盘可能衡量的是不同的时间区间,也可能包含与你的事件报告不同的尝试。

仪表盘衡量的是符合条件的已计费、已送达尝试从创建到完结的时间。它将修正后的送达超时排除在延迟样本之外,因为这些完结时间不属于实测送达。

其报告窗口使用计费时间。基于发送时间的事件报告因此可能包含不同的尝试集合。

存储的延迟反映的是读取计费时的送达状态。后续的送达更新可能不会改变该样本。

当没有符合条件的样本时,百分位数为 null。保留这一区分,不要显示零,因为零意味着即时送达。

在调查差异之前,先比较相同的报告窗口。当你的应用需要自定义时间区间和分组时,使用 webhook 事件。

如何报告缓慢和丢失的验证码?

将时间报告与未送达的尝试和未完成的验证一起呈现。

仅包含已送达尝试的延迟报告会遗漏验证码从未到达的用户。在时间摘要旁保留这些失败记录。

verify.verification.failed 事件涵盖已耗尽的投递计划。验证码过期和错误码尝试次数耗尽不会触发该事件,因此它不是完整的未转化计数。

在你的应用中跟踪验证创建和成功完成。将未完结的会话单独保留,而非为其分配一个虚构的送达时长。

按渠道和接收方市场拆分尝试。当有报告时,carriermcc_mnc 标识处理网络。对于 email、WhatsApp 和 Telegram,两者均为 null。

渠道故障转移可以解释用户收到验证码较晚的原因。在将整个延迟视为单个渠道的送达时间之前,先检查尝试序列。

简而言之

  1. 选择你需要的时间区间。

    报告送达时间和完成验证时间回答的是不同问题。完成时间包含阅读和输入验证码的过程。

  2. 谨慎配对尝试。

    事件标识的是验证而非每次尝试。在同一渠道上重复发送可能导致配对不明确。

  3. 在延迟报告旁保留失败记录。

    仅统计成功送达会忽略从未收到的验证码。将未送达和未完成的验证单独报告。

  4. 比较同类流量。

    送达报告因渠道和市场而异。在比较百分位数之前,先记录你的时间区间和采样规则。

基于同一网络构建。

测试 API 密钥即刻获取。添加付款方式并验证发送者身份后,即可解锁生产环境。

你的下一个创意。
随时连接。