新增用户与渠道追踪

最后更新于:2018-08-27 17:04:51

1. 问题背景

对于互联网产品,每天的新增用户的数量是个非常受关注的指标。同时,围绕着新增用户这个指标,还可以有很多更加深入的分析,例如:

  • 分析不同渠道带来的新增用户的数量,从而优化后续的投放策略;
  • 分析不同渠道带来的新增用户的留存以及转化,从而考察不同渠道带来的用户的质量;
  • 分析每天的销量或者收入,由不同渠道带来的贡献的比例。

接下来,我们详细地介绍如何在 iOS 和 Android 中使用神策分析进行新增用户渠道追踪。

2. 新增用户统计

2.1 新增用户的标记

一般来说,互联网产品主要有两种统计新增用户的方法:

  • 以用户的注册作为新增用户的统计口径
  • 以用户打开或者使用 App 作为新增用户的统计口径

第一种情况较为简单,开发者可以追踪用户注册事件,并在用户注册时设置相关的 Profile 信息,开发者可以直接跳到第三节阅读渠道追踪相关内容;第二种情况,则可以参考本文档的方案。

2.2 新增用户标记方案

新用户的标记主要是在客户端完成。对于 iOS 和 Android,基本的原理和步骤如下:

  1. 在 App 每次启动时,判断是否有 启动过 的标记,这个标记可以记录在客户端的本地存储中;
  2. 如果发现已经有 启动过 的标记,则不做任何处理;
  3. 如果发现没有 启动过 的标记,则做如下处理:
    1. 调用 trackInstallation 接口,记录一个用户首次访问事件,在后文中,我们会详细介绍这个接口的行为,以及如何使用它获取渠道信息
    2. 在客户端的存储中,加上启动过的标记,例如,可以在 Android 的 SharedPreferences 中或 iOS 的 NSKeyedArchiver 中存储该标记

注: 如果 Android 和 iOS SDK 使用的是比较新的版本 ( Android SDK 1.6.23及以后的版本、iOS SDK 1.6.24 及以后的版本) ,客户端可以在每次启动 App 时直接调用 trackInstallation 接口,SDK 内部会处理是否有 启动过 的标记。

对于 Web 端,在使用我们的 JS SDK 时,如果打开了默认收集 $pageview 事件的选项,JS SDK 会根据在 Cookie 中的记录,来在事件中增加首日访问这个属性,同时,Profile 中也会有对应的记录。如果想自己进行记录,则可以参考 iOS 和 Android 的做法,只不过启动过这个标记改为记录在 Cookie 中。

上述方案是有一定的局限性的,如果用户清理了 App 的本地存储或者清除了 Cookie,则判断会失效,即会造成重复发送首次启动事件。但是,如果记录的 Distinct Id 在清理本地存储或者清除 Cookie 时不会发生改变,则可通过下面 2.3 节介绍的新增用户标记在服务端的修正解决,此外用户的 Profile 中记录的激活相关信息依然是可信的,具体可以参考 4.1 中的统计方法。

2.3 “是否首日访问”在服务端的修正

从神策分析 1.8 版开始,所有的单机版用户和部分集群版用户已经默认开启了“是否首日访问”标记在服务端的修正,即以一个专用的数据库记录用户首日访问的时间。当上报的事件包含 $is_first_day(是否首日访问)属性并且取值为 true 时,服务端导入这条事件时会先在数据库中以触发的 Distinct Id 进行查询,若没有查到,那么在数据库中记录该 Distinct Id 首日访问的时间;如果可以查到那么判断本次事件触发时间与之前记录的是否是同一天,若不是同一天那么修改 $is_first_dayfalse

这在一定程度上解决了 App 卸载重装被算作新用户的问题(2.2 节),例如一个使用 IDFA (卸载 App 重装,取到的值不变)作为 Distinct Id 的 App 重装后客户端向服务端上报时 $is_first_day 的值为 true(2.2 节客户端记录的标记卸载时删除),服务端可以根据数据库中的记录判断该值是否应该被修正为 false

这里需要额外注意的是,如果要对开启该功能之前的用户进行服务端修正(例如刚开始使用神策分析,但 App 已有一些用户),需要在他们的数据上报之前就将他们的首日访问时间导入到该数据库:

  1. 生成一个文件,每行为一个用户的 Distinct Id 和首日访问时间(以 unix 时间戳表示):

    6D92078A-8246-4BA4-AE5B-76104861E7DC 1513577063
    5D3169E2-16BC-316C-12AB-1E2EC1A79E2B 1512057600
    
  2. 登录神策服务器,使用 sa_cluster 用户执行:

    java -cp '/home/sa_cluster/sa/extractor/lib/extractor-1.0-SNAPSHOT.jar:/home/sa_cluster/sa/commonjars/*' com.sensorsdata.analytics.extractor.utils.ImportFirstTimeUtils --project 导入的项目名 --file 数据文件路径
    

3. 渠道追踪

3.1 App 渠道追踪

从 Sensors Analytics 1.5 版本开始,我们正式发布了 App 渠道效果追踪功能,帮助客户了解渠道质量和 App 的实际推广情况。对于 Android 和 iOS 版本,支持基于 IP、Date、User Agent 构建的模糊匹配;对于 Android,我们也提供 API 允许开发者在 App 中设置渠道信息,同时我们也建议 Android 使用这种方式(渠道包)。

更详细的文档请参考 App 渠道追踪

3.2 Web 渠道追踪

详细文档请参考 Web 渠道追踪

4. 新增用户与渠道效果分析

在这里,我们对一些常见的新增用户与渠道效果分析,做一些简单的介绍。

4.1 统计每天的新增用户数

统计每天的新增用户数,有如下方案:

  1. 可以直接在事件分析中,统计首次访问的触发用户数,如果需要按照渠道进行统计,则可以按照渠道进行分组。需要注意,如果同一个设备卸载后再安装,有可能会重复计算首次访问。
  2. 可以在 1.6 版本后的用户分析功能中,按照首次激活时间分组,来统计相关用户数。这种方式只要用户标识不变,是不会重复统计的,因此相当于方式 1 会更准确。

4.2 察看新增用户的转化

想察看某一段时间内的新增用户的转化,可以在核心转化漏斗中,在最开始,增加第一个步骤为首次访问行为,则可以察看新增用户的后续转化了。

4.3 察看新增用户的留存

想察看某一段时间内的新增用户的留存,可以在留存分析中,把初始行为设置为首次访问,后续行为设置成“任意事件”,或者某个关心的核心行为,则可以分析新增用户的留存。

4.4 统计不同渠道带来的用户的销量

想察看不同渠道带来的用户,在一段时间内的销量,可以在事件分析中,统计“支付订单”事件中金额的总数,然后按照用户 Profile 中的首次访问渠道进行分组即可。