抖音上投广告,用户点了广告,跳进你的微信小程序,逛了一圈,下单买了东西。问题来了:这笔订单,平台(巨量引擎)不知道。
平台不知道用户买了,它就没法判断广告到底有没有用,也就没法帮你优化投放。投出去的钱,等于打了水漂还不知道响。
所以你需要做的事,叫"转化回传"——简单说,就是把用户在你小程序里干了什么,告诉平台。
这事本身不难,但里面有几个弯弯绕绕,新手容易绕晕。我尽量用大白话讲清楚,代码就用官方文档里的例子。
归因这个词听起来高级,其实就是"认账"。
用户点广告进来时,平台会悄悄在他身上贴一个"小票号"(官方叫 clickid)。用户之后在你小程序里注册、付费,你把这个小票号连同行为一起报给平台,平台一查:哦,这单是从我的广告来的——这就叫归因。
小票号从哪拿? 用户点广告跳进小程序时,平台会把参数直接拼在小程序打开的地址上,长这样:
/pages/index.html?project_id=xxx&promotion_id=xxx&mid1=xxx&clickid=EPHk9cX3pv4CGJax4ZENKI7w4MDev_4C&req_id=xxx&advertiser_id=xxx中间那一长串 EPHk9cX3pv4CGJax4ZENKI7w4MDev_4C 就是小票号(clickid)。你的小程序启动时,用微信自带的 wx.getLaunchOptionsSync() 就能把它取出来,不用自己造。
有两点要记住:
用户在你小程序里完成了某件事(比如注册、付钱),你就把它报给平台的固定接口,方式是 POST 请求,内容大概长这样(官方文档原例):
{
"event_type": "active",
"event_weight": 0.21312,
"context": {
"ad": {
"callback": "EPHk9cX3pv4CGJax4ZENKI7w4MDev_4C",
"match_type": 3
},
"device": {
"platform": "ios",
"idfa": "FCD369C3-F622-44B8-AFDE-12065659F34B"
}
},
"properties": {
"pay_amount": 1231.211
},
"timestamp": 1604888786102
}别被这堆字母吓到,真正必须理解的只有四行:
event_type:这次发生的事是什么。激活就写 active,付费就写 active_pay,注册写 active_register——平台有固定的说法,照着它的词表写就行;context.ad.callback:小票号,必须带上。这是平台认账的关键,忘了它,等于白报;properties.pay_amount:附加信息,比如付了多少钱。注意,平台对金额有自己的单位要求(文档里写的是"分"),别自己想当然;timestamp:这事发生的时间。注意单位,平台要的是毫秒,你传成秒就白报了。这是我特别想提醒新手的一点。
你把数据报上去,平台返回"成功",你是不是就觉得完事了?不一定。
平台收你的数据是有"规矩"的,比如:
最坑的是,它扔掉的时候不吭声,照样给你回个"成功"。你看着是绿的,实际数据已经没了。
文档里给了个很直观的例子,同样一个金额字段,这样传合法、那样传就被丢:
"properties": {
"pay_amount": 1.234, // 合法,采纳
"pay_amount": "1.234", // 能被转成数字,也采纳
"pay_amount": true, // 非法,悄悄丢掉
"pay_amount": "some string" // 非法,悄悄丢掉
}所以新手最容易犯的错就是:自己加一堆自认为有用的字段传上去,以为对投放有帮助,结果人家全给你扔了,你还美滋滋。
结论:想加自定义字段,先找平台的人确认;报数据之前,对着官方文档把格式核对一遍。
这几个事单独看都不大,但新手基本都会栽:
另外,如果你的场景需要用到老的那套(clue_token 链路),它有个签名校验,要把密钥、时间、随机数三个字符串先按字典序排好、拼起来、再做一次 sha1 加密,文档里给了好几种语言的现成代码。这属于进阶玩法,小白阶段知道有这回事就行,真用到的时候直接抄官方示例,别自己发明排序方式。
说实话,这个对接技术门槛不高,会点基础的人都能做。真正耗时间的,不是写代码,而是把文档里那些"写了但没划重点"的地方想明白。
我的建议是:把官方文档当清单用,别当小说翻。 接之前,把"接口对不对、格式对不对、单位对不对、有没有要登记的字段"过一遍,能省下后面一大半折腾的时间。
还有一句话想送给你:接口返回"成功",不代表数据真的被收下了。做数据对接,永远要有一根弦——结果要对得上,才算数。
第一次做这个,别慌,一步一步来。坑就那么几个,提前知道了,就都不是坑了。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。