轉(zhuǎn)轉(zhuǎn)C2B業(yè)務(wù)從零搭建精細(xì)化運(yùn)營(yíng)平臺(tái)
一、背景
1.1 什么是精細(xì)化運(yùn)營(yíng)?
- 用戶(hù)畫(huà)像:注重用戶(hù)細(xì)分,深入分析用戶(hù),從用戶(hù)行為、設(shè)備、渠道等維度分析用戶(hù),獲得盡可能完整的用戶(hù)圖像。
- 精準(zhǔn)投放:有效利用流量,不同于以往的粗放管理,更注重準(zhǔn)確性,更注重用戶(hù)保留和轉(zhuǎn)化,充分挖掘現(xiàn)有流量的價(jià)值。
- 數(shù)據(jù)價(jià)值最大化:從多元化的數(shù)據(jù)分析角度,注重?cái)?shù)據(jù)價(jià)值的最大化。
1.2 為什么要做?
在過(guò)去,為了提升用戶(hù)從估價(jià)到下單各個(gè)階段的轉(zhuǎn)化率,業(yè)務(wù)會(huì)經(jīng)常性地做一些活動(dòng)投放或者用戶(hù)召回等運(yùn)營(yíng)活動(dòng)。這些活動(dòng)往往都是粗投,沒(méi)有細(xì)分用戶(hù)群體。一是導(dǎo)致最終的轉(zhuǎn)化率并不理想,二是不便于對(duì)不同群體的用戶(hù)進(jìn)行差異化的運(yùn)營(yíng)。
因此,希望搭建一個(gè)平臺(tái),能夠根據(jù)各個(gè)階段數(shù)據(jù)的變化,不斷調(diào)整運(yùn)營(yíng)策略,使 ROI 最大化。
二、C2B視角下的精細(xì)化運(yùn)營(yíng)
C2B長(zhǎng)期運(yùn)營(yíng)以來(lái),已經(jīng)有較細(xì)致的數(shù)據(jù)支撐,但如何利用這部分?jǐn)?shù)據(jù),來(lái)幫助我們的業(yè)務(wù)更好地發(fā)展,是我們想要去實(shí)現(xiàn)精細(xì)化運(yùn)營(yíng)平臺(tái)的初衷。
不同的數(shù)據(jù)指標(biāo)如何聯(lián)動(dòng)?如何用這些數(shù)據(jù)幫助我們做出決策?通過(guò)分析細(xì)化數(shù)據(jù)后,如何能夠幫助我們召回更多的用戶(hù)?
以用戶(hù)下單后取消的數(shù)據(jù)舉例:
- 用戶(hù)表示價(jià)格太低:我們是否可以給這部分用戶(hù)主動(dòng)發(fā)放加價(jià)券,通過(guò)價(jià)格刺激再次下單?
- 用戶(hù)表示備份清除麻煩:我們主動(dòng)推送給用戶(hù)一些清除的教程或者視頻。
- 用戶(hù)表示不信任平臺(tái):我們可以1v1外呼,通過(guò)客服來(lái)向用戶(hù)介紹并引導(dǎo),贏得用戶(hù)信任。
C2B精細(xì)化運(yùn)營(yíng)體系
2.1 模塊劃分
- 用戶(hù)劃分: 通過(guò)不同的渠道/方式,盡可能的劃分用戶(hù)具體
標(biāo)簽畫(huà)像:依賴(lài)大數(shù)據(jù)配合來(lái)獲取用戶(hù)畫(huà)像,做到千人千面
- 估價(jià)未下單原因
- 下單后取消原因
- 質(zhì)檢后退回原因
- .....
收集反饋:通過(guò)一些渠道,收集用戶(hù)的反饋信息
顯性數(shù)據(jù):滿(mǎn)意度問(wèn)卷調(diào)查、訂單評(píng)價(jià)體系
隱性數(shù)據(jù):客服反饋用戶(hù)進(jìn)線問(wèn)題、IM咨詢(xún)、NPS貶低回訪
熱點(diǎn)事件:已知的一些熱點(diǎn)事件
新機(jī)發(fā)布
6.18&雙11
線索收集:其它業(yè)務(wù)渠道的用戶(hù)行為
B2C購(gòu)機(jī)、瀏覽等
- 轉(zhuǎn)化手段: 能夠刺激用戶(hù)轉(zhuǎn)化的,并能搭載在觸達(dá)方式里的手段
加價(jià)券、紅包
1v1客服
數(shù)據(jù)清除教程
……
觸達(dá)方式: 搭載著轉(zhuǎn)化手段,能夠精準(zhǔn)觸達(dá)至目標(biāo)用戶(hù)
push、短信
運(yùn)營(yíng)位
外呼、私域
……
三、系統(tǒng)設(shè)計(jì)
以任務(wù)為基礎(chǔ)元素,通過(guò)創(chuàng)建計(jì)劃驅(qū)動(dòng)任務(wù)的執(zhí)行。
3.1 任務(wù)
其實(shí)就是上文提到的觸達(dá)方式,目前支持的觸達(dá)方式有
- 運(yùn)營(yíng)類(lèi):彈窗、中通、掛件
- 推送類(lèi):push、短信
- 外呼類(lèi):私域外呼
運(yùn)營(yíng)通過(guò)后臺(tái)創(chuàng)建任務(wù),并配置任務(wù)所需的素材:如跳轉(zhuǎn)鏈接、圖片等。
任務(wù)
3.2 計(jì)劃
任務(wù)創(chuàng)建以后,并不能被真正的使用到,需要?jiǎng)?chuàng)建計(jì)劃來(lái)驅(qū)動(dòng)任務(wù)的執(zhí)行,計(jì)劃包含以下功能:
- 時(shí)間配置:計(jì)劃的開(kāi)始以及結(jié)束時(shí)間
- 受眾的用戶(hù):全量用戶(hù)或者定向的用戶(hù)群體
- 灰度:是否AB,AB實(shí)驗(yàn)id,AB實(shí)驗(yàn)組對(duì)應(yīng)的任務(wù)
- 任務(wù):具體通過(guò)哪種任務(wù)觸達(dá)
計(jì)劃
計(jì)劃和任務(wù)關(guān)系
創(chuàng)建計(jì)劃流程
對(duì)應(yīng)上文:
- 通過(guò)用戶(hù)畫(huà)像平臺(tái)、或者一些產(chǎn)品線索收集用戶(hù)(B2C購(gòu)機(jī)等),從而獲得特定用戶(hù)群體。
- 通過(guò)任務(wù)的方式來(lái)搭載我們的觸達(dá)方式。
- 不同的觸發(fā)方式里內(nèi)嵌我們的轉(zhuǎn)化手段。例如:運(yùn)營(yíng)位對(duì)特定群體用戶(hù)發(fā)放高額加價(jià)券。
我們最終打造了一套以阿拉丁(C2B營(yíng)銷(xiāo)系統(tǒng))為基礎(chǔ),精細(xì)化運(yùn)營(yíng)平臺(tái)為橋梁的精細(xì)化運(yùn)營(yíng)能力。
精細(xì)化運(yùn)營(yíng)系統(tǒng)
3.3 遇到的難點(diǎn)
設(shè)計(jì)時(shí),我們使用了Redis存儲(chǔ)運(yùn)營(yíng)上傳的用戶(hù)數(shù)據(jù),計(jì)劃開(kāi)始前完成對(duì)已上傳用戶(hù)文件解析儲(chǔ)存,在任務(wù)結(jié)束時(shí)刪除計(jì)劃對(duì)應(yīng)的用戶(hù)群體。
zset緩存下用戶(hù)數(shù)據(jù)后,當(dāng)數(shù)據(jù)量過(guò)多時(shí),會(huì)存在大key問(wèn)題,導(dǎo)致在一些push場(chǎng)景,遍歷用戶(hù)數(shù)據(jù)時(shí),會(huì)存在耗時(shí)較高的情況。
解決方案:通過(guò)用戶(hù)token/uid 對(duì)key進(jìn)行分片,將用戶(hù)數(shù)據(jù)分散在N個(gè)Redis key中,避免單個(gè)key過(guò)大。
分片方式
//獲取分片索引
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);
}
//遍歷分片進(jìn)行推送
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 當(dāng)前分片已無(wú)可執(zhí)行的數(shù)據(jù) planId={} index={}", planInfoDto.getPlanId(), i);
break;
}
if (apolloConfigService.getJobProcessSwitch()) {
log.info("開(kāi)關(guān)關(guān)閉,終止....... {}", 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 當(dāng)前頁(yè)結(jié)束 planId={} jobId={} num={}", planInfoDto.getPlanId(), jobInfoDto.getJobId(), pageNum);
pageNum++;
}
}
} catch (Exception e) {
log.info("runSingleJob error, e=", e);
}
}
四、總結(jié)
本文介紹了轉(zhuǎn)轉(zhuǎn)C2B業(yè)務(wù)下精細(xì)化運(yùn)營(yíng)平臺(tái)的搭建。在系統(tǒng)上線以來(lái),在用戶(hù)召回轉(zhuǎn)化上有了一定的成效。在未來(lái),會(huì)繼續(xù)豐富系統(tǒng)的功能:更多的觸達(dá)方式、更多的轉(zhuǎn)化手段。也會(huì)持續(xù)探索系統(tǒng)開(kāi)放性,讓更多的業(yè)務(wù)可以接入使用。
關(guān)于作者
多斯,轉(zhuǎn)轉(zhuǎn)C2B業(yè)務(wù)研發(fā)工程師