1、留存的含义:
留存:在互联网行业里,通常我们会通过拉新把客户引过来,但是经过一段时间可能会有一部分客户逐渐流失了。那些留下来的人或者是经常回访我们公司网站/APP的人就称为留存;
留存率 = 基准日之后的n天当日返回的用户数 / 基准日的用户数 * 100%
或者指基准日产生某个行为的用户在之后的第一天,第二天,第三天……第n天的当天再次产生该行为的人数。
我们在做使用者增长往往重视了获客,而容易忽略留存。就算我们获取的使用者很多,如果留存差,当流失的使用者大于获取使用者数,我们的使用者就会越来越少,使用者增长就无法持续。就像一个池子,只有当进水口的水大,而出水口小,水才会在池子里越来越多。使用者留存要做的就是想办法堵住池子里的流水口。
2、留存的意义
留存代表一个用户愿意再次使用你的产品;而一个产品能够被用户再次使用,意味着这个产品是能够满足用户长期需求的,能够让用户产生一定粘性的产品。
如今互联网产品大多为免费产品,依靠持续的广告转化、用户持续的购买转化、用户持续的会员付费来维持收益。
那么,怎样才能达到持续的广告转化?持续的购买转化?持续的会员付费?
广告转化、购买、会员付费,我们都需要用户来完成。那么持续的广告转化、购买、会员付费,我们就需要每天都有一定量的用户来完成以上过程,也就是说我们需要我们的产品每天都是有活跃用户的。
那么从活跃用户的构成,我们就知道怎么维持我们的活跃用户规模:一方面持续有新用户流入,另一方面持续有留存用户留存;
那么为什么留存用户重要?部分有过从业经验的朋友应该知道,产品的自然新增用户是比较少的,如果我们仅靠产品自然用户增长,那么必然我们的活跃用户量级会非常小,虽然能够获得收益,但是这部分收益很可能养不起我们的公司;但是如果我们想要用购买新用户的方式获得持续的较大规模的用户池,又会产生比较大的成本,这样做容易亏本。所以我们需要新增留存两手抓;想方设法留住我们新增的用户,让其长期地在我们的产品内产生价值,这样做,比起单做新增,在成本和效果上都是要好的。
3、留存的实际应用
留存的主要应用场景有两个:
一个是产品整体视角的持续留存情况;也就是我们需要定期分析用户在产品的留存是否维持在一个正常的范围,有没有突然地涨跌情况,如果有的话问题出在哪里,为什么会出现这样的问题,如何解决留存异常的问题。遇到这类问题首先需要确定的是整体用户的留存异常还是个别群体用户的留存异常,如果是整体用户的留存异常,我们需要分析我们的产品是否发生异常,可以通过用户的行为路径确定异常产品位置;如果是个别用户的留存异常,需要通过用户拆解的方法来定位有异常的用户群体,然后通过这类用户的特征来分析问题原因;
另一个是新增用户视角的每批新增用户留存情况。一般出现在计算投放ROI的场景,也就是我们投放一批用户,能够给我们带来多少收益。我们会用这些用户的“整个生命周期能够带来的收入”(LTV)去除以“投放时的支出”来计算我们的ROI。“整个生命周期能够带来的收入”计算的是引入一批新用户,当用户完全流失时,这部分用户所带来的所有收入。但是有时我们需要提前预估新用户在整个生命周期能够带来的收入,我们就需要首先用留存来估计用户的生命周期,然后用估计出的生命周期再去计算用户的整个生命周期能够带来的收入。
4、什么企业不关心留存
需要用户产生持续活跃,持续转化,持续消费的企业都关心用户的留存。那么,什么样的企业不关心用户留存?
部分线下企业存在数据难以获取的问题,所以对留存关注比较少,比如线下的商场,除非用户产生购买行为,否则很难探知用户在什么情况下有回流;
部分存在一锤子买卖的企业也不太关心留存,比如说用户在一次买断商品后再也不会产生后续购买或价值转化行为,这类企业也不怎么关注留存。比如PC单机游戏;比如一次付费的工具类产品(线上线下类工具都存在这个情况);
5、案例
如何计算留存:
首先我们的目的是建立如下的留存表:“用户每日留存率统计表”
留存表有以下几个字段组成:
dates_a 计算留存的基准日日期。这个基准日可以为任意一天,如果基准日就是今天,也就是没有“之后的第一天”、“之后的第二天”……等等天的数据,那后几天的留存可以以0、或者空值代替;
device_v 基准日当日的活跃用户数。不同产品的活跃用户定义不同,在这里,我们将活跃用户定义为在当天有过打开APP的用户;
day_1 次日留存率,也就是“基准日之后的第一天”的用户的回访比例。
day_2 2日留存率,也就是“基准日之后的第二天”的用户的回访比例。
day_3 3日留存率,也就是“基准日之后的第三天”的用户的回访比例。
day_7 7日留存率,也就是“基准日之后的第七天”的用户的回访比例。
也就是说:这个表格,表达的是:每天对应多少活跃用户,每天的活跃用户对应的次留率、2日留率、3日留率、7日留率是多少。我们能从这个表格中可以看出我们产品的用户活跃程度,以及产品对当日活跃用户的短期、长期粘性情况。
原数据是这样的数据:
是一个每日app活跃用户表。其字段分为两列:
user_id 即当日活跃的用户的id
dates 即用户活跃的日期
那我们如何能够根据这个“每日活跃表”,做出上面那个“用户每日留存率统计表”呢?
关键的两个步骤:
\1. 我们需要将每日活跃的用户数据与之后几日该用户的活跃数据连接起来;这样,我们就能知道这个用户在之后的哪一天有回访行为;
\2. 通过SQL的数据列联功能,也就是“聚合函数(case when 条件)"的方式,将满足“基准日之后的第一天”、“基准日之后的第二天”……的用户数据统计出来,最后再通过基准日的用户数,计算用户留存率;
接下来一步一步实现:
(1)、用用户活跃日期表做自连接,连接方式使用左连接,连接字段使用“用户id”字段,保留两表的用户id与两表的日期
SELECT a.user_id AS user_id_a, b.user_id AS user_id_b, a.dates AS dates_a, b.dates AS dates_b FROM ( SELECT user_id, dates FROM temp_user_act GROUP BY user_id, dates ) a LEFT JOIN ( SELECT dates, user_id FROM temp_user_act GROUP BY dates, user_id ) b ON a.user_id = b.user_id;
(2)、筛选出右表日期大于或等于左表日期的内容
SELECT user_id_a, user_id_b, dates_a, dates_b FROM temp_user_act_beh1 WHERE dates_b > dates_a;
(3)、计算以左表日期为基准日的当日用户数,第二日回访用户数,第三日回访用户数,第四日回访用户数,第八日回访用户数
提示:
datediff(B,A)=1 表示日期B为日期A之后的一天。
count(distinct case when datediff(B,A)=1 then uid else null end) 或者 count(distinct if(datediff(B,A)=1,uid,null)) 就是求出“日期B为基准日A之后的第一天”的用户数计数
SELECT dates_a, count( DISTINCT user_id_b ) AS device_v, count( DISTINCT IF ( datediff( dates_b, dates_a ) = 1, user_id_b, NULL ) ) AS device_v_remain1, count( DISTINCT IF ( datediff( dates_b, dates_a ) = 2, user_id_b, NULL ) ) AS device_v_remain2, count( DISTINCT IF ( datediff( dates_b, dates_a ) = 3, user_id_b, NULL ) ) AS device_v_remain3, count( DISTINCT IF ( datediff( dates_b, dates_a ) = 7, user_id_b, NULL ) ) AS device_v_remain7 FROM temp_user_act_beh2 GROUP BY dates_a;
(4)、计算出每日的当日用户数以及次日留存率,二日留存率,三日留存率,7日留存率
SELECT dates_a, device_v, concat( cast(( device_v_remain1 / device_v )* 100 AS DECIMAL ( 18, 2 )), '%' ) AS 'day_1', concat( cast(( device_v_remain3 / device_v )* 100 AS DECIMAL ( 18, 2 )), '%' ) AS 'day_3', concat( cast(( device_v_remain7 / device_v )* 100 AS DECIMAL ( 18, 2 )), '%' ) AS 'day_7' FROM temp_user_act_beh3;
(5)、每日的次留与次留的周环比
周环比:周环比适用于以周为周期变动的数据,用于观察每天的数据较上周同一天的数据变化。
现有互联网数据多以周为周期变动,一周内每一天的数据都有其特点:
-
如工作类APP,周一会是每一周的高峰,然后向周五逐渐递减,周五到周六又会有一个锐减的过程,周日与周六趋于平缓;
-
如娱乐类APP,周一会较周末锐减,然后向周四逐渐递减,周五会有一个跃升的过程,周六会再次跃升,周日会较周六下降;
一般遇到这样的变动趋势,如果单纯的分析每一天较上一天的变动情况,就容易分析出错误结论。所以,在我们分析带有周期类数据时,一定要先将周期提炼出来,使用周期的环比数据做分析,会得出更有价值,更加准确的结论。
-
计算方式:假如今日为周一,那么周环比=(本周一数据 - 上周一数据) / 上周一数据 * 100%
-
没有上周对应日期的数据的部分可以为空;
SELECT dates_a, day_1, concat(cast((( day_1 - lag( day_1, 7 ) over ( ORDER BY dates_a ) )/(lag( day_1, 7 ) over ( ORDER BY dates_a ) ))* 100 AS DECIMAL ( 18, 2 )),'%' ) AS lag_7days FROM temp_user_act_beh4;
通过趋势线看出周环比处于增长趋势。
6、如何才能提升留存?
明确留存标准
留存曲线
通过上面三条曲线,第一条第二条留存曲线,用户在慢慢流失之后趋于平缓,第一条曲线大概在60%左右时候变得平缓,第二条大概在40%时候才变得平缓,我们在做使用者留存的时候就是要想办法将变平缓的曲线位置提高。好的留存应该是用户在经过一段时间的下滑后,慢慢变得平缓,而且曲线变平的位置越高,说明我们的留存越好。而最下面那条曲线一直处于下滑状态,直到用户流失殆尽为止,这样的留存是非常差的。
关注留存率
衡量留存好坏的时候,不应该仅仅看留存用户数,留存率更有价值。比如活动一带来了2000万用户,最终只有200万留存,留存率仅仅10%。活动二带来了200万用户,最终留存有100万,留存率高达50%,所以衡量活动带来的效果要从多个方面考虑。
关注留存成本
其实除了留存率外,应该还要考虑单个用户的留存成本。假如渠道A花了2000块钱获得了100个使用者,一天后,只留下了10个使用者,而渠道B同样花了2000块钱带来了100个启用使用者,一天后,留下了20个。渠道A的次日留存成本为200块钱,而渠道B只有100块钱。说明渠道B的使用者质量更好
留存的三个阶段及提升留存的方法
留存的三个阶段:高速流失期、缓慢流失期、平缓稳定期
用户流失阶段分级
-
高速流失期
这个阶段使用户刚接触产品,是最重要的阶段,如果做的不好,会有大量的用户流失,后面在获取用户信任、召回用户就很难了。
最主要的留存方法就是要引导用户,让用户感受到产品给他带来价值并且能解决问题的能力。
-
缓慢流失期
这个阶段用户已经渐渐熟悉产品,如果市场上有其它竞品,仅仅靠我们产品给用户解决痛点问题还不以吸引留住他们。
留存方法:
构建用户激励机制。比如签到,等级,积分兑换等等。
增加用户沉没成本。所谓沉没成本就是已经发生的不可回收的成本,比如金钱、时间、精力等,他会影响人们的当前决策,人做决策时候不仅仅看当前的利益,也关注以前的付出成本。增加使用者沉没成本的目的就是通过提前的成本支出,让使用者持续地使用我们的产品,提升使用者留存。
个性化推荐:精准的个性化推荐能给用户带来很好的体验。用着越来越舒服,来增加留存
-
平缓稳定期
这个阶段要防止使用者流失,提高留存最重要的方法就是进行产品的更新迭代,开发创新的功能和玩法。