一、背景
1.1 什么是精细化运营?
- 用户画像:注重用户细分,深入分析用户,从用户行为、设备、渠道等维度分析用户,获得尽可能完整的用户图像。
- 精准投放:有效利用流量,不同于以往的粗放管理,更注重准确性,更注重用户保留和转化,充分挖掘现有流量的价值。
- 数据价值最大化:从多元化的数据分析角度,注重数据价值的最大化。
1.2 为什么要做?
过去,为了增加用户从浏览商品到购买的转化率,公司经常会进行各种活动投放和用户召回的运营活动。然而,这些活动通常缺乏对用户群体的细分,导致最终转化率不尽如人意,并且难以对不同群体的用户进行个性化的运营。
因此,我们希望建立一个平台,能够根据不同阶段数据的变化,灵活调整运营策略,以实现最大化的投资回报率(ROI)。
二、C2B视角下的精细化运营
C2B长期运营以来,已积累了丰富的数据支撑。我们希望通过充分利用这些数据,为业务发展提供更多精细化运营平台支持,这是我们的初衷。
数据指标之间的联动可以通过建立数据模型和统计分析来实现。首先,我们可以通过数据挖掘和分析找出不同数据指标之间的相关性和影响因素。例如,我们可以通过相关性分析找出不同指标之间的线性或非线性关系,或者通过回归分析确定指标对于特定结果的影响程度。这些数据分析可以帮助我们更好地理解不同指标之间的关联性。
利用这些数据帮助我们做出决策需要根据具体情况选择合适的指标进行分析。比如,如果我们想要提高用户留存率,可以分析用户行为数据,如活跃度、使用时长等指标,来找到影响留存率的关键因素,从而制定相应的改进措施。
在分析细化数据后,我们能够通过个性化推荐、定向广告等方式帮助我们召回更多的用户。通过对用户行为数据的精细分析,我们可以挖掘用户的偏好和兴趣,从而为他们提供个性化的推荐内容和服务,增强用户粘性和留存率。同时,还可以根据用户的特征和行为进行精准的定向广告投放,提高广告的转化率和效果。
例如,一个用户在网上商店下单购买了一件商品,但在付款之前改变了主意并取消了订单。
- 用户表示价格太低:我们是否可以给这部分用户主动发放加价券,通过价格刺激再次下单?
- 用户表示备份清除麻烦:我们主动推送给用户一些清除的教程或者视频。
- 用户表示不信任平台:我们可以1v1外呼,通过客服来向用户介绍并引导,赢得用户信任。
C2B精细化运营体系
2.1 模块划分
- 用户划分: 通过不同的渠道/方式,尽可能的划分用户具体
- 标签画像:依赖大数据配合来获取用户画像,做到千人千面
- 估价未下单原因
- 下单后取消原因
- 质检后退回原因
- …..
- 收集反馈:通过一些渠道,收集用户的反馈信息
- 显性数据:满意度问卷调查、订单评价体系
- 隐性数据:客服反馈用户进线问题、IM咨询、NPS贬低回访
- 热点事件:已知的一些热点事件
- 新机发布
- 6.18&双11
- 线索收集:其它业务渠道的用户行为
- B2C购机、浏览等
- 转化手段: 能够刺激用户转化的,并能搭载在触达方式里的手段
- 加价券、红包
- 1v1客服
- 数据清除教程
- ……
- 触达方式: 搭载着转化手段,能够精准触达至目标用户
- push、短信
- 运营位
- 外呼、私域
- ……
三、系统设计
通过制定计划来推动任务执行,任务是计划的基本组成部分。
3.1 任务
如上文所述,触达方式是指联系或沟通的方式。目前支持的触达方式有…
- 运营类:弹窗、中通、挂件
- 推送类:push、短信
- 外呼类:私域外呼
运营人员可以在系统后台创建任务,并配置任务所需的素材,比如跳转链接和图片等。
任务
3.2 计划
任务创建后需要制定详细的计划,以确保任务能够成功执行。这个计划包括确定任务的具体步骤、制定时间表、分配资源、设定目标和里程碑等功能。
- 时间配置:计划的开始以及结束时间
- 受众的用户:全量用户或者定向的用户群体
- 灰度:是否AB,AB实验id,AB实验组对应的任务
- 任务:具体通过哪种任务触达
计划
计划和任务关系
创建计划流程
对应上文:
- 通过用户画像平台、或者一些产品线索收集用户(B2C购机等),从而获得特定用户群体。
- 通过任务的方式来搭载我们的触达方式。
- 不同的触发方式里内嵌我们的转化手段。例如:运营位对特定群体用户发放高额加价券。
我们成功打造了一套以阿拉丁(C2B营销系统)为基础,精细化运营平台为桥梁的精细化运营能力。
精细化运营系统
3.3 遇到的难点
在设计阶段,我们选择了使用Redis来存储运营上传的用户数据。我们计划在任务开始前对已上传的用户文件进行解析并存储数据,在任务结束时删除与该计划相关的用户群体。
在zset缓存中存储大量用户数据时,可能会出现大key问题,尤其是在一些需要遍历用户数据的场景下,可能会导致耗时较高的情况。
解决方案:根据用户token/uid对key进行分片,将用户数据分散存储在多个Redis key中,从而避免单个key过大。
分片方式
//获取分片索引
Private String getClusterKey(String key, String member) {
int hash=Hashing.murmur3_32().hashString(member, Charsets.UTF_8).asInt();
hash=Math.abs(hash);
final int clusterIndex=(hash & (CommonConstant.CLUSTER_COUNT - 1)) + 1;
return getClusterKey(key, clusterIndex);
}
//遍历分片进行推送
private void runSingleJob(JobInfoDto jobInfoDto, PlanInfoDto planInfoDto) {
try {
PlanUserDataCondition condition=new PlanUserDataCondition();
condition.setPageCount(100);
condition.setPlanId(planInfoDto.getPlanId());
for (int i=IntelligentOperateDataCacheService.MIN_CLUSTER_INDEX; i <=IntelligentOperateDataCacheService.MAX_CLUSTER_INDEX; i++) {
condition.setClusterIndex(i);
int pageNum=1;
while (true) {
condition.setPageNum(pageNum);
List<Long> uidList=intelligentOperateDataCacheService.listPlanUidByCondition(condition, "IntelligentOperatePushTask");
if (CollectionUtils.isEmpty(uidList)) {
log.info("BeginSendMessageUserProfilePrivateHandler 当前分片已无可执行的数据 planId={} index={}", planInfoDto.getPlanId(), i);
break;
}
if (apolloConfigService.getJobProcessSwitch()) {
log.info("开关关闭,终止....... {}", planInfoDto.getPlanId());
break;
}
CountDownLatch countDownLatch=new CountDownLatch(uidList.size());
for (Long uid : uidList) {
ThreadUtil.execute(() -> send(uid, planInfoDto, jobInfoDto, countDownLatch));
}
countDownLatch.await();
log.info("BeginSendMessageUserProfilePrivateHandler 当前页结束 planId={} jobId={} num={}", planInfoDto.getPlanId(), jobInfoDto.getJobId(), pageNum);
pageNum++;
}
}
} catch (Exception e) {
log.info("runSingleJob error, e=", e);
}
}
四、总结
本文讨论了关于建立转转C2B业务下精细化运营平台的进展。该平台自上线以来,在用户召回转化方面取得了一定成效。未来的发展目标是丰富系统功能,提供更多的触达方式和转化手段。同时,还将不断探索系统的开放性,以便让更多业务可以接入并使用。
关于作者
嗨,我是多斯,我是一名C2B业务研发工程师。
抱歉,我无法满足你的要求。
抱歉,我无法使用现有内容进行改写。
如若转载,请注明出处:https://www.yiheng8.com/236794.html