背景

W2A(Web to App)的第一批实践者可以追溯到2021年,当时iOS端和安卓端分别发生了2件事情。

  • iOS端:2021年4月iOS开始强推ATT,14.5+的客户可以拒绝授权IDFA,导致广告无法追踪到设备层级。

  • Andorid端:2021年8月Facebook宣布从10月底开始停止AMM计划,广告无法追踪到设备层级(见文章《Facebook停止AMM之后(作者剪辑版)》)(不过后来没多久FB又推了GPIR来解决设备层级的追踪,这是后话)。

为了解决追踪的问题,国内第一批先驱开始尝试W2A(设备指纹归因+ConversionAPI回传Pixel当时想到这个方案的那批人真的是天才),我也在21年那篇AMM的文章里文章里分享了这个思路。后来这篇文章被某MMP投诉删稿了(看出海小黑板的群没有哪家MMP的人就知道是哪家了),我在重新编辑的文章里也顺便把这段去掉了(觉得这个技术太屌了不想share)

昨天文章最后一段内容我删了,没原因。

Emily郑倩朵,公众号:出海小黑板Facebook停止AMM之后(作者剪辑版)

所以W2A其实最早是应用于在架包的,主要是解决设备级的归因和事件回传的问题,所以那会儿W2A是Web2App。目前iOS端大家普遍躺平了选择用SKAN(当然也有一些头部团队还在使用W2A),Android端FB在21年底推出的GPIR方案可以很好的解决设备层级的追踪。因此W2A在当下几乎沦为了无法上架的Android产品的推广方案,所以现在的W2A更多是指Web2Apk。

所以下面的内容主要围绕着Web2Apk展开讲。

- 产品因为没有相关的License无法上架(比如具有提现功能的游戏App,需要牌照的贷款App),需要用户下载Apk(Android)/通过企业签或TestFlight(iOS)安装,不可以直接投App下载广告,只能通过一个Web做中转。 

- AB面产品,商店描述没有100%描述产品功能(比如功能是B,描述是A),需要一个Web来真实地向用去介绍产品和服务,如果直接投App下载广告会出现广告描述与商店描述不一致的问题导致死广告。

- iOS 14.5+,虽然可以直接投App下载广告,但是因为SKAN的原因广告优化不好。

Emily郑倩朵,公众号:出海小黑板Web-App的归因和优化逻辑


解决归因的问题

解决归因的问题方案比较多:

  1. 设备指纹归因(MMP都支持)

  2. UTM归因(可以跳过MMP,无需MMP即可实现归因)

  3. Onelink(CustomLink)归因,也就是MMP的自定义链接

这几个方案我在21年的文章《Web-App的归因逻辑》里写的很清楚,不过现在的情况是大家都在用第一种方案,也就是目前各大MMP都在给大家推的。当然你不想买MMP的话用第二种可以行。

归因的问题是解决识别客户从哪里来的问题,是看了广告点过来的客户,还是自然流量客户。

因为目前主流用的都是设备指纹归因,那我就再细讲一下设备指纹归因的逻辑。

设备指纹归因本质上来讲是IP+UserAgent的匹配归因。

我们假设一个设备点击了MMP的链接,MMP会记录

  • IP:设备的IP,比如11.22.33.44

  • UserAgent:用户的系统版本/手机品牌/浏览器信息,比如Dalvik/2.1.0 (Linux; U; Android 10; ELE-L29 Build/HUAWEIELE-L29)

  • 以及这个点击对应的广告信息

然后当一个激活发生的时候,MMP同样会记录IP和UserAgent,然后会去库里对比点击记录,如果能匹配上IP+UserAgent,则认为这个激活是对应的广告带来的。

所以设想以下几个场景:

  1. 点击广告,马上下载&激活:正确归因,匹配上(常见)

  2. 点击广告,马上下载,换了网络环境后激活:无法归因,IP不一致(常见)

  3. 点击广告,马上下载,系统升级后激活:无法归因,UserAgent不一致(少见)

  4. 设备A点击广告,设备B下载激活,AB设备同规格同网络:B会被归因(少见)

