在工作中,我们尝试通过Firebase门户创建动态链接时使用可选的广告系列跟踪UTM参数。
动态链接工作正常,据我从所有官方文档了解,在创建动态链接时,仅在最后一个可选步骤中添加UTM值会导致这些值与{{1 }}事件。
但是,当我们查看dynamic_link_app_open
事件的事件或转化标签时,看不到任何归因值。我们看到事件已发送,但我们只是没有获得广告系列归因值,因此我们不知道是什么广告系列导致了这些事件和转化。
确实缺少此特定功能的文档,这使我们的营销部门感到沮丧,而最终该部门最终还是由开发人员(即我)来完成的。
我已经开发出一种解决方法,但这是一个hack:
在Firebase门户上创建动态链接时,我将dynamic_link_app_open
,utm_source
和utm_medium
查询字符串直接放入深层链接中(出于安全原因,这不是我们的实际深层链接) ,但您知道了)
utm_campaign
然后在客户端中,我将代码通过Firebase动态链接SDK传递给动态链接后,将代码从最终的深层链接中剔除。借助这三点信息,我可以通过https://www.example.com?utm_source=Test&utm_medium=Test&utm_campaign=Test
SDK将app_open
事件发送到Firebase分析,如下所示:
FirebaseAnalytics
虽然可行,但却引出了一个问题;创建动态链接时,可选的广告系列跟踪部分有什么意义?大概放置FirebaseDynamicLinks.getInstance()
.getDynamicLink(getIntent())
.addOnSuccessListener(this, pendingDynamicLinkData -> {
if (pendingDynamicLinkData != null) {
Uri optionalDynamicDeepLink = pendingDynamicLinkData.getLink();
if (optionalDynamicDeepLink != null) {
List<String> utmSource = optionalDynamicDeepLink.getQueryParameters(UTM_SOURCE);
List<String> utmCampaign = optionalDynamicDeepLink.getQueryParameters(UTM_CAMPAIGN);
List<String> utmMedium = optionalDynamicDeepLink.getQueryParameters(UTM_MEDIUM);
if (!utmSource.isEmpty() && !utmCampaign.isEmpty() && !utmMedium.isEmpty()) {
String utmSourceParam = String.valueOf(utmSource);
String utmCampaignParam = String.valueOf(utmCampaign);
String utmMediumParam = String.valueOf(utmMedium);
Bundle params = new Bundle();
params.putString(FirebaseAnalytics.Param.SOURCE, utmSourceParam);
params.putString(FirebaseAnalytics.Param.CAMPAIGN, utmCampaignParam);
params.putString(FirebaseAnalytics.Param.MEDIUM, utmMediumParam);
FirebaseAnalytics.getInstance(this).logEvent(FirebaseAnalytics.Event.CAMPAIGN_DETAILS, params);
FirebaseAnalytics.getInstance(this).logEvent(FirebaseAnalytics.Event.APP_OPEN, params);
}
String dynamicDeepLink = optionalDynamicDeepLink.toString();
if (!handleDeepLink(dynamicDeepLink)) {
Generic.openLinkInCustomTabs(getApplicationContext(), deepLinkOptional);
}
} else {
if (!handleDeepLink(deepLinkOptional)) {
handleIntent(intent);
}
}
} else {
if (!handleDeepLink(deepLinkOptional)) {
handleIntent(intent);
}
}
}).addOnFailureListener(this, e -> {
if (!handleDeepLink(deepLinkOptional)) {
Generic.openLinkInCustomTabs(getApplicationContext(), deepLinkOptional);
}
});
,utm_source
和utm_medium
可以使Firebase用上述广告系列跟踪数据自动神奇地填充utm_campaign
事件,但事实并非如此。
例如,这是我设置可选的最后一步的方法:
然后,我多次跟踪动态链接到应用程序中,并要求测试人员进行相同的操作。我已经等待了36个多小时(因为我知道这些事件可能需要一些时间才能传播到云中),并且我们看到dynamic_link_app_open
个事件逐渐增多,这表明已为我们的动态链接记录了一个事件,但是当我们对该事件进行了深入研究,未收集到任何UTM信息。
firebase的此功能是否已损坏?
我可以从Firebase官方文档(https://firebase.google.com/docs/dynamic-links/analytics)中看到这一点:
这表示在Firebase上不支持从动态链接点击中收集UTM数据,但在Google Analytics(分析)中受支持。这一点都不令人困惑(/ sarcasm)。 因此,大概我们的某些数据(即与广告系列跟踪有关的数据)是由Google Analytics(分析)收集/托管的吗?
为进一步混淆,firebase动态链接的官方文档规定:
“如果将动态链接事件标记为转化,则可以在“归因”页面上查看动态链接的效果。”
然后显示甚至与现实都不匹配的Firebase门户用户界面的图像:
我已经在firebase控制台上搜索并搜索了一个归因标签,但是没有一个...这些文档足以使开发人员发疯。
答案 0 :(得分:2)
我能理解您的沮丧,我们几个月来都遇到了同样的问题。我也认为这不应该是它的工作原理,你需要手动拿起UTM参数的方式。我没有找到一个较旧的屏幕截图(从2019),其显示动态链接应该做到这一点对自己: [
这第一部分仍然有效,但源/中/运动从来没有使之成为收购/归因报告。他们确实做了,在过去的:
(在屏幕截图的例子是另一种动态链接比在第一屏幕截图,对不起)
在与谷歌谈判,它听起来好像他们确实意识到这是一个错误,但提供对是否或何时这将是固定不具体。
所以我只能确认你不是一个人与你的问题...
答案 1 :(得分:0)
根据this answer:
您在UI中选择的UTM参数是移动设备的参数 跟踪。如果您要将UTM参数传递给您的“后备” 网站,则需要将其添加到后备地址本身。
答案 2 :(得分:0)