本文记录自己对广告归因的浅显理解,如有错误,欢迎斧正交流
某公司开发了一款游戏 APP,为了获得玩家用户,公司进行了广告投放,通过广告获得流量,最终获得付费用户,产生流水。
进一步看公司投放广告时的动作,该公司通常会在不同的广告平台进行广告投放,此时会出现一个典型的问题,同一个用户分别在多个平台(如字节、腾讯、快手等)上看见了公司的广告,如果这个用户最终被转化了,那么转化效果要归到哪个广告平台上?这便是广告归因要解决的问题。
所谓广告归因,其实就是一套用于确定一个广告在多个媒体曝光后转化效果归属的规则,行业内有非常多的归因模型,目前国内最常用的是最后触达归因模型。
在讨论归因流程前,思考一个问题,为何不使用一个唯一的 tracking id 将广告的整体链路串联起来呢?
类似于技术上常说的染色日志,某个操作在内部不同微服务中执行时,会有唯一的 tracking id,如果代码出现 bug,通过 tracking id 就可以判断出,当前操作经过了哪些服务,从而快速定位问题。
广告这边之所以无法使用 tracking id 是因为用户在系统层做的操作脱离了媒体范围,无法监控,一个具体的例子:用户 A 在腾讯看见了某广告,点击了广告并从广告落地页上下载了游戏 APP,然后在自己的手机系统上安装好游戏 APP 并开始玩游戏,在这个过程中,腾讯的 tracking id 无法穿透到用户手机系统上记录用户安装的过程,此时就出现了断层,需要通过广告归因来关联。
接着聊一下广告归因流程,还是以腾讯广告为例,完整的广告归因流程为:
1. 用户在微信上看见了广告并点击了广告
2. 微信获取点击该广告的用户信息,包括设备的唯一 id(IMEI 或 IDFA)、广告的 tracking id、推广应用包的 App id 等
3. 用户下载应用包后,安装应用,应用在启动时,会将用户的信息(设备唯一 id、App id 等)回传到应用开发者的服务器(通常是广告主的服务器)
4. 广告主服务器通过 S2S(Serve 2 Serve)的方式将数据回传给媒体(即腾讯服务器),同时也通过 S2S 拉取媒体中相关的广告数据
5. 广告归因,即匹配广告信息、用户信息、转化数据,从而确定这个转化的具体来源,通常情况下,媒体侧和广告主侧都会进行广告归因,两者使用的归因逻辑可能不同
6. 媒体利用归因数据优化其广告投放系统(说白了,就是推荐系统),而广告主侧利用归因数据优化其投放流程
虽然媒体无法通过 tracking id 的形式贯穿整个的广告流程,但可以借助用户设备的唯一 id 将断层关联上了。
在 IOS14 开始,苹果系统推崇用户隐私,如果用户不授权,那么在 IOS 上的应用就无法拿到设备的唯一标识(即IDFA),这给广告归因带来挺大的影响,后续会聊此事。
此外,另外一个需要关注的点是,国内大的广告主都会有自己的广告归因平台,即媒体会进行一次归因,广告主也会进行一次归因,两者使用归因模型可能是不同的,而归因模型的不同就会产生完全不同的归因数据,后续做归因数据分析时需要注意。
广告归因有不同的方式,业内总结了常见的归因方式,我们将这些方式称为归因模型,这些归因模型可以分为规则类归因模型和算法类归因模型。
这个是国内常用的模式,至于海外有没有这样搞,不太清楚。
所谓渠道包归因就是将一个游戏 APP 拆分成不同的渠道包去投不同的媒体,甚至可以细分到每个媒体下的每个广告广告都投放不同的渠道包。
这里有一些概念,简单理一下:
公司开发了一个游戏 APP,在 Android 生态下,游戏 APP 的安装可以通过多种不同的方式进行安装,而在 IOS 生态下,没有越狱的用户只能通过 App Store 安装。
因为 Android 生态的开发性,我们可以将一个游戏的 APP 打成多个不同的渠道包,这些渠道包的内容其实还是游戏本身,只是里面的配置信息会有所不同,比如腾讯视频渠道用一个渠道包 id,QQ 音乐渠道有另一个渠道包 id,这样用户安装游戏 APP 时,不同渠道包虽然还是同一个游戏,但会回传不同的渠道包 id,通过简单的匹配,广告主就知道用户来自哪个广告渠道了。
这种方式只能在 Android 生态上玩,因为 IOS 多数时候只能通过 App Store 下载应用,而苹果对于相同内容的游戏 APP 是会拒绝上架的,当然,我们可以通过一些手段去过苹果机审,但对于广告投放这种场景下并不适用。
简单而言,在 Android 生态下,一个 APP 可以拆分成无限个渠道包,拆分渠道包的过程称为分包,很多媒体平台支持一个广告投放一个分包,比如你在广点通上投放 1000 个广告,那么就可以投 1000 个不同的渠道包,从而获得最细粒度(广告级别)的效果数据,下图为腾讯广告平台支持不同渠道包的请求参数。
广点通渠道包参数渠道包归因的方式虽然很精确,但却忽略了助攻广告的影响,比如用户在渠道 A 看见了广告,本来想下载的,因赶地铁或其他原因,没有下载,下次看见渠道 B 的广告时,便直接下载了,但我们知道,渠道 A 发挥了很好的助攻作用,但计算效果时,忽略了这层影响。
假设用户在 A、B、C、D、E 多个渠道都触达了广告并最终产生了转化,此时Last-Click归因会将这个用户的转化会算到最后触达的渠道上,直观如下图:
在使用最后触达归因时,通常会加上时间窗口的逻辑,比如最后一次触达在 7 天前,我们就偏向于认为这个转化是自然流量过来的,例如,用户主动去应用商店下载之类的。
与最后触达归因相反,首次触达归因会将转化效果都算给用户首个触达的广告,如下图所示:
企业在推广新品牌时,希望给能够带来大量新用户的广告渠道更大的权重,此时就适合使用首次触达归因的方式进行广告效果的归因,但因为这种归因模型割裂了与最终转化的关联,所以在很多情况下并不太适用。
如果用户在多个渠道都触达了广告,那么在线性归因的逻辑下,每个渠道都有功劳,直观如图:
线性归因会平等对待转化路径上的所有渠道,弱化了渠道间的差异,但这种差异其实很重要,同一个用户在不同渠道下的价值是不同的,而且这种方式也容易产生作弊行为。
当我们比较看重线索和最终转化时,可以使用基本位置归因,如下图:
基本位置归因也称 U 型归因,它结合了 First-Click 和 Last-Click 方式,一般会给首次和最后一次的渠道分配 40% 的权重,给中间件渠道 20% 的权重,这 20% 的权重,也按 U 型的方式分布。
用户早期看见的广告其权重随时间推移逐渐降低,如下图:
时间衰弱归因模型适合投放转化路径短的广告类型,如果转化路径过长,对早期曝光的广告的渠道不太友好,特别是引流类型广告。
规则类的归因模型强依赖于业务经验,对不同渠道的权重设置也比较武断,很多技术同学对广告归因问题做了相关研究,并提出了一些模型。
Google 在 2013 年推出了 DDA 模型(Google Ads data-driven attribution methodology)时介绍了一些经典算法:
Shaple Value(夏普里值)
Survial Analysis(生存分析)
Markov Chain(马尔科夫链)
Harsanyi Dividend
Path Analysis(通径分析)
这些算法要写话内容比较多,后面单独开文讨论, 我自己也没咋用过o(╥﹏╥)o ,需要花点时间学习并内化,目前我工作中接触的,多数还是渠道归因和 Last-Click 归因。
任何归因模型都不是完美的,都有一些倾向性,如果过于纠结,系统就无法落地,举几个例子体会体会:
用户上班时看了几个广告后,被转化
用户上班时看了几个广告,下班时,主动搜索下载
用户上班时看了几个广告,下班时,主动搜索,但搜索到了广告,并通过该广告下载
用户看了一个广告,无感,被同事推荐,去下载
如果深入思考上述场景,就很会纠结归因的逻辑,最终导致难以落地。
直白点说,广告归因就是在算用户转化的效果归给谁,即广告主给谁算钱,离钱那么近,就必然会有各种作弊行为。
Facebook 广告联盟(Facebook Audience Network)使用广告曝光来作为归因逻辑,用户被广告曝光后,无论用户后续是否看过其他广告,是否从其他广告中点击下载应用,还是主动去 Google Play 或 App Store 中主动搜索下载,Facebook 都要收取广告费用,即只要曝光过,无论用户从哪个渠道转化,都需要收费,虽然霸道,但 Facebook 流量很大,你不购买,大有购买的人。
显然,通过如此霸道的归因逻辑,Facebook 的广告变现效率会比其他平台高,两个原因:
1. 将其他广告流量产生的转化算了自己一份
2. 将应用自然流量带来的转化算了自己一份
很多人嗅到了其中的逻辑漏洞,即只要将广告曝光给用户就能获得收益,只要有足够大的曝光量,就有巨额的收益,很快很多工具类软件便出现在海外各大应用商店并通过大量投放获得应用商店里的流量,最后再通过 Facebook 广告曝光的归因逻辑赚钱,如果光看这些应用内转化的ROI,会很迷惑为啥要投那么多钱给应用商店获取流量。
工具类应用会有大量的流量,再加上主动投放,这类应用迅速拥有大量用户,从而产生大量的广告曝光,加上当时 Facebook 新账号上线的广告在初期 ECPM 很高,从而可以快速将 ROI 打正。
Facebook 当然知道这种情况,但当时 Facebook 广告联盟需要跟 Google Admob 争底盘,就睁一只眼闭一只眼了。
Last-Click 主要通过监听应用安装,实现广告的抢归因,这种方式适合于 Android 系统。
在 Android 系统中,应用安装会在系统中发送安装广播,在 Android 8.0 之前,应用开发者只需要在 manifast.xml 中添加 android.intent.action.PACKAGE_ADDED 权限便可以监听 Android 系统中所有应用的安装广播。
作弊者监听应用安装并在应用安装时获取安装应用包名,然后再通过广告联盟 SDK 获取广告信息,最后使用虚拟点击的方式将广告信息、用户设备信息等回传给归因平台就完成了抢归因的全过程。
在 Android 8.0 之后,开发者无法通过 manifast.xml 实现权限的静态注册,只能通过代码动态注册,而动态注册的前提是应用在运行状态,作弊者会通过各种保活手段让应用一直在运行状态,从而实现对其他应用安装的监控,再通过相同的方式,将用户设备信息、广告信息回传给归因平台,实现抢归因。
我所知道的一些 Android 保活手段:
MP3 无声文件:音乐播放器在后台播放音乐是不会被系统杀进程的。
一像素 activity:保留一个像素的活动窗口。
设置壁纸保活:启动时,弹出设壁纸页面,调用系统的方法设置壁纸,设置后,除非通过设置强制关闭,否则应用一直活跃。
APP 矩阵拉活:加入产品矩阵,矩阵中有一个应用活着,就能拉起矩阵中任意一个应用。
但要实现抢归因作弊,需要 3 大前提:
1. 需要有广告资源,当用户安装某应用时,可以通过应用包名获取该应用相关的广告,然后再对广告进行模拟点击
2. 监控应用要有较大的用户量,你可以通过分利 + SDK (让其他开发者集成SDK便可以赚钱)的方式来扩大应用量,从而增大覆盖量
3. 可以获得监听应用安装的权限
渠道归因是比较稳的方式,一个广告对应一个渠道包,但国内 Android 生态多样化,很多 Android 手机都会以系统安全为由拦截用户从第三方平台下载应用并将用户引导到自己官方的应用商城,让用户通过广告应用商城下载应用。
比如你在微信里点击了广告,在微信广告的落地页中下载了应用,但在应用安装时,华为系统就会弹出提示,说有安全风险,建议从华为应用商城下载,从而让用户下载带来华为渠道id的应用包,广告主算转化时,就会算给华为,而不是发挥了广告作用的微信。
通过这种方式,国内 Android 系统厂商截获了大量从其他广告渠道过来的流量。
广告归因还有很多可以讨论的,比如助攻广告的影响、算法型归因模型以及各大广告平台政策变化带来的影响,本人后续会继续学习并归来分享。
本文参考:
深度解析广告归因模型,从此看懂渠道转化 (https://www.sparkxmarketing.com/?p=18376)
归因模型和回顾时间范围 (https://experienceleague.adobe.com/docs/analytics-platform/using/cja-workspace/attribution/models.html)
互联网广告的归因分析 (https://mp.weixin.qq.com/s/ehkMhzTfaPUhABIytdXytw)
不懂归因,也许你广告还没入门 (https://mp.weixin.qq.com/s/LuNhQ2j36fW0iwH4tofdTA)