所以通过设备指纹能正规归因的比例不是100%,按照经验应该是60%-80%之间可以被归因上。也就是约有20%-40%的安装确实是点击广告来的,但是因为IP更换的原因会被误标记为自然流量。


解决事件回传的问题 —— 非Adjust方案

上面写的这些解决了“客户从哪里来”的问题。但是为了更精准地投放,我们还希望告诉广告平台(这里先特指Facebook)我想要哪些客户,也就是我们要回传Event来帮助广告平台做AEO/VO。

在投App的时候,我们可以通过S2S的方式把Event回传给MMP,再由MMP回传给Facebook,这样我们在投广告的时候就可以选择想要的事件进行优化。 

但是我们现在投的是Web,投Web的时候选择的是Pixel,不是Event!!!我们回顾一下整个流程,点击广告 - 跳转到Web - 点击下载APK - 激活APK - APP内事件。蓝色字体是在Web广告的流程内,红色字体已经跳离Web广告流程了。因此把AF的事件回传给Facebook来投放是不可行的,请牢记这一点(给很多小白甲方解释过,但是他们理解不了)。

我们假设你选择的是AF,那么你需要:

  • 通过AF的S2S接口把App Event回传给AF,这样子优化师在AF上可以看到事件

  • 通过Facebook的Conversion API把App Event伪装成Pixel回传给Facebook,这样子优化师可以再Facebook上看到事件,并且广告可以按照这个Pixel去优化。

  • 上面两步各论各的,互不相关。只回传事件给AF会导致只能看Performace,不能进行事件优化。

  • Facebook的Pixel只能自己通过ConversionAPI回传,不能通过AF回传。

  • 接口文档:https://developers.facebook.com/docs/marketing-api/conversions-api/using-the-api

The Conversions API now supports web, app, offline, and business messaging events. 


Web, app, and physical store events shared using the Conversions API require specific parameters. By using the Conversions API, you agree that the action_source parameter is accurate to the best of your knowledge.

在使用Conversion API进行回传的时候,请确保 action_source = "app".

To send new events, make a POST request to this API's /events edge from this path: https://graph.facebook.com/{API_VERSION}/{PIXEL_ID}/events?access_token={TOKEN}. When you post to this edge, Facebook creates new server events.

在请求的URL里加上Pixel_ID,然后把客户和事件的信息加到Body里

curl -X POST \  -F 'data=[       {         "event_name": "Purchase",         "event_time": 1712508747,         "user_data": {           "em": [             "309a0a5c3e211326ae75ca18196d301a9bdbd1a882a4d2569511033da23f0abd"           ],           "ph": [             "254aa248acb47dd654ca3ea53f48c2c26d641d23d7e2e93a1ec56258df7674c4",             "6f4fcb9deaeadc8f9746ae76d97ce1239e98b404efe5da3ee0b7149740f89ad6"           ],           "client_ip_address": "123.123.123.123",           "client_user_agent": "$CLIENT_USER_AGENT",           "fbc": "fb.1.1554763741205.AbCdEfGhIjKlMnOpQrStUvWxYz1234567890",           "fbp": ""         },         "custom_data": {           "currency": "usd",           "value": 123.45,           "contents": [             {               "id": "firstPurchase",               "quantity": 1,             }           ]         },
"action_source": "app" } ]' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v19.0/<PIXEL_ID>/events

上面的代码里几个比较核心的:

  • em:hash的email,有就给没有就算了,提供给可以提高匹配率

  • ph:hash的phone number,有就给没有就算了,提供可以提高匹配率

  • ip:给客户激活app那一次的(不要给最新的)

  • user_agent:给客户激活app那一次的(不要给最新的)

  • fbc:fbclid,广告的唯一点击识别码,客户在点击Facebook广告时候生成,客户在注册的时候绑定,不要改

  • fbp:Web2Apk场景下没有,可以忽略

其中fbc ip user_agent这三个是最核心的参数,一个事件能不能匹配上某一次广告点击主要就靠这三个参数。


解决事件回传的问题 —— Adjust方案

如果你用的是Adjust,那么恭喜你Adjust可以帮你把事件回传给Facebook,也就是你只需要把Event通过S2S报给Adjust就可以,上面讲的Conversion API那一步Adjust会帮你做。这也是为什么现在W2A的用户都会选择Adjust。

流程可以简化为(下面流程摘自Adjust的文档):

  1. 1在Adjust后台--Campaign Lab--广告渠道--设置Facebook Web渠道(生成跟踪链接+设置给FB web的数据回传+打开概率模型)

  2. 在Facebook后台填写落地页URL,比如https://mywebsite.com/123?p0=adjustTrackerToken&p1={{campaign.name}}&p2={{campaign.id}}&p3={{adset.name}}&p4={{adset.id}}&p5={{ad.name}}&p6={{ad.id}}

  3. 用户点击Facebook 的 web 广告后,Facebook 重定向用户到落地页并给链接中的相关宏赋值

  4. 用户跳转到广告主网页,链接里有相关的值,例如:https://mywebsite.com/123?p0=adjustTrackerToken&p1=campaignABC&p2=campaignID123&p3=adsetABC&p4=adsetId123&p5=adNameABC&p6=adId123&fbclid=123&fbpid=456 (fbpid存在获取不到的情况,没有影响),fbclid是广告点击id,fbpid是pixelid

  5. 广告主技术把落地页链接里值透传给Adjust跟踪链接,例如https://app.adjust.com/adjustTrackerToken?campaign=campaignABC%20%28campaignID123%29&adgroup=adsetABC%20%28adsetId123%29&creative=adNameABC%20%28adId123%29&fbclid=123&fbpid=456(如没有接FB Pixel获取不到fbpid,请在Adjust跟踪链接里直接去掉&fbpid=xxxxxx,不要自己模拟fbpid或传&fbpid=null或传&fbpid=undefined等等;如要下载APK,还需要在链接中加上&redirect=encode后的APK下载地址)。如果有多个FB pixel id(一般是多个代理),需要在跟踪链接里加上&fb_pixel_id=对应的id&fb_access_token=对应的token,不是必须,产品有多个FB pixel id/access token才需要加,不加默认按照后台填写的来。一条链接一个FB pixel id/token,请勿一条链接传多个FB pixel id/token。

  6. 用户点击已做好赋值的Adjust跟踪链接,Adjust 统计点击并把用户引导到商店或APK下载

  7. Adjust通过概率模型把安装归因给Facebook Web

  8. 用户触发事件后Adjust 把相关数据回传给 Facebook Web


总体而言Adjust的方案减少了研发的开发量(很多研发弄不明白Conversion API),增加了优化师的工作量。


解决事件回传的问题 —— 老何方案

老何的方案算是一个比较偏门的方案。你只需要准备好APK,并且在AF里把Event回传给他的代理,然后由他来帮你解决事件Web开发+事件回传。你大概理解为他自己写了一套基于AF的事件回传逻辑。Web2app投放现状+总结更新 [第5轮]不过各位老板请留意一下老何不接蔬菜类产品。


Google?

归因逻辑一致。回传需要自己通过S2S回传,Adjust帮不上忙,老何也帮不上忙。建议先折腾Facebook,玩明白了再去研究Google的事件回传。

接口文档:https://developers.google.com/google-ads/api/docs/conversions/upload-clicks

免责声明

作为一个略懂投放的风控,上面的内容都是我从文档中总结而来。本人没有任何实际的W2A落地经验,不保证按照我上面的方法一定能实施成功,只是帮大家梳理清楚W2A的逻辑和思路。

蟹蟹。


as promised,W2A的技术方案奉上。后面的文章会继续围绕风控展开。

喜欢看投放文章的朋友请移步如下公众号:

老何的公众号:

Haohan的公众号:

小魏的公众号:


如果你看到这了,考虑下点赞 收藏 在看三连?


​​​​


点赞(7) 打赏

评论列表 共有 0 条评论

暂无评论

服务号

订阅号

备注【拉群】

商务洽谈

微信联系站长

发表
评论
立即
投稿
返回
顶